Given the following C code and unoptimized assembly code, your task is to generate highly optimized x86-64 assembly code.
C Code:

```c
// AOJ 2275: Fox Number
// 2017.12.11 bal4u@uu

#include <stdio.h>
#include <string.h>
#include <math.h>

#define MAX  707106			// sqrt(10^12/2)
char tbl[MAX+1];

int sz;						// max sz = 57084, prime[0] = 2, prime[57083] = 707099
int prime[57100] = {  		// prime[146] = 853, prime[147] = 857
  2, 3,  5,  7, 11, 13, 17, 19, 23, 29, 
 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 
 73, 79, 83, 89, 97,101,103,107,109,113, 
127,131,137,139,149,151,157,163,167,173,
179,181,191,193,197,199,211,223,227,229, 
233,239,241,251,257,263,269,271,277,281, 
283,293,307,311,313,317,331,337,347,349, 
353,359,367,373,379,383,389,397,401,409, 
419,421,431,433,439,443,449,457,461,463, 
467,479,487,491,499,503,509,521,523,541, 
547,557,563,569,571,577,587,593,599,601, 
607,613,617,619,631,641,643,647,653,659, 
661,673,677,683,691,701,709,719,727,733, 
739,743,751,757,761,769,773,787,797,809, 
811,821,823,827,829,839,853 };

int sqp[147] = {				// squre of prime: sqp[i] = prime[i] * prime[i]
  4, 9,25,49,121,169,289,361,529,841,961,
1369,1681,1849,2209,2809,3481,3721,4489,5041,
5329,6241,6889,7921,9409,10201,10609,11449,11881,12769,
16129,17161,18769,19321,22201,22801,24649,26569,27889,29929,
32041,32761,36481,37249,38809,39601,44521,49729,51529,52441,54289,
57121,58081,63001,66049,69169,72361,73441,76729,78961,80089,85849,
94249,96721,97969,100489,109561,113569,120409,121801,124609,128881,
134689,139129,143641,146689,151321,157609,160801,167281,175561,177241,
185761,187489,192721,196249,201601,208849,212521,214369,218089,229441,
237169,241081,249001,253009,259081,271441,273529,292681,299209,310249,
316969,323761,326041,332929,344569,351649,358801,361201,368449,375769,
380689,383161,398161,410881,413449,418609,426409,434281,436921,452929,
458329,466489,477481,491401,502681,516961,528529,537289,546121,552049,
564001,573049,579121,591361,597529,619369,635209,654481,657721,674041,
677329,683929,687241,703921,727609 };

void sieve()
{
	int i, j, k;

	for (i = 1; i < 147; i++) {
		k = prime[i];
		for (j = sqp[i]; j < MAX; j += k) tbl[j] = 1;
	}
	for (sz = 146, i = 853; i <= MAX; i += 2) if (!tbl[i]) prime[sz++] = i;
//	printf("sz %d, prime[%d]=%d\n", sz, sz-1, prime[sz-1]);
//	        sz 57084, prime[57083]=707099
}

int base[1000002];
int idx [1000002];
long long pp[41];		// 2^40 = 1099511627776 >= 10^12

int bsch(int x)
{
	int m, l = 0, r = sz;

    while (l < r) {
        m = (l + r) >> 1;
		if (prime[m] == x) return m;
        if (prime[m] < x) l = m + 1; else r = m;
    }
	return l-1;
}

int main()
{
	int i, k, p, ans;
	long long A, B, a, b, j, ll, rr;

	sieve();

	scanf("%lld%lld", &A, &B);
	a = A-B, b = A+B;
	if (b <= 1) { puts("0"); return 0; }
	if (a <= 1) a = 2;

	sz = bsch((int)sqrt((double)(b >> 1)));

	memset(idx, 1, sizeof(idx));
	for (i = 0; i <= sz; i++) {
		p = prime[i];
		for (k = 1, j = p; j <= b; j *= p) pp[k++] = j;
		while (--k) {
			j = pp[k], ll = j*(1+(a-1)/j), rr = j*(b/j);
			for (; ll <= rr; ll += j) {
				int x = (int)(ll-a);
				if (!idx[x] || base[x] == p) continue;
				if (idx[x] < k) idx[x] = 0;
				else base[x] = p, idx[x] = k;
			}
		}
	}

	ans = 0, i = (int)(b-a+1); while (i--) if (idx[i]) ans++;
	printf("%d\n", ans);
	return 0;
}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	tbl
	.bss
	.align 32
	.type	tbl, @object
	.size	tbl, 707107
tbl:
	.zero	707107
	.globl	sz
	.align 4
	.type	sz, @object
	.size	sz, 4
sz:
	.zero	4
	.globl	prime
	.data
	.align 32
	.type	prime, @object
	.size	prime, 228400
prime:
	.long	2
	.long	3
	.long	5
	.long	7
	.long	11
	.long	13
	.long	17
	.long	19
	.long	23
	.long	29
	.long	31
	.long	37
	.long	41
	.long	43
	.long	47
	.long	53
	.long	59
	.long	61
	.long	67
	.long	71
	.long	73
	.long	79
	.long	83
	.long	89
	.long	97
	.long	101
	.long	103
	.long	107
	.long	109
	.long	113
	.long	127
	.long	131
	.long	137
	.long	139
	.long	149
	.long	151
	.long	157
	.long	163
	.long	167
	.long	173
	.long	179
	.long	181
	.long	191
	.long	193
	.long	197
	.long	199
	.long	211
	.long	223
	.long	227
	.long	229
	.long	233
	.long	239
	.long	241
	.long	251
	.long	257
	.long	263
	.long	269
	.long	271
	.long	277
	.long	281
	.long	283
	.long	293
	.long	307
	.long	311
	.long	313
	.long	317
	.long	331
	.long	337
	.long	347
	.long	349
	.long	353
	.long	359
	.long	367
	.long	373
	.long	379
	.long	383
	.long	389
	.long	397
	.long	401
	.long	409
	.long	419
	.long	421
	.long	431
	.long	433
	.long	439
	.long	443
	.long	449
	.long	457
	.long	461
	.long	463
	.long	467
	.long	479
	.long	487
	.long	491
	.long	499
	.long	503
	.long	509
	.long	521
	.long	523
	.long	541
	.long	547
	.long	557
	.long	563
	.long	569
	.long	571
	.long	577
	.long	587
	.long	593
	.long	599
	.long	601
	.long	607
	.long	613
	.long	617
	.long	619
	.long	631
	.long	641
	.long	643
	.long	647
	.long	653
	.long	659
	.long	661
	.long	673
	.long	677
	.long	683
	.long	691
	.long	701
	.long	709
	.long	719
	.long	727
	.long	733
	.long	739
	.long	743
	.long	751
	.long	757
	.long	761
	.long	769
	.long	773
	.long	787
	.long	797
	.long	809
	.long	811
	.long	821
	.long	823
	.long	827
	.long	829
	.long	839
	.long	853
	.zero	227812
	.globl	sqp
	.align 32
	.type	sqp, @object
	.size	sqp, 588
sqp:
	.long	4
	.long	9
	.long	25
	.long	49
	.long	121
	.long	169
	.long	289
	.long	361
	.long	529
	.long	841
	.long	961
	.long	1369
	.long	1681
	.long	1849
	.long	2209
	.long	2809
	.long	3481
	.long	3721
	.long	4489
	.long	5041
	.long	5329
	.long	6241
	.long	6889
	.long	7921
	.long	9409
	.long	10201
	.long	10609
	.long	11449
	.long	11881
	.long	12769
	.long	16129
	.long	17161
	.long	18769
	.long	19321
	.long	22201
	.long	22801
	.long	24649
	.long	26569
	.long	27889
	.long	29929
	.long	32041
	.long	32761
	.long	36481
	.long	37249
	.long	38809
	.long	39601
	.long	44521
	.long	49729
	.long	51529
	.long	52441
	.long	54289
	.long	57121
	.long	58081
	.long	63001
	.long	66049
	.long	69169
	.long	72361
	.long	73441
	.long	76729
	.long	78961
	.long	80089
	.long	85849
	.long	94249
	.long	96721
	.long	97969
	.long	100489
	.long	109561
	.long	113569
	.long	120409
	.long	121801
	.long	124609
	.long	128881
	.long	134689
	.long	139129
	.long	143641
	.long	146689
	.long	151321
	.long	157609
	.long	160801
	.long	167281
	.long	175561
	.long	177241
	.long	185761
	.long	187489
	.long	192721
	.long	196249
	.long	201601
	.long	208849
	.long	212521
	.long	214369
	.long	218089
	.long	229441
	.long	237169
	.long	241081
	.long	249001
	.long	253009
	.long	259081
	.long	271441
	.long	273529
	.long	292681
	.long	299209
	.long	310249
	.long	316969
	.long	323761
	.long	326041
	.long	332929
	.long	344569
	.long	351649
	.long	358801
	.long	361201
	.long	368449
	.long	375769
	.long	380689
	.long	383161
	.long	398161
	.long	410881
	.long	413449
	.long	418609
	.long	426409
	.long	434281
	.long	436921
	.long	452929
	.long	458329
	.long	466489
	.long	477481
	.long	491401
	.long	502681
	.long	516961
	.long	528529
	.long	537289
	.long	546121
	.long	552049
	.long	564001
	.long	573049
	.long	579121
	.long	591361
	.long	597529
	.long	619369
	.long	635209
	.long	654481
	.long	657721
	.long	674041
	.long	677329
	.long	683929
	.long	687241
	.long	703921
	.long	727609
	.text
	.globl	sieve
	.type	sieve, @function
sieve:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	$1, -12(%rbp)
	jmp	.L2
.L5:
	movl	-12(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	prime(%rip), %rax
	movl	(%rdx,%rax), %eax
	movl	%eax, -4(%rbp)
	movl	-12(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	sqp(%rip), %rax
	movl	(%rdx,%rax), %eax
	movl	%eax, -8(%rbp)
	jmp	.L3
.L4:
	movl	-8(%rbp), %eax
	cltq
	leaq	tbl(%rip), %rdx
	movb	$1, (%rax,%rdx)
	movl	-4(%rbp), %eax
	addl	%eax, -8(%rbp)
.L3:
	cmpl	$707105, -8(%rbp)
	jle	.L4
	addl	$1, -12(%rbp)
.L2:
	cmpl	$146, -12(%rbp)
	jle	.L5
	movl	$146, sz(%rip)
	movl	$853, -12(%rbp)
	jmp	.L6
.L8:
	movl	-12(%rbp), %eax
	cltq
	leaq	tbl(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	jne	.L7
	movl	sz(%rip), %eax
	leal	1(%rax), %edx
	movl	%edx, sz(%rip)
	cltq
	leaq	0(,%rax,4), %rcx
	leaq	prime(%rip), %rdx
	movl	-12(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
.L7:
	addl	$2, -12(%rbp)
.L6:
	cmpl	$707106, -12(%rbp)
	jle	.L8
	nop
	nop
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	sieve, .-sieve
	.globl	base
	.bss
	.align 32
	.type	base, @object
	.size	base, 4000008
base:
	.zero	4000008
	.globl	idx
	.align 32
	.type	idx, @object
	.size	idx, 4000008
idx:
	.zero	4000008
	.globl	pp
	.align 32
	.type	pp, @object
	.size	pp, 328
pp:
	.zero	328
	.text
	.globl	bsch
	.type	bsch, @function
bsch:
.LFB1:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	%edi, -20(%rbp)
	movl	$0, -12(%rbp)
	movl	sz(%rip), %eax
	movl	%eax, -8(%rbp)
	jmp	.L10
.L14:
	movl	-12(%rbp), %edx
	movl	-8(%rbp), %eax
	addl	%edx, %eax
	sarl	%eax
	movl	%eax, -4(%rbp)
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	prime(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	%eax, -20(%rbp)
	jne	.L11
	movl	-4(%rbp), %eax
	jmp	.L12
.L11:
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	prime(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	%eax, -20(%rbp)
	jle	.L13
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, -12(%rbp)
	jmp	.L10
.L13:
	movl	-4(%rbp), %eax
	movl	%eax, -8(%rbp)
.L10:
	movl	-12(%rbp), %eax
	cmpl	-8(%rbp), %eax
	jl	.L14
	movl	-12(%rbp), %eax
	subl	$1, %eax
.L12:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	bsch, .-bsch
	.section	.rodata
.LC0:
	.string	"%lld%lld"
.LC1:
	.string	"0"
.LC2:
	.string	"%d\n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB2:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$96, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movl	$0, %eax
	call	sieve
	leaq	-56(%rbp), %rdx
	leaq	-64(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movq	-64(%rbp), %rax
	movq	-56(%rbp), %rdx
	subq	%rdx, %rax
	movq	%rax, -48(%rbp)
	movq	-64(%rbp), %rdx
	movq	-56(%rbp), %rax
	addq	%rdx, %rax
	movq	%rax, -24(%rbp)
	cmpq	$1, -24(%rbp)
	jg	.L16
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	movl	$0, %eax
	jmp	.L33
.L16:
	cmpq	$1, -48(%rbp)
	jg	.L18
	movq	$2, -48(%rbp)
.L18:
	movq	-24(%rbp), %rax
	sarq	%rax
	pxor	%xmm1, %xmm1
	cvtsi2sdq	%rax, %xmm1
	movq	%xmm1, %rax
	movq	%rax, %xmm0
	call	sqrt@PLT
	cvttsd2sil	%xmm0, %eax
	movl	%eax, %edi
	call	bsch
	movl	%eax, sz(%rip)
	movl	$4000008, %edx
	movl	$1, %esi
	leaq	idx(%rip), %rax
	movq	%rax, %rdi
	call	memset@PLT
	movl	$0, -84(%rbp)
	jmp	.L19
.L30:
	movl	-84(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	prime(%rip), %rax
	movl	(%rdx,%rax), %eax
	movl	%eax, -72(%rbp)
	movl	$1, -80(%rbp)
	movl	-72(%rbp), %eax
	cltq
	movq	%rax, -40(%rbp)
	jmp	.L20
.L21:
	movl	-80(%rbp), %eax
	leal	1(%rax), %edx
	movl	%edx, -80(%rbp)
	cltq
	leaq	0(,%rax,8), %rcx
	leaq	pp(%rip), %rdx
	movq	-40(%rbp), %rax
	movq	%rax, (%rcx,%rdx)
	movl	-72(%rbp), %eax
	cltq
	movq	-40(%rbp), %rdx
	imulq	%rdx, %rax
	movq	%rax, -40(%rbp)
.L20:
	movq	-40(%rbp), %rax
	cmpq	-24(%rbp), %rax
	jle	.L21
	jmp	.L22
.L29:
	movl	-80(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	pp(%rip), %rax
	movq	(%rdx,%rax), %rax
	movq	%rax, -40(%rbp)
	movq	-48(%rbp), %rax
	subq	$1, %rax
	cqto
	idivq	-40(%rbp)
	leaq	1(%rax), %rdx
	movq	-40(%rbp), %rax
	imulq	%rdx, %rax
	movq	%rax, -32(%rbp)
	movq	-24(%rbp), %rax
	cqto
	idivq	-40(%rbp)
	movq	%rax, %rdx
	movq	-40(%rbp), %rax
	imulq	%rdx, %rax
	movq	%rax, -16(%rbp)
	jmp	.L23
.L28:
	movq	-32(%rbp), %rax
	movl	%eax, %edx
	movq	-48(%rbp), %rax
	movl	%eax, %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
	movl	%eax, -68(%rbp)
	movl	-68(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	idx(%rip), %rax
	movl	(%rdx,%rax), %eax
	testl	%eax, %eax
	je	.L35
	movl	-68(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	base(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	%eax, -72(%rbp)
	je	.L35
	movl	-68(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	idx(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	%eax, -80(%rbp)
	jle	.L27
	movl	-68(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	idx(%rip), %rax
	movl	$0, (%rdx,%rax)
	jmp	.L26
.L27:
	movl	-68(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rcx
	leaq	base(%rip), %rdx
	movl	-72(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
	movl	-68(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rcx
	leaq	idx(%rip), %rdx
	movl	-80(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
	jmp	.L26
.L35:
	nop
.L26:
	movq	-40(%rbp), %rax
	addq	%rax, -32(%rbp)
.L23:
	movq	-32(%rbp), %rax
	cmpq	-16(%rbp), %rax
	jle	.L28
.L22:
	subl	$1, -80(%rbp)
	cmpl	$0, -80(%rbp)
	jne	.L29
	addl	$1, -84(%rbp)
.L19:
	movl	sz(%rip), %eax
	cmpl	%eax, -84(%rbp)
	jle	.L30
	movl	$0, -76(%rbp)
	movq	-24(%rbp), %rax
	movl	%eax, %edx
	movq	-48(%rbp), %rax
	movl	%eax, %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
	addl	$1, %eax
	movl	%eax, -84(%rbp)
	jmp	.L31
.L32:
	movl	-84(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	idx(%rip), %rax
	movl	(%rdx,%rax), %eax
	testl	%eax, %eax
	je	.L31
	addl	$1, -76(%rbp)
.L31:
	movl	-84(%rbp), %eax
	leal	-1(%rax), %edx
	movl	%edx, -84(%rbp)
	testl	%eax, %eax
	jne	.L32
	movl	-76(%rbp), %eax
	movl	%eax, %esi
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	movl	$0, %eax
.L33:
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L34
	call	__stack_chk_fail@PLT
.L34:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE2:
	.size	main, .-main
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:
```

Only output the optimized assembly code. Do not include any other text. Do not write any comments in the assembly code. Wrap the assembly code in ```assembly``` tags.
user
	.file	"temp.c"
	.text
	.p2align 4
	.globl	sieve
	.type	sieve, @function
sieve:
.LFB35:
	.cfi_startproc
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	leaq	4+sqp(%rip), %r14
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	leaq	tbl(%rip), %r13
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	leaq	4+prime(%rip), %r12
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	movl	$707106, %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
	leaq	584(%r12), %rbx
	jmp	.L3
	.p2align 4,,10
	.p2align 3
.L5:
	movl	%ebp, %edx
	leaq	0(%r13,%rax), %rdi
	movl	$1, %esi
	subl	%eax, %edx
	call	memset@PLT
.L7:
	addq	$4, %r12
	addq	$4, %r14
	cmpq	%rbx, %r12
	je	.L22
.L3:
	movslq	(%r14), %rax
	movslq	(%r12), %rdx
	cmpl	$707105, %eax
	jg	.L7
	cmpl	$1, %edx
	je	.L5
	.p2align 4,,10
	.p2align 3
.L6:
	movb	$1, 0(%r13,%rax)
	addq	%rdx, %rax
	cmpl	$707105, %eax
	jg	.L7
	movb	$1, 0(%r13,%rax)
	addq	%rdx, %rax
	cmpl	$707105, %eax
	jle	.L6
	jmp	.L7
.L22:
	movl	$853, %eax
	xorl	%ecx, %ecx
	movl	$146, sz(%rip)
	movl	$146, %edx
	leaq	prime(%rip), %rsi
	.p2align 4,,10
	.p2align 3
.L10:
	cmpb	$0, 0(%r13,%rax)
	jne	.L9
	movslq	%edx, %rcx
	addl	$1, %edx
	movl	%eax, (%rsi,%rcx,4)
	movl	$1, %ecx
.L9:
	addq	$2, %rax
	cmpq	$707107, %rax
	jne	.L10
	testb	%cl, %cl
	je	.L1
	movl	%edx, sz(%rip)
.L1:
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%rbp
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r13
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE35:
	.size	sieve, .-sieve
	.p2align 4
	.globl	bsch
	.type	bsch, @function
bsch:
.LFB36:
	.cfi_startproc
	endbr64
	movl	sz(%rip), %edx
	xorl	%ecx, %ecx
	leaq	prime(%rip), %r8
	jmp	.L26
	.p2align 4,,10
	.p2align 3
.L27:
	leal	(%rcx,%rdx), %eax
	sarl	%eax
	movslq	%eax, %rsi
	cmpl	%edi, (%r8,%rsi,4)
	je	.L23
	jl	.L29
	movl	%eax, %edx
.L26:
	cmpl	%edx, %ecx
	jl	.L27
	leal	-1(%rcx), %eax
.L23:
	ret
	.p2align 4,,10
	.p2align 3
.L29:
	leal	1(%rax), %ecx
	jmp	.L26
	.cfi_endproc
.LFE36:
	.size	bsch, .-bsch
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%lld%lld"
.LC1:
	.string	"0"
.LC3:
	.string	"%d\n"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB37:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$72, %rsp
	.cfi_def_cfa_offset 128
	movq	%fs:40, %rax
	movq	%rax, 56(%rsp)
	xorl	%eax, %eax
	call	sieve
	leaq	48(%rsp), %rdx
	leaq	40(%rsp), %rsi
	xorl	%eax, %eax
	leaq	.LC0(%rip), %rdi
	call	__isoc99_scanf@PLT
	movq	40(%rsp), %rdx
	movq	48(%rsp), %rax
	leaq	(%rdx,%rax), %rbx
	cmpq	$1, %rbx
	jle	.L97
	movq	%rdx, %rsi
	pxor	%xmm0, %xmm0
	pxor	%xmm1, %xmm1
	subq	%rax, %rsi
	movl	$2, %eax
	cmpq	%rax, %rsi
	cmovge	%rsi, %rax
	movq	%rax, 24(%rsp)
	movq	%rbx, %rax
	sarq	%rax
	cvtsi2sdq	%rax, %xmm0
	ucomisd	%xmm0, %xmm1
	ja	.L92
	sqrtsd	%xmm0, %xmm0
.L35:
	cvttsd2sil	%xmm0, %edi
	movl	sz(%rip), %eax
	xorl	%edx, %edx
	leaq	prime(%rip), %rcx
	jmp	.L38
	.p2align 4,,10
	.p2align 3
.L39:
	leal	(%rax,%rdx), %r12d
	sarl	%r12d
	movslq	%r12d, %rsi
	cmpl	(%rcx,%rsi,4), %edi
	je	.L37
	jg	.L98
	movl	%r12d, %eax
.L38:
	cmpl	%edx, %eax
	jg	.L39
	leal	-1(%rdx), %r12d
	leaq	idx(%rip), %rdi
	movl	$4000008, %edx
	movl	$1, %esi
	movl	%r12d, sz(%rip)
	call	memset@PLT
	movq	%rax, %rdi
	leaq	prime(%rip), %rax
	movq	%rax, 8(%rsp)
	cmpl	$-1, %r12d
	je	.L45
.L40:
	movq	24(%rsp), %rax
	xorl	%esi, %esi
	movl	%r12d, 20(%rsp)
	leaq	pp(%rip), %r14
	leaq	base(%rip), %r10
	movq	%rsi, %r12
	movl	%eax, %ebp
	leaq	-1(%rax), %r13
	.p2align 4,,10
	.p2align 3
.L44:
	movq	8(%rsp), %rax
	movslq	(%rax,%r12,4), %rcx
	movl	$1, %eax
	movq	%rcx, %r9
	movq	%rcx, %rdx
	cmpq	%rcx, %rbx
	jl	.L49
	.p2align 4,,10
	.p2align 3
.L43:
	movq	%rdx, (%r14,%rax,8)
	imulq	%rcx, %rdx
	movslq	%eax, %r8
	addq	$1, %rax
	cmpq	%rdx, %rbx
	jge	.L43
	.p2align 4,,10
	.p2align 3
.L48:
	movq	(%r14,%r8,8), %rcx
	movq	%r13, %rax
	movl	%r8d, %esi
	cqto
	idivq	%rcx
	leaq	1(%rax), %r11
	movq	%rbx, %rax
	cqto
	imulq	%rcx, %r11
	idivq	%rcx
	imulq	%rcx, %rax
	cmpq	%rax, %r11
	jg	.L54
	cmpq	$1, %rcx
	jne	.L53
	addq	$1, %rax
	xorl	%ecx, %ecx
	subq	%r11, %rax
	subl	%ebp, %r11d
	jmp	.L57
	.p2align 4,,10
	.p2align 3
.L99:
	movl	$0, (%rdi,%rdx,4)
.L55:
	addq	$1, %rcx
	cmpq	%rax, %rcx
	je	.L54
.L57:
	leal	(%r11,%rcx), %edx
	movslq	%edx, %rdx
	movl	(%rdi,%rdx,4), %r15d
	testl	%r15d, %r15d
	je	.L55
	cmpl	(%r10,%rdx,4), %r9d
	je	.L55
	cmpl	%r8d, %r15d
	jl	.L99
	addq	$1, %rcx
	movl	%r9d, (%r10,%rdx,4)
	movl	%esi, (%rdi,%rdx,4)
	cmpq	%rax, %rcx
	jne	.L57
	.p2align 4,,10
	.p2align 3
.L54:
	subq	$1, %r8
	testl	%r8d, %r8d
	jne	.L48
.L49:
	addq	$1, %r12
	cmpl	%r12d, 20(%rsp)
	jge	.L44
.L45:
	leal	1(%rbx), %esi
	subl	24(%rsp), %esi
	movl	%esi, %edx
	leal	-1(%rsi), %ecx
	je	.L42
	cmpl	$2, %ecx
	jbe	.L70
	movslq	%esi, %rax
	shrl	$2, %edx
	pxor	%xmm1, %xmm1
	leaq	-16(%rdi,%rax,4), %rax
	subl	$1, %edx
	movdqa	%xmm1, %xmm2
	salq	$4, %rdx
	movq	%rax, %r8
	subq	%rdx, %r8
	leaq	-16(%r8), %rdx
.L60:
	movdqu	(%rax), %xmm3
	subq	$16, %rax
	pshufd	$27, %xmm3, %xmm0
	pcmpeqd	%xmm2, %xmm0
	pcmpeqd	%xmm2, %xmm0
	psubd	%xmm0, %xmm1
	cmpq	%rax, %rdx
	jne	.L60
	movdqa	%xmm1, %xmm0
	movl	%esi, %eax
	psrldq	$8, %xmm0
	andl	$-4, %eax
	paddd	%xmm0, %xmm1
	subl	%eax, %ecx
	movdqa	%xmm1, %xmm0
	psrldq	$4, %xmm0
	paddd	%xmm0, %xmm1
	movd	%xmm1, %edx
	cmpl	%eax, %esi
	je	.L42
.L59:
	movslq	%ecx, %rax
	cmpl	$0, (%rdi,%rax,4)
	je	.L63
	addl	$1, %edx
.L63:
	leal	-1(%rcx), %esi
	testl	%ecx, %ecx
	je	.L42
	movslq	%esi, %rax
	cmpl	$0, (%rdi,%rax,4)
	je	.L64
	addl	$1, %edx
.L64:
	leal	-2(%rcx), %eax
	testl	%esi, %esi
	je	.L42
	cltq
	cmpl	$0, (%rdi,%rax,4)
	je	.L42
	addl	$1, %edx
.L42:
	leaq	.LC3(%rip), %rsi
	movl	$1, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
.L32:
	movq	56(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L100
	addq	$72, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L101:
	.cfi_restore_state
	movl	$0, (%rdi,%rdx,4)
.L51:
	addq	%rcx, %r11
	cmpq	%r11, %rax
	jl	.L54
.L53:
	movl	%r11d, %edx
	subl	%ebp, %edx
	movslq	%edx, %rdx
	movl	(%rdi,%rdx,4), %r15d
	testl	%r15d, %r15d
	je	.L51
	cmpl	%r9d, (%r10,%rdx,4)
	je	.L51
	cmpl	%r8d, %r15d
	jl	.L101
	movl	%r9d, (%r10,%rdx,4)
	movl	%esi, (%rdi,%rdx,4)
	jmp	.L51
.L98:
	leal	1(%r12), %edx
	jmp	.L38
.L37:
	movl	$4000008, %edx
	movl	$1, %esi
	leaq	idx(%rip), %rdi
	movq	%rcx, 8(%rsp)
	movl	%r12d, sz(%rip)
	call	memset@PLT
	movq	%rax, %rdi
	jmp	.L40
.L97:
	leaq	.LC1(%rip), %rdi
	call	puts@PLT
	jmp	.L32
.L70:
	xorl	%edx, %edx
	jmp	.L59
.L92:
	call	sqrt@PLT
	jmp	.L35
.L100:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE37:
	.size	main, .-main
	.globl	pp
	.bss
	.align 32
	.type	pp, @object
	.size	pp, 328
pp:
	.zero	328
	.globl	idx
	.align 32
	.type	idx, @object
	.size	idx, 4000008
idx:
	.zero	4000008
	.globl	base
	.align 32
	.type	base, @object
	.size	base, 4000008
base:
	.zero	4000008
	.globl	sqp
	.data
	.align 32
	.type	sqp, @object
	.size	sqp, 588
sqp:
	.long	4
	.long	9
	.long	25
	.long	49
	.long	121
	.long	169
	.long	289
	.long	361
	.long	529
	.long	841
	.long	961
	.long	1369
	.long	1681
	.long	1849
	.long	2209
	.long	2809
	.long	3481
	.long	3721
	.long	4489
	.long	5041
	.long	5329
	.long	6241
	.long	6889
	.long	7921
	.long	9409
	.long	10201
	.long	10609
	.long	11449
	.long	11881
	.long	12769
	.long	16129
	.long	17161
	.long	18769
	.long	19321
	.long	22201
	.long	22801
	.long	24649
	.long	26569
	.long	27889
	.long	29929
	.long	32041
	.long	32761
	.long	36481
	.long	37249
	.long	38809
	.long	39601
	.long	44521
	.long	49729
	.long	51529
	.long	52441
	.long	54289
	.long	57121
	.long	58081
	.long	63001
	.long	66049
	.long	69169
	.long	72361
	.long	73441
	.long	76729
	.long	78961
	.long	80089
	.long	85849
	.long	94249
	.long	96721
	.long	97969
	.long	100489
	.long	109561
	.long	113569
	.long	120409
	.long	121801
	.long	124609
	.long	128881
	.long	134689
	.long	139129
	.long	143641
	.long	146689
	.long	151321
	.long	157609
	.long	160801
	.long	167281
	.long	175561
	.long	177241
	.long	185761
	.long	187489
	.long	192721
	.long	196249
	.long	201601
	.long	208849
	.long	212521
	.long	214369
	.long	218089
	.long	229441
	.long	237169
	.long	241081
	.long	249001
	.long	253009
	.long	259081
	.long	271441
	.long	273529
	.long	292681
	.long	299209
	.long	310249
	.long	316969
	.long	323761
	.long	326041
	.long	332929
	.long	344569
	.long	351649
	.long	358801
	.long	361201
	.long	368449
	.long	375769
	.long	380689
	.long	383161
	.long	398161
	.long	410881
	.long	413449
	.long	418609
	.long	426409
	.long	434281
	.long	436921
	.long	452929
	.long	458329
	.long	466489
	.long	477481
	.long	491401
	.long	502681
	.long	516961
	.long	528529
	.long	537289
	.long	546121
	.long	552049
	.long	564001
	.long	573049
	.long	579121
	.long	591361
	.long	597529
	.long	619369
	.long	635209
	.long	654481
	.long	657721
	.long	674041
	.long	677329
	.long	683929
	.long	687241
	.long	703921
	.long	727609
	.globl	prime
	.align 32
	.type	prime, @object
	.size	prime, 228400
prime:
	.long	2
	.long	3
	.long	5
	.long	7
	.long	11
	.long	13
	.long	17
	.long	19
	.long	23
	.long	29
	.long	31
	.long	37
	.long	41
	.long	43
	.long	47
	.long	53
	.long	59
	.long	61
	.long	67
	.long	71
	.long	73
	.long	79
	.long	83
	.long	89
	.long	97
	.long	101
	.long	103
	.long	107
	.long	109
	.long	113
	.long	127
	.long	131
	.long	137
	.long	139
	.long	149
	.long	151
	.long	157
	.long	163
	.long	167
	.long	173
	.long	179
	.long	181
	.long	191
	.long	193
	.long	197
	.long	199
	.long	211
	.long	223
	.long	227
	.long	229
	.long	233
	.long	239
	.long	241
	.long	251
	.long	257
	.long	263
	.long	269
	.long	271
	.long	277
	.long	281
	.long	283
	.long	293
	.long	307
	.long	311
	.long	313
	.long	317
	.long	331
	.long	337
	.long	347
	.long	349
	.long	353
	.long	359
	.long	367
	.long	373
	.long	379
	.long	383
	.long	389
	.long	397
	.long	401
	.long	409
	.long	419
	.long	421
	.long	431
	.long	433
	.long	439
	.long	443
	.long	449
	.long	457
	.long	461
	.long	463
	.long	467
	.long	479
	.long	487
	.long	491
	.long	499
	.long	503
	.long	509
	.long	521
	.long	523
	.long	541
	.long	547
	.long	557
	.long	563
	.long	569
	.long	571
	.long	577
	.long	587
	.long	593
	.long	599
	.long	601
	.long	607
	.long	613
	.long	617
	.long	619
	.long	631
	.long	641
	.long	643
	.long	647
	.long	653
	.long	659
	.long	661
	.long	673
	.long	677
	.long	683
	.long	691
	.long	701
	.long	709
	.long	719
	.long	727
	.long	733
	.long	739
	.long	743
	.long	751
	.long	757
	.long	761
	.long	769
	.long	773
	.long	787
	.long	797
	.long	809
	.long	811
	.long	821
	.long	823
	.long	827
	.long	829
	.long	839
	.long	853
	.zero	227812
	.globl	sz
	.bss
	.align 4
	.type	sz, @object
	.size	sz, 4
sz:
	.zero	4
	.globl	tbl
	.align 32
	.type	tbl, @object
	.size	tbl, 707107
tbl:
	.zero	707107
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:

rule
	.file	"temp.c"
	.text
	.p2align 4
	.globl	sieve
	.type	sieve, @function
sieve:
.LFB35:
	.cfi_startproc
	endbr64
	pushq	%r14
	.cfi_def_cfa_offset 16
	.cfi_offset 14, -16
	leaq	4+sqp(%rip), %r14
	pushq	%r13
	.cfi_def_cfa_offset 24
	.cfi_offset 13, -24
	leaq	tbl(%rip), %r13
	pushq	%r12
	.cfi_def_cfa_offset 32
	.cfi_offset 12, -32
	leaq	4+prime(%rip), %r12
	pushq	%rbp
	.cfi_def_cfa_offset 40
	.cfi_offset 6, -40
	movl	$707106, %ebp
	pushq	%rbx
	.cfi_def_cfa_offset 48
	.cfi_offset 3, -48
	leaq	584(%r12), %rbx
	jmp	.L3
	.p2align 4,,10
	.p2align 3
.L5:
	movl	%ebp, %edx
	leaq	0(%r13,%rax), %rdi
	movl	$1, %esi
	subl	%eax, %edx
	call	memset@PLT
.L7:
	addq	$4, %r12
	addq	$4, %r14
	cmpq	%rbx, %r12
	je	.L22
.L3:
	movslq	(%r14), %rax
	movslq	(%r12), %rdx
	cmpl	$707105, %eax
	jg	.L7
	cmpl	$1, %edx
	je	.L5
	.p2align 4,,10
	.p2align 3
.L6:
	movb	$1, 0(%r13,%rax)
	addq	%rdx, %rax
	cmpl	$707105, %eax
	jg	.L7
	movb	$1, 0(%r13,%rax)
	addq	%rdx, %rax
	cmpl	$707105, %eax
	jle	.L6
	jmp	.L7
.L22:
	movl	$853, %eax
	xorl	%ecx, %ecx
	movl	$146, sz(%rip)
	movl	$146, %edx
	leaq	prime(%rip), %rsi
	.p2align 4,,10
	.p2align 3
.L10:
	cmpb	$0, 0(%r13,%rax)
	jne	.L9
	movslq	%edx, %rcx
	addl	$1, %edx
	movl	%eax, (%rsi,%rcx,4)
	movl	$1, %ecx
.L9:
	addq	$2, %rax
	cmpq	$707107, %rax
	jne	.L10
	testb	%cl, %cl
	je	.L1
	movl	%edx, sz(%rip)
.L1:
	popq	%rbx
	.cfi_def_cfa_offset 40
	popq	%rbp
	.cfi_def_cfa_offset 32
	popq	%r12
	.cfi_def_cfa_offset 24
	popq	%r13
	.cfi_def_cfa_offset 16
	popq	%r14
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE35:
	.size	sieve, .-sieve
	.p2align 4
	.globl	bsch
	.type	bsch, @function
bsch:
.LFB36:
	.cfi_startproc
	endbr64
	movl	sz(%rip), %edx
	xorl	%ecx, %ecx
	leaq	prime(%rip), %r8
	jmp	.L26
	.p2align 4,,10
	.p2align 3
.L27:
	leal	(%rcx,%rdx), %eax
	sarl	%eax
	movslq	%eax, %rsi
	cmpl	%edi, (%r8,%rsi,4)
	je	.L23
	jl	.L29
	movl	%eax, %edx
.L26:
	cmpl	%edx, %ecx
	jl	.L27
	leal	-1(%rcx), %eax
.L23:
	ret
	.p2align 4,,10
	.p2align 3
.L29:
	leal	1(%rax), %ecx
	jmp	.L26
	.cfi_endproc
.LFE36:
	.size	bsch, .-bsch
	.section	.rodata.str1.1,"aMS",@progbits,1
.LC0:
	.string	"%lld%lld"
.LC1:
	.string	"0"
.LC3:
	.string	"%d\n"
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB37:
	.cfi_startproc
	endbr64
	pushq	%r15
	.cfi_def_cfa_offset 16
	.cfi_offset 15, -16
	pushq	%r14
	.cfi_def_cfa_offset 24
	.cfi_offset 14, -24
	pushq	%r13
	.cfi_def_cfa_offset 32
	.cfi_offset 13, -32
	pushq	%r12
	.cfi_def_cfa_offset 40
	.cfi_offset 12, -40
	pushq	%rbp
	.cfi_def_cfa_offset 48
	.cfi_offset 6, -48
	pushq	%rbx
	.cfi_def_cfa_offset 56
	.cfi_offset 3, -56
	subq	$72, %rsp
	.cfi_def_cfa_offset 128
	movq	%fs:40, %rax
	movq	%rax, 56(%rsp)
	xorl	%eax, %eax
	call	sieve
	leaq	48(%rsp), %rdx
	leaq	40(%rsp), %rsi
	xorl	%eax, %eax
	leaq	.LC0(%rip), %rdi
	call	__isoc99_scanf@PLT
	movq	40(%rsp), %rdx
	movq	48(%rsp), %rax
	leaq	(%rdx,%rax), %rbx
	cmpq	$1, %rbx
	jle	.L97
	movq	%rdx, %rsi
	pxor	%xmm0, %xmm0
	pxor	%xmm1, %xmm1
	subq	%rax, %rsi
	movl	$2, %eax
	cmpq	%rax, %rsi
	cmovge	%rsi, %rax
	movq	%rax, 24(%rsp)
	movq	%rbx, %rax
	sarq	%rax
	cvtsi2sdq	%rax, %xmm0
	ucomisd	%xmm0, %xmm1
	ja	.L92
	sqrtsd	%xmm0, %xmm0
.L35:
	cvttsd2sil	%xmm0, %edi
	movl	sz(%rip), %eax
	xorl	%edx, %edx
	leaq	prime(%rip), %rcx
	jmp	.L38
	.p2align 4,,10
	.p2align 3
.L39:
	leal	(%rax,%rdx), %r12d
	sarl	%r12d
	movslq	%r12d, %rsi
	cmpl	(%rcx,%rsi,4), %edi
	je	.L37
	jg	.L98
	movl	%r12d, %eax
.L38:
	cmpl	%edx, %eax
	jg	.L39
	leal	-1(%rdx), %r12d
	leaq	idx(%rip), %rdi
	movl	$4000008, %edx
	movl	$1, %esi
	movl	%r12d, sz(%rip)
	call	memset@PLT
	movq	%rax, %rdi
	leaq	prime(%rip), %rax
	movq	%rax, 8(%rsp)
	cmpl	$-1, %r12d
	je	.L45
.L40:
	movq	24(%rsp), %rax
	xorl	%esi, %esi
	movl	%r12d, 20(%rsp)
	leaq	pp(%rip), %r14
	leaq	base(%rip), %r10
	movq	%rsi, %r12
	movl	%eax, %ebp
	leaq	-1(%rax), %r13
	.p2align 4,,10
	.p2align 3
.L44:
	movq	8(%rsp), %rax
	movslq	(%rax,%r12,4), %rcx
	movl	$1, %eax
	movq	%rcx, %r9
	movq	%rcx, %rdx
	cmpq	%rcx, %rbx
	jl	.L49
	.p2align 4,,10
	.p2align 3
.L43:
	movq	%rdx, (%r14,%rax,8)
	imulq	%rcx, %rdx
	movslq	%eax, %r8
	addq	$1, %rax
	cmpq	%rdx, %rbx
	jge	.L43
	.p2align 4,,10
	.p2align 3
.L48:
	movq	(%r14,%r8,8), %rcx
	movq	%r13, %rax
	movl	%r8d, %esi
	cqto
	idivq	%rcx
	leaq	1(%rax), %r11
	movq	%rbx, %rax
	cqto
	imulq	%rcx, %r11
	idivq	%rcx
	imulq	%rcx, %rax
	cmpq	%rax, %r11
	jg	.L54
	cmpq	$1, %rcx
	jne	.L53
	addq	$1, %rax
	xorl	%ecx, %ecx
	subq	%r11, %rax
	subl	%ebp, %r11d
	jmp	.L57
	.p2align 4,,10
	.p2align 3
.L99:
	movl	$0, (%rdi,%rdx,4)
.L55:
	addq	$1, %rcx
	cmpq	%rax, %rcx
	je	.L54
.L57:
	leal	(%r11,%rcx), %edx
	movslq	%edx, %rdx
	movl	(%rdi,%rdx,4), %r15d
	testl	%r15d, %r15d
	je	.L55
	cmpl	(%r10,%rdx,4), %r9d
	je	.L55
	cmpl	%r8d, %r15d
	jl	.L99
	addq	$1, %rcx
	movl	%r9d, (%r10,%rdx,4)
	movl	%esi, (%rdi,%rdx,4)
	cmpq	%rax, %rcx
	jne	.L57
	.p2align 4,,10
	.p2align 3
.L54:
	subq	$1, %r8
	testl	%r8d, %r8d
	jne	.L48
.L49:
	addq	$1, %r12
	cmpl	%r12d, 20(%rsp)
	jge	.L44
.L45:
	leal	1(%rbx), %esi
	subl	24(%rsp), %esi
	movl	%esi, %edx
	leal	-1(%rsi), %ecx
	je	.L42
	cmpl	$2, %ecx
	jbe	.L70
	movslq	%esi, %rax
	shrl	$2, %edx
	pxor	%xmm1, %xmm1
	leaq	-16(%rdi,%rax,4), %rax
	subl	$1, %edx
	movdqa	%xmm1, %xmm2
	salq	$4, %rdx
	movq	%rax, %r8
	subq	%rdx, %r8
	leaq	-16(%r8), %rdx
.L60:
	movdqu	(%rax), %xmm3
	subq	$16, %rax
	pshufd	$27, %xmm3, %xmm0
	pcmpeqd	%xmm2, %xmm0
	pcmpeqd	%xmm2, %xmm0
	psubd	%xmm0, %xmm1
	cmpq	%rax, %rdx
	jne	.L60
	movdqa	%xmm1, %xmm0
	movl	%esi, %eax
	psrldq	$8, %xmm0
	andl	$-4, %eax
	paddd	%xmm0, %xmm1
	subl	%eax, %ecx
	movdqa	%xmm1, %xmm0
	psrldq	$4, %xmm0
	paddd	%xmm0, %xmm1
	movd	%xmm1, %edx
	cmpl	%eax, %esi
	je	.L42
.L59:
	movslq	%ecx, %rax
	cmpl	$0, (%rdi,%rax,4)
	je	.L63
	addl	$1, %edx
.L63:
	leal	-1(%rcx), %esi
	testl	%ecx, %ecx
	je	.L42
	movslq	%esi, %rax
	cmpl	$0, (%rdi,%rax,4)
	je	.L64
	addl	$1, %edx
.L64:
	leal	-2(%rcx), %eax
	testl	%esi, %esi
	je	.L42
	cltq
	cmpl	$0, (%rdi,%rax,4)
	je	.L42
	addl	$1, %edx
.L42:
	leaq	.LC3(%rip), %rsi
	movl	$1, %edi
	xorl	%eax, %eax
	call	__printf_chk@PLT
.L32:
	movq	56(%rsp), %rax
	subq	%fs:40, %rax
	jne	.L100
	addq	$72, %rsp
	.cfi_remember_state
	.cfi_def_cfa_offset 56
	xorl	%eax, %eax
	popq	%rbx
	.cfi_def_cfa_offset 48
	popq	%rbp
	.cfi_def_cfa_offset 40
	popq	%r12
	.cfi_def_cfa_offset 32
	popq	%r13
	.cfi_def_cfa_offset 24
	popq	%r14
	.cfi_def_cfa_offset 16
	popq	%r15
	.cfi_def_cfa_offset 8
	ret
	.p2align 4,,10
	.p2align 3
.L101:
	.cfi_restore_state
	movl	$0, (%rdi,%rdx,4)
.L51:
	addq	%rcx, %r11
	cmpq	%r11, %rax
	jl	.L54
.L53:
	movl	%r11d, %edx
	subl	%ebp, %edx
	movslq	%edx, %rdx
	movl	(%rdi,%rdx,4), %r15d
	testl	%r15d, %r15d
	je	.L51
	cmpl	%r9d, (%r10,%rdx,4)
	je	.L51
	cmpl	%r8d, %r15d
	jl	.L101
	movl	%r9d, (%r10,%rdx,4)
	movl	%esi, (%rdi,%rdx,4)
	jmp	.L51
.L98:
	leal	1(%r12), %edx
	jmp	.L38
.L37:
	movl	$4000008, %edx
	movl	$1, %esi
	leaq	idx(%rip), %rdi
	movq	%rcx, 8(%rsp)
	movl	%r12d, sz(%rip)
	call	memset@PLT
	movq	%rax, %rdi
	jmp	.L40
.L97:
	leaq	.LC1(%rip), %rdi
	call	puts@PLT
	jmp	.L32
.L70:
	xorl	%edx, %edx
	jmp	.L59
.L92:
	call	sqrt@PLT
	jmp	.L35
.L100:
	call	__stack_chk_fail@PLT
	.cfi_endproc
.LFE37:
	.size	main, .-main
	.globl	pp
	.bss
	.align 32
	.type	pp, @object
	.size	pp, 328
pp:
	.zero	328
	.globl	idx
	.align 32
	.type	idx, @object
	.size	idx, 4000008
idx:
	.zero	4000008
	.globl	base
	.align 32
	.type	base, @object
	.size	base, 4000008
base:
	.zero	4000008
	.globl	sqp
	.data
	.align 32
	.type	sqp, @object
	.size	sqp, 588
sqp:
	.long	4
	.long	9
	.long	25
	.long	49
	.long	121
	.long	169
	.long	289
	.long	361
	.long	529
	.long	841
	.long	961
	.long	1369
	.long	1681
	.long	1849
	.long	2209
	.long	2809
	.long	3481
	.long	3721
	.long	4489
	.long	5041
	.long	5329
	.long	6241
	.long	6889
	.long	7921
	.long	9409
	.long	10201
	.long	10609
	.long	11449
	.long	11881
	.long	12769
	.long	16129
	.long	17161
	.long	18769
	.long	19321
	.long	22201
	.long	22801
	.long	24649
	.long	26569
	.long	27889
	.long	29929
	.long	32041
	.long	32761
	.long	36481
	.long	37249
	.long	38809
	.long	39601
	.long	44521
	.long	49729
	.long	51529
	.long	52441
	.long	54289
	.long	57121
	.long	58081
	.long	63001
	.long	66049
	.long	69169
	.long	72361
	.long	73441
	.long	76729
	.long	78961
	.long	80089
	.long	85849
	.long	94249
	.long	96721
	.long	97969
	.long	100489
	.long	109561
	.long	113569
	.long	120409
	.long	121801
	.long	124609
	.long	128881
	.long	134689
	.long	139129
	.long	143641
	.long	146689
	.long	151321
	.long	157609
	.long	160801
	.long	167281
	.long	175561
	.long	177241
	.long	185761
	.long	187489
	.long	192721
	.long	196249
	.long	201601
	.long	208849
	.long	212521
	.long	214369
	.long	218089
	.long	229441
	.long	237169
	.long	241081
	.long	249001
	.long	253009
	.long	259081
	.long	271441
	.long	273529
	.long	292681
	.long	299209
	.long	310249
	.long	316969
	.long	323761
	.long	326041
	.long	332929
	.long	344569
	.long	351649
	.long	358801
	.long	361201
	.long	368449
	.long	375769
	.long	380689
	.long	383161
	.long	398161
	.long	410881
	.long	413449
	.long	418609
	.long	426409
	.long	434281
	.long	436921
	.long	452929
	.long	458329
	.long	466489
	.long	477481
	.long	491401
	.long	502681
	.long	516961
	.long	528529
	.long	537289
	.long	546121
	.long	552049
	.long	564001
	.long	573049
	.long	579121
	.long	591361
	.long	597529
	.long	619369
	.long	635209
	.long	654481
	.long	657721
	.long	674041
	.long	677329
	.long	683929
	.long	687241
	.long	703921
	.long	727609
	.globl	prime
	.align 32
	.type	prime, @object
	.size	prime, 228400
prime:
	.long	2
	.long	3
	.long	5
	.long	7
	.long	11
	.long	13
	.long	17
	.long	19
	.long	23
	.long	29
	.long	31
	.long	37
	.long	41
	.long	43
	.long	47
	.long	53
	.long	59
	.long	61
	.long	67
	.long	71
	.long	73
	.long	79
	.long	83
	.long	89
	.long	97
	.long	101
	.long	103
	.long	107
	.long	109
	.long	113
	.long	127
	.long	131
	.long	137
	.long	139
	.long	149
	.long	151
	.long	157
	.long	163
	.long	167
	.long	173
	.long	179
	.long	181
	.long	191
	.long	193
	.long	197
	.long	199
	.long	211
	.long	223
	.long	227
	.long	229
	.long	233
	.long	239
	.long	241
	.long	251
	.long	257
	.long	263
	.long	269
	.long	271
	.long	277
	.long	281
	.long	283
	.long	293
	.long	307
	.long	311
	.long	313
	.long	317
	.long	331
	.long	337
	.long	347
	.long	349
	.long	353
	.long	359
	.long	367
	.long	373
	.long	379
	.long	383
	.long	389
	.long	397
	.long	401
	.long	409
	.long	419
	.long	421
	.long	431
	.long	433
	.long	439
	.long	443
	.long	449
	.long	457
	.long	461
	.long	463
	.long	467
	.long	479
	.long	487
	.long	491
	.long	499
	.long	503
	.long	509
	.long	521
	.long	523
	.long	541
	.long	547
	.long	557
	.long	563
	.long	569
	.long	571
	.long	577
	.long	587
	.long	593
	.long	599
	.long	601
	.long	607
	.long	613
	.long	617
	.long	619
	.long	631
	.long	641
	.long	643
	.long	647
	.long	653
	.long	659
	.long	661
	.long	673
	.long	677
	.long	683
	.long	691
	.long	701
	.long	709
	.long	719
	.long	727
	.long	733
	.long	739
	.long	743
	.long	751
	.long	757
	.long	761
	.long	769
	.long	773
	.long	787
	.long	797
	.long	809
	.long	811
	.long	821
	.long	823
	.long	827
	.long	829
	.long	839
	.long	853
	.zero	227812
	.globl	sz
	.bss
	.align 4
	.type	sz, @object
	.size	sz, 4
sz:
	.zero	4
	.globl	tbl
	.align 32
	.type	tbl, @object
	.size	tbl, 707107
tbl:
	.zero	707107
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:

// AOJ 2275: Fox Number
// 2017.12.11 bal4u@uu

#include <stdio.h>
#include <string.h>
#include <math.h>

#define MAX  707106			// sqrt(10^12/2)
char tbl[MAX+1];

int sz;						// max sz = 57084, prime[0] = 2, prime[57083] = 707099
int prime[57100] = {  		// prime[146] = 853, prime[147] = 857
  2, 3,  5,  7, 11, 13, 17, 19, 23, 29, 
 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 
 73, 79, 83, 89, 97,101,103,107,109,113, 
127,131,137,139,149,151,157,163,167,173,
179,181,191,193,197,199,211,223,227,229, 
233,239,241,251,257,263,269,271,277,281, 
283,293,307,311,313,317,331,337,347,349, 
353,359,367,373,379,383,389,397,401,409, 
419,421,431,433,439,443,449,457,461,463, 
467,479,487,491,499,503,509,521,523,541, 
547,557,563,569,571,577,587,593,599,601, 
607,613,617,619,631,641,643,647,653,659, 
661,673,677,683,691,701,709,719,727,733, 
739,743,751,757,761,769,773,787,797,809, 
811,821,823,827,829,839,853 };

int sqp[147] = {				// squre of prime: sqp[i] = prime[i] * prime[i]
  4, 9,25,49,121,169,289,361,529,841,961,
1369,1681,1849,2209,2809,3481,3721,4489,5041,
5329,6241,6889,7921,9409,10201,10609,11449,11881,12769,
16129,17161,18769,19321,22201,22801,24649,26569,27889,29929,
32041,32761,36481,37249,38809,39601,44521,49729,51529,52441,54289,
57121,58081,63001,66049,69169,72361,73441,76729,78961,80089,85849,
94249,96721,97969,100489,109561,113569,120409,121801,124609,128881,
134689,139129,143641,146689,151321,157609,160801,167281,175561,177241,
185761,187489,192721,196249,201601,208849,212521,214369,218089,229441,
237169,241081,249001,253009,259081,271441,273529,292681,299209,310249,
316969,323761,326041,332929,344569,351649,358801,361201,368449,375769,
380689,383161,398161,410881,413449,418609,426409,434281,436921,452929,
458329,466489,477481,491401,502681,516961,528529,537289,546121,552049,
564001,573049,579121,591361,597529,619369,635209,654481,657721,674041,
677329,683929,687241,703921,727609 };

void sieve()
{
	int i, j, k;

	for (i = 1; i < 147; i++) {
		k = prime[i];
		for (j = sqp[i]; j < MAX; j += k) tbl[j] = 1;
	}
	for (sz = 146, i = 853; i <= MAX; i += 2) if (!tbl[i]) prime[sz++] = i;
//	printf("sz %d, prime[%d]=%d\n", sz, sz-1, prime[sz-1]);
//	        sz 57084, prime[57083]=707099
}

int base[1000002];
int idx [1000002];
long long pp[41];		// 2^40 = 1099511627776 >= 10^12

int bsch(int x)
{
	int m, l = 0, r = sz;

    while (l < r) {
        m = (l + r) >> 1;
		if (prime[m] == x) return m;
        if (prime[m] < x) l = m + 1; else r = m;
    }
	return l-1;
}

int main()
{
	int i, k, p, ans;
	long long A, B, a, b, j, ll, rr;

	sieve();

	scanf("%lld%lld", &A, &B);
	a = A-B, b = A+B;
	if (b <= 1) { puts("0"); return 0; }
	if (a <= 1) a = 2;

	sz = bsch((int)sqrt((double)(b >> 1)));

	memset(idx, 1, sizeof(idx));
	for (i = 0; i <= sz; i++) {
		p = prime[i];
		for (k = 1, j = p; j <= b; j *= p) pp[k++] = j;
		while (--k) {
			j = pp[k], ll = j*(1+(a-1)/j), rr = j*(b/j);
			for (; ll <= rr; ll += j) {
				int x = (int)(ll-a);
				if (!idx[x] || base[x] == p) continue;
				if (idx[x] < k) idx[x] = 0;
				else base[x] = p, idx[x] = k;
			}
		}
	}

	ans = 0, i = (int)(b-a+1); while (i--) if (idx[i]) ans++;
	printf("%d\n", ans);
	return 0;
}
18 2

4

Given the following C code and unoptimized assembly code, your task is to generate highly optimized x86-64 assembly code.
C Code:

```c
// AOJ 2275: Fox Number
// 2017.12.11 bal4u@uu

#include <stdio.h>
#include <string.h>
#include <math.h>

#define MAX  707106			// sqrt(10^12/2)
char tbl[MAX+1];

int sz;						// max sz = 57084, prime[0] = 2, prime[57083] = 707099
int prime[57100] = {  		// prime[146] = 853, prime[147] = 857
  2, 3,  5,  7, 11, 13, 17, 19, 23, 29, 
 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 
 73, 79, 83, 89, 97,101,103,107,109,113, 
127,131,137,139,149,151,157,163,167,173,
179,181,191,193,197,199,211,223,227,229, 
233,239,241,251,257,263,269,271,277,281, 
283,293,307,311,313,317,331,337,347,349, 
353,359,367,373,379,383,389,397,401,409, 
419,421,431,433,439,443,449,457,461,463, 
467,479,487,491,499,503,509,521,523,541, 
547,557,563,569,571,577,587,593,599,601, 
607,613,617,619,631,641,643,647,653,659, 
661,673,677,683,691,701,709,719,727,733, 
739,743,751,757,761,769,773,787,797,809, 
811,821,823,827,829,839,853 };

int sqp[147] = {				// squre of prime: sqp[i] = prime[i] * prime[i]
  4, 9,25,49,121,169,289,361,529,841,961,
1369,1681,1849,2209,2809,3481,3721,4489,5041,
5329,6241,6889,7921,9409,10201,10609,11449,11881,12769,
16129,17161,18769,19321,22201,22801,24649,26569,27889,29929,
32041,32761,36481,37249,38809,39601,44521,49729,51529,52441,54289,
57121,58081,63001,66049,69169,72361,73441,76729,78961,80089,85849,
94249,96721,97969,100489,109561,113569,120409,121801,124609,128881,
134689,139129,143641,146689,151321,157609,160801,167281,175561,177241,
185761,187489,192721,196249,201601,208849,212521,214369,218089,229441,
237169,241081,249001,253009,259081,271441,273529,292681,299209,310249,
316969,323761,326041,332929,344569,351649,358801,361201,368449,375769,
380689,383161,398161,410881,413449,418609,426409,434281,436921,452929,
458329,466489,477481,491401,502681,516961,528529,537289,546121,552049,
564001,573049,579121,591361,597529,619369,635209,654481,657721,674041,
677329,683929,687241,703921,727609 };

void sieve()
{
	int i, j, k;

	for (i = 1; i < 147; i++) {
		k = prime[i];
		for (j = sqp[i]; j < MAX; j += k) tbl[j] = 1;
	}
	for (sz = 146, i = 853; i <= MAX; i += 2) if (!tbl[i]) prime[sz++] = i;
//	printf("sz %d, prime[%d]=%d\n", sz, sz-1, prime[sz-1]);
//	        sz 57084, prime[57083]=707099
}

int base[1000002];
int idx [1000002];
long long pp[41];		// 2^40 = 1099511627776 >= 10^12

int bsch(int x)
{
	int m, l = 0, r = sz;

    while (l < r) {
        m = (l + r) >> 1;
		if (prime[m] == x) return m;
        if (prime[m] < x) l = m + 1; else r = m;
    }
	return l-1;
}

int main()
{
	int i, k, p, ans;
	long long A, B, a, b, j, ll, rr;

	sieve();

	scanf("%lld%lld", &A, &B);
	a = A-B, b = A+B;
	if (b <= 1) { puts("0"); return 0; }
	if (a <= 1) a = 2;

	sz = bsch((int)sqrt((double)(b >> 1)));

	memset(idx, 1, sizeof(idx));
	for (i = 0; i <= sz; i++) {
		p = prime[i];
		for (k = 1, j = p; j <= b; j *= p) pp[k++] = j;
		while (--k) {
			j = pp[k], ll = j*(1+(a-1)/j), rr = j*(b/j);
			for (; ll <= rr; ll += j) {
				int x = (int)(ll-a);
				if (!idx[x] || base[x] == p) continue;
				if (idx[x] < k) idx[x] = 0;
				else base[x] = p, idx[x] = k;
			}
		}
	}

	ans = 0, i = (int)(b-a+1); while (i--) if (idx[i]) ans++;
	printf("%d\n", ans);
	return 0;
}```

Unoptimized Assembly Code:

```assembly
	.file	"temp.c"
	.text
	.globl	tbl
	.bss
	.align 32
	.type	tbl, @object
	.size	tbl, 707107
tbl:
	.zero	707107
	.globl	sz
	.align 4
	.type	sz, @object
	.size	sz, 4
sz:
	.zero	4
	.globl	prime
	.data
	.align 32
	.type	prime, @object
	.size	prime, 228400
prime:
	.long	2
	.long	3
	.long	5
	.long	7
	.long	11
	.long	13
	.long	17
	.long	19
	.long	23
	.long	29
	.long	31
	.long	37
	.long	41
	.long	43
	.long	47
	.long	53
	.long	59
	.long	61
	.long	67
	.long	71
	.long	73
	.long	79
	.long	83
	.long	89
	.long	97
	.long	101
	.long	103
	.long	107
	.long	109
	.long	113
	.long	127
	.long	131
	.long	137
	.long	139
	.long	149
	.long	151
	.long	157
	.long	163
	.long	167
	.long	173
	.long	179
	.long	181
	.long	191
	.long	193
	.long	197
	.long	199
	.long	211
	.long	223
	.long	227
	.long	229
	.long	233
	.long	239
	.long	241
	.long	251
	.long	257
	.long	263
	.long	269
	.long	271
	.long	277
	.long	281
	.long	283
	.long	293
	.long	307
	.long	311
	.long	313
	.long	317
	.long	331
	.long	337
	.long	347
	.long	349
	.long	353
	.long	359
	.long	367
	.long	373
	.long	379
	.long	383
	.long	389
	.long	397
	.long	401
	.long	409
	.long	419
	.long	421
	.long	431
	.long	433
	.long	439
	.long	443
	.long	449
	.long	457
	.long	461
	.long	463
	.long	467
	.long	479
	.long	487
	.long	491
	.long	499
	.long	503
	.long	509
	.long	521
	.long	523
	.long	541
	.long	547
	.long	557
	.long	563
	.long	569
	.long	571
	.long	577
	.long	587
	.long	593
	.long	599
	.long	601
	.long	607
	.long	613
	.long	617
	.long	619
	.long	631
	.long	641
	.long	643
	.long	647
	.long	653
	.long	659
	.long	661
	.long	673
	.long	677
	.long	683
	.long	691
	.long	701
	.long	709
	.long	719
	.long	727
	.long	733
	.long	739
	.long	743
	.long	751
	.long	757
	.long	761
	.long	769
	.long	773
	.long	787
	.long	797
	.long	809
	.long	811
	.long	821
	.long	823
	.long	827
	.long	829
	.long	839
	.long	853
	.zero	227812
	.globl	sqp
	.align 32
	.type	sqp, @object
	.size	sqp, 588
sqp:
	.long	4
	.long	9
	.long	25
	.long	49
	.long	121
	.long	169
	.long	289
	.long	361
	.long	529
	.long	841
	.long	961
	.long	1369
	.long	1681
	.long	1849
	.long	2209
	.long	2809
	.long	3481
	.long	3721
	.long	4489
	.long	5041
	.long	5329
	.long	6241
	.long	6889
	.long	7921
	.long	9409
	.long	10201
	.long	10609
	.long	11449
	.long	11881
	.long	12769
	.long	16129
	.long	17161
	.long	18769
	.long	19321
	.long	22201
	.long	22801
	.long	24649
	.long	26569
	.long	27889
	.long	29929
	.long	32041
	.long	32761
	.long	36481
	.long	37249
	.long	38809
	.long	39601
	.long	44521
	.long	49729
	.long	51529
	.long	52441
	.long	54289
	.long	57121
	.long	58081
	.long	63001
	.long	66049
	.long	69169
	.long	72361
	.long	73441
	.long	76729
	.long	78961
	.long	80089
	.long	85849
	.long	94249
	.long	96721
	.long	97969
	.long	100489
	.long	109561
	.long	113569
	.long	120409
	.long	121801
	.long	124609
	.long	128881
	.long	134689
	.long	139129
	.long	143641
	.long	146689
	.long	151321
	.long	157609
	.long	160801
	.long	167281
	.long	175561
	.long	177241
	.long	185761
	.long	187489
	.long	192721
	.long	196249
	.long	201601
	.long	208849
	.long	212521
	.long	214369
	.long	218089
	.long	229441
	.long	237169
	.long	241081
	.long	249001
	.long	253009
	.long	259081
	.long	271441
	.long	273529
	.long	292681
	.long	299209
	.long	310249
	.long	316969
	.long	323761
	.long	326041
	.long	332929
	.long	344569
	.long	351649
	.long	358801
	.long	361201
	.long	368449
	.long	375769
	.long	380689
	.long	383161
	.long	398161
	.long	410881
	.long	413449
	.long	418609
	.long	426409
	.long	434281
	.long	436921
	.long	452929
	.long	458329
	.long	466489
	.long	477481
	.long	491401
	.long	502681
	.long	516961
	.long	528529
	.long	537289
	.long	546121
	.long	552049
	.long	564001
	.long	573049
	.long	579121
	.long	591361
	.long	597529
	.long	619369
	.long	635209
	.long	654481
	.long	657721
	.long	674041
	.long	677329
	.long	683929
	.long	687241
	.long	703921
	.long	727609
	.text
	.globl	sieve
	.type	sieve, @function
sieve:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	$1, -12(%rbp)
	jmp	.L2
.L5:
	movl	-12(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	prime(%rip), %rax
	movl	(%rdx,%rax), %eax
	movl	%eax, -4(%rbp)
	movl	-12(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	sqp(%rip), %rax
	movl	(%rdx,%rax), %eax
	movl	%eax, -8(%rbp)
	jmp	.L3
.L4:
	movl	-8(%rbp), %eax
	cltq
	leaq	tbl(%rip), %rdx
	movb	$1, (%rax,%rdx)
	movl	-4(%rbp), %eax
	addl	%eax, -8(%rbp)
.L3:
	cmpl	$707105, -8(%rbp)
	jle	.L4
	addl	$1, -12(%rbp)
.L2:
	cmpl	$146, -12(%rbp)
	jle	.L5
	movl	$146, sz(%rip)
	movl	$853, -12(%rbp)
	jmp	.L6
.L8:
	movl	-12(%rbp), %eax
	cltq
	leaq	tbl(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	jne	.L7
	movl	sz(%rip), %eax
	leal	1(%rax), %edx
	movl	%edx, sz(%rip)
	cltq
	leaq	0(,%rax,4), %rcx
	leaq	prime(%rip), %rdx
	movl	-12(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
.L7:
	addl	$2, -12(%rbp)
.L6:
	cmpl	$707106, -12(%rbp)
	jle	.L8
	nop
	nop
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	sieve, .-sieve
	.globl	base
	.bss
	.align 32
	.type	base, @object
	.size	base, 4000008
base:
	.zero	4000008
	.globl	idx
	.align 32
	.type	idx, @object
	.size	idx, 4000008
idx:
	.zero	4000008
	.globl	pp
	.align 32
	.type	pp, @object
	.size	pp, 328
pp:
	.zero	328
	.text
	.globl	bsch
	.type	bsch, @function
bsch:
.LFB1:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	%edi, -20(%rbp)
	movl	$0, -12(%rbp)
	movl	sz(%rip), %eax
	movl	%eax, -8(%rbp)
	jmp	.L10
.L14:
	movl	-12(%rbp), %edx
	movl	-8(%rbp), %eax
	addl	%edx, %eax
	sarl	%eax
	movl	%eax, -4(%rbp)
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	prime(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	%eax, -20(%rbp)
	jne	.L11
	movl	-4(%rbp), %eax
	jmp	.L12
.L11:
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	prime(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	%eax, -20(%rbp)
	jle	.L13
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, -12(%rbp)
	jmp	.L10
.L13:
	movl	-4(%rbp), %eax
	movl	%eax, -8(%rbp)
.L10:
	movl	-12(%rbp), %eax
	cmpl	-8(%rbp), %eax
	jl	.L14
	movl	-12(%rbp), %eax
	subl	$1, %eax
.L12:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	bsch, .-bsch
	.section	.rodata
.LC0:
	.string	"%lld%lld"
.LC1:
	.string	"0"
.LC2:
	.string	"%d\n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB2:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$96, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movl	$0, %eax
	call	sieve
	leaq	-56(%rbp), %rdx
	leaq	-64(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movq	-64(%rbp), %rax
	movq	-56(%rbp), %rdx
	subq	%rdx, %rax
	movq	%rax, -48(%rbp)
	movq	-64(%rbp), %rdx
	movq	-56(%rbp), %rax
	addq	%rdx, %rax
	movq	%rax, -24(%rbp)
	cmpq	$1, -24(%rbp)
	jg	.L16
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	movl	$0, %eax
	jmp	.L33
.L16:
	cmpq	$1, -48(%rbp)
	jg	.L18
	movq	$2, -48(%rbp)
.L18:
	movq	-24(%rbp), %rax
	sarq	%rax
	pxor	%xmm1, %xmm1
	cvtsi2sdq	%rax, %xmm1
	movq	%xmm1, %rax
	movq	%rax, %xmm0
	call	sqrt@PLT
	cvttsd2sil	%xmm0, %eax
	movl	%eax, %edi
	call	bsch
	movl	%eax, sz(%rip)
	movl	$4000008, %edx
	movl	$1, %esi
	leaq	idx(%rip), %rax
	movq	%rax, %rdi
	call	memset@PLT
	movl	$0, -84(%rbp)
	jmp	.L19
.L30:
	movl	-84(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	prime(%rip), %rax
	movl	(%rdx,%rax), %eax
	movl	%eax, -72(%rbp)
	movl	$1, -80(%rbp)
	movl	-72(%rbp), %eax
	cltq
	movq	%rax, -40(%rbp)
	jmp	.L20
.L21:
	movl	-80(%rbp), %eax
	leal	1(%rax), %edx
	movl	%edx, -80(%rbp)
	cltq
	leaq	0(,%rax,8), %rcx
	leaq	pp(%rip), %rdx
	movq	-40(%rbp), %rax
	movq	%rax, (%rcx,%rdx)
	movl	-72(%rbp), %eax
	cltq
	movq	-40(%rbp), %rdx
	imulq	%rdx, %rax
	movq	%rax, -40(%rbp)
.L20:
	movq	-40(%rbp), %rax
	cmpq	-24(%rbp), %rax
	jle	.L21
	jmp	.L22
.L29:
	movl	-80(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	pp(%rip), %rax
	movq	(%rdx,%rax), %rax
	movq	%rax, -40(%rbp)
	movq	-48(%rbp), %rax
	subq	$1, %rax
	cqto
	idivq	-40(%rbp)
	leaq	1(%rax), %rdx
	movq	-40(%rbp), %rax
	imulq	%rdx, %rax
	movq	%rax, -32(%rbp)
	movq	-24(%rbp), %rax
	cqto
	idivq	-40(%rbp)
	movq	%rax, %rdx
	movq	-40(%rbp), %rax
	imulq	%rdx, %rax
	movq	%rax, -16(%rbp)
	jmp	.L23
.L28:
	movq	-32(%rbp), %rax
	movl	%eax, %edx
	movq	-48(%rbp), %rax
	movl	%eax, %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
	movl	%eax, -68(%rbp)
	movl	-68(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	idx(%rip), %rax
	movl	(%rdx,%rax), %eax
	testl	%eax, %eax
	je	.L35
	movl	-68(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	base(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	%eax, -72(%rbp)
	je	.L35
	movl	-68(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	idx(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	%eax, -80(%rbp)
	jle	.L27
	movl	-68(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	idx(%rip), %rax
	movl	$0, (%rdx,%rax)
	jmp	.L26
.L27:
	movl	-68(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rcx
	leaq	base(%rip), %rdx
	movl	-72(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
	movl	-68(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rcx
	leaq	idx(%rip), %rdx
	movl	-80(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
	jmp	.L26
.L35:
	nop
.L26:
	movq	-40(%rbp), %rax
	addq	%rax, -32(%rbp)
.L23:
	movq	-32(%rbp), %rax
	cmpq	-16(%rbp), %rax
	jle	.L28
.L22:
	subl	$1, -80(%rbp)
	cmpl	$0, -80(%rbp)
	jne	.L29
	addl	$1, -84(%rbp)
.L19:
	movl	sz(%rip), %eax
	cmpl	%eax, -84(%rbp)
	jle	.L30
	movl	$0, -76(%rbp)
	movq	-24(%rbp), %rax
	movl	%eax, %edx
	movq	-48(%rbp), %rax
	movl	%eax, %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
	addl	$1, %eax
	movl	%eax, -84(%rbp)
	jmp	.L31
.L32:
	movl	-84(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	idx(%rip), %rax
	movl	(%rdx,%rax), %eax
	testl	%eax, %eax
	je	.L31
	addl	$1, -76(%rbp)
.L31:
	movl	-84(%rbp), %eax
	leal	-1(%rax), %edx
	movl	%edx, -84(%rbp)
	testl	%eax, %eax
	jne	.L32
	movl	-76(%rbp), %eax
	movl	%eax, %esi
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	movl	$0, %eax
.L33:
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L34
	call	__stack_chk_fail@PLT
.L34:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE2:
	.size	main, .-main
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:
```

Only output the optimized assembly code. Do not include any other text. Do not write any comments in the assembly code. Wrap the assembly code in ```assembly``` tags.
train
	.file	"temp.c"
	.text
	.globl	tbl
	.bss
	.align 32
	.type	tbl, @object
	.size	tbl, 707107
tbl:
	.zero	707107
	.globl	sz
	.align 4
	.type	sz, @object
	.size	sz, 4
sz:
	.zero	4
	.globl	prime
	.data
	.align 32
	.type	prime, @object
	.size	prime, 228400
prime:
	.long	2
	.long	3
	.long	5
	.long	7
	.long	11
	.long	13
	.long	17
	.long	19
	.long	23
	.long	29
	.long	31
	.long	37
	.long	41
	.long	43
	.long	47
	.long	53
	.long	59
	.long	61
	.long	67
	.long	71
	.long	73
	.long	79
	.long	83
	.long	89
	.long	97
	.long	101
	.long	103
	.long	107
	.long	109
	.long	113
	.long	127
	.long	131
	.long	137
	.long	139
	.long	149
	.long	151
	.long	157
	.long	163
	.long	167
	.long	173
	.long	179
	.long	181
	.long	191
	.long	193
	.long	197
	.long	199
	.long	211
	.long	223
	.long	227
	.long	229
	.long	233
	.long	239
	.long	241
	.long	251
	.long	257
	.long	263
	.long	269
	.long	271
	.long	277
	.long	281
	.long	283
	.long	293
	.long	307
	.long	311
	.long	313
	.long	317
	.long	331
	.long	337
	.long	347
	.long	349
	.long	353
	.long	359
	.long	367
	.long	373
	.long	379
	.long	383
	.long	389
	.long	397
	.long	401
	.long	409
	.long	419
	.long	421
	.long	431
	.long	433
	.long	439
	.long	443
	.long	449
	.long	457
	.long	461
	.long	463
	.long	467
	.long	479
	.long	487
	.long	491
	.long	499
	.long	503
	.long	509
	.long	521
	.long	523
	.long	541
	.long	547
	.long	557
	.long	563
	.long	569
	.long	571
	.long	577
	.long	587
	.long	593
	.long	599
	.long	601
	.long	607
	.long	613
	.long	617
	.long	619
	.long	631
	.long	641
	.long	643
	.long	647
	.long	653
	.long	659
	.long	661
	.long	673
	.long	677
	.long	683
	.long	691
	.long	701
	.long	709
	.long	719
	.long	727
	.long	733
	.long	739
	.long	743
	.long	751
	.long	757
	.long	761
	.long	769
	.long	773
	.long	787
	.long	797
	.long	809
	.long	811
	.long	821
	.long	823
	.long	827
	.long	829
	.long	839
	.long	853
	.zero	227812
	.globl	sqp
	.align 32
	.type	sqp, @object
	.size	sqp, 588
sqp:
	.long	4
	.long	9
	.long	25
	.long	49
	.long	121
	.long	169
	.long	289
	.long	361
	.long	529
	.long	841
	.long	961
	.long	1369
	.long	1681
	.long	1849
	.long	2209
	.long	2809
	.long	3481
	.long	3721
	.long	4489
	.long	5041
	.long	5329
	.long	6241
	.long	6889
	.long	7921
	.long	9409
	.long	10201
	.long	10609
	.long	11449
	.long	11881
	.long	12769
	.long	16129
	.long	17161
	.long	18769
	.long	19321
	.long	22201
	.long	22801
	.long	24649
	.long	26569
	.long	27889
	.long	29929
	.long	32041
	.long	32761
	.long	36481
	.long	37249
	.long	38809
	.long	39601
	.long	44521
	.long	49729
	.long	51529
	.long	52441
	.long	54289
	.long	57121
	.long	58081
	.long	63001
	.long	66049
	.long	69169
	.long	72361
	.long	73441
	.long	76729
	.long	78961
	.long	80089
	.long	85849
	.long	94249
	.long	96721
	.long	97969
	.long	100489
	.long	109561
	.long	113569
	.long	120409
	.long	121801
	.long	124609
	.long	128881
	.long	134689
	.long	139129
	.long	143641
	.long	146689
	.long	151321
	.long	157609
	.long	160801
	.long	167281
	.long	175561
	.long	177241
	.long	185761
	.long	187489
	.long	192721
	.long	196249
	.long	201601
	.long	208849
	.long	212521
	.long	214369
	.long	218089
	.long	229441
	.long	237169
	.long	241081
	.long	249001
	.long	253009
	.long	259081
	.long	271441
	.long	273529
	.long	292681
	.long	299209
	.long	310249
	.long	316969
	.long	323761
	.long	326041
	.long	332929
	.long	344569
	.long	351649
	.long	358801
	.long	361201
	.long	368449
	.long	375769
	.long	380689
	.long	383161
	.long	398161
	.long	410881
	.long	413449
	.long	418609
	.long	426409
	.long	434281
	.long	436921
	.long	452929
	.long	458329
	.long	466489
	.long	477481
	.long	491401
	.long	502681
	.long	516961
	.long	528529
	.long	537289
	.long	546121
	.long	552049
	.long	564001
	.long	573049
	.long	579121
	.long	591361
	.long	597529
	.long	619369
	.long	635209
	.long	654481
	.long	657721
	.long	674041
	.long	677329
	.long	683929
	.long	687241
	.long	703921
	.long	727609
	.text
	.globl	sieve
	.type	sieve, @function
sieve:
.LFB0:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	$1, -12(%rbp)
	jmp	.L2
.L5:
	movl	-12(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	prime(%rip), %rax
	movl	(%rdx,%rax), %eax
	movl	%eax, -4(%rbp)
	movl	-12(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	sqp(%rip), %rax
	movl	(%rdx,%rax), %eax
	movl	%eax, -8(%rbp)
	jmp	.L3
.L4:
	movl	-8(%rbp), %eax
	cltq
	leaq	tbl(%rip), %rdx
	movb	$1, (%rax,%rdx)
	movl	-4(%rbp), %eax
	addl	%eax, -8(%rbp)
.L3:
	cmpl	$707105, -8(%rbp)
	jle	.L4
	addl	$1, -12(%rbp)
.L2:
	cmpl	$146, -12(%rbp)
	jle	.L5
	movl	$146, sz(%rip)
	movl	$853, -12(%rbp)
	jmp	.L6
.L8:
	movl	-12(%rbp), %eax
	cltq
	leaq	tbl(%rip), %rdx
	movzbl	(%rax,%rdx), %eax
	testb	%al, %al
	jne	.L7
	movl	sz(%rip), %eax
	leal	1(%rax), %edx
	movl	%edx, sz(%rip)
	cltq
	leaq	0(,%rax,4), %rcx
	leaq	prime(%rip), %rdx
	movl	-12(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
.L7:
	addl	$2, -12(%rbp)
.L6:
	cmpl	$707106, -12(%rbp)
	jle	.L8
	nop
	nop
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	sieve, .-sieve
	.globl	base
	.bss
	.align 32
	.type	base, @object
	.size	base, 4000008
base:
	.zero	4000008
	.globl	idx
	.align 32
	.type	idx, @object
	.size	idx, 4000008
idx:
	.zero	4000008
	.globl	pp
	.align 32
	.type	pp, @object
	.size	pp, 328
pp:
	.zero	328
	.text
	.globl	bsch
	.type	bsch, @function
bsch:
.LFB1:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	%edi, -20(%rbp)
	movl	$0, -12(%rbp)
	movl	sz(%rip), %eax
	movl	%eax, -8(%rbp)
	jmp	.L10
.L14:
	movl	-12(%rbp), %edx
	movl	-8(%rbp), %eax
	addl	%edx, %eax
	sarl	%eax
	movl	%eax, -4(%rbp)
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	prime(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	%eax, -20(%rbp)
	jne	.L11
	movl	-4(%rbp), %eax
	jmp	.L12
.L11:
	movl	-4(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	prime(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	%eax, -20(%rbp)
	jle	.L13
	movl	-4(%rbp), %eax
	addl	$1, %eax
	movl	%eax, -12(%rbp)
	jmp	.L10
.L13:
	movl	-4(%rbp), %eax
	movl	%eax, -8(%rbp)
.L10:
	movl	-12(%rbp), %eax
	cmpl	-8(%rbp), %eax
	jl	.L14
	movl	-12(%rbp), %eax
	subl	$1, %eax
.L12:
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE1:
	.size	bsch, .-bsch
	.section	.rodata
.LC0:
	.string	"%lld%lld"
.LC1:
	.string	"0"
.LC2:
	.string	"%d\n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB2:
	.cfi_startproc
	endbr64
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	subq	$96, %rsp
	movq	%fs:40, %rax
	movq	%rax, -8(%rbp)
	xorl	%eax, %eax
	movl	$0, %eax
	call	sieve
	leaq	-56(%rbp), %rdx
	leaq	-64(%rbp), %rax
	movq	%rax, %rsi
	leaq	.LC0(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	__isoc99_scanf@PLT
	movq	-64(%rbp), %rax
	movq	-56(%rbp), %rdx
	subq	%rdx, %rax
	movq	%rax, -48(%rbp)
	movq	-64(%rbp), %rdx
	movq	-56(%rbp), %rax
	addq	%rdx, %rax
	movq	%rax, -24(%rbp)
	cmpq	$1, -24(%rbp)
	jg	.L16
	leaq	.LC1(%rip), %rax
	movq	%rax, %rdi
	call	puts@PLT
	movl	$0, %eax
	jmp	.L33
.L16:
	cmpq	$1, -48(%rbp)
	jg	.L18
	movq	$2, -48(%rbp)
.L18:
	movq	-24(%rbp), %rax
	sarq	%rax
	pxor	%xmm1, %xmm1
	cvtsi2sdq	%rax, %xmm1
	movq	%xmm1, %rax
	movq	%rax, %xmm0
	call	sqrt@PLT
	cvttsd2sil	%xmm0, %eax
	movl	%eax, %edi
	call	bsch
	movl	%eax, sz(%rip)
	movl	$4000008, %edx
	movl	$1, %esi
	leaq	idx(%rip), %rax
	movq	%rax, %rdi
	call	memset@PLT
	movl	$0, -84(%rbp)
	jmp	.L19
.L30:
	movl	-84(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	prime(%rip), %rax
	movl	(%rdx,%rax), %eax
	movl	%eax, -72(%rbp)
	movl	$1, -80(%rbp)
	movl	-72(%rbp), %eax
	cltq
	movq	%rax, -40(%rbp)
	jmp	.L20
.L21:
	movl	-80(%rbp), %eax
	leal	1(%rax), %edx
	movl	%edx, -80(%rbp)
	cltq
	leaq	0(,%rax,8), %rcx
	leaq	pp(%rip), %rdx
	movq	-40(%rbp), %rax
	movq	%rax, (%rcx,%rdx)
	movl	-72(%rbp), %eax
	cltq
	movq	-40(%rbp), %rdx
	imulq	%rdx, %rax
	movq	%rax, -40(%rbp)
.L20:
	movq	-40(%rbp), %rax
	cmpq	-24(%rbp), %rax
	jle	.L21
	jmp	.L22
.L29:
	movl	-80(%rbp), %eax
	cltq
	leaq	0(,%rax,8), %rdx
	leaq	pp(%rip), %rax
	movq	(%rdx,%rax), %rax
	movq	%rax, -40(%rbp)
	movq	-48(%rbp), %rax
	subq	$1, %rax
	cqto
	idivq	-40(%rbp)
	leaq	1(%rax), %rdx
	movq	-40(%rbp), %rax
	imulq	%rdx, %rax
	movq	%rax, -32(%rbp)
	movq	-24(%rbp), %rax
	cqto
	idivq	-40(%rbp)
	movq	%rax, %rdx
	movq	-40(%rbp), %rax
	imulq	%rdx, %rax
	movq	%rax, -16(%rbp)
	jmp	.L23
.L28:
	movq	-32(%rbp), %rax
	movl	%eax, %edx
	movq	-48(%rbp), %rax
	movl	%eax, %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
	movl	%eax, -68(%rbp)
	movl	-68(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	idx(%rip), %rax
	movl	(%rdx,%rax), %eax
	testl	%eax, %eax
	je	.L35
	movl	-68(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	base(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	%eax, -72(%rbp)
	je	.L35
	movl	-68(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	idx(%rip), %rax
	movl	(%rdx,%rax), %eax
	cmpl	%eax, -80(%rbp)
	jle	.L27
	movl	-68(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	idx(%rip), %rax
	movl	$0, (%rdx,%rax)
	jmp	.L26
.L27:
	movl	-68(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rcx
	leaq	base(%rip), %rdx
	movl	-72(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
	movl	-68(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rcx
	leaq	idx(%rip), %rdx
	movl	-80(%rbp), %eax
	movl	%eax, (%rcx,%rdx)
	jmp	.L26
.L35:
	nop
.L26:
	movq	-40(%rbp), %rax
	addq	%rax, -32(%rbp)
.L23:
	movq	-32(%rbp), %rax
	cmpq	-16(%rbp), %rax
	jle	.L28
.L22:
	subl	$1, -80(%rbp)
	cmpl	$0, -80(%rbp)
	jne	.L29
	addl	$1, -84(%rbp)
.L19:
	movl	sz(%rip), %eax
	cmpl	%eax, -84(%rbp)
	jle	.L30
	movl	$0, -76(%rbp)
	movq	-24(%rbp), %rax
	movl	%eax, %edx
	movq	-48(%rbp), %rax
	movl	%eax, %ecx
	movl	%edx, %eax
	subl	%ecx, %eax
	addl	$1, %eax
	movl	%eax, -84(%rbp)
	jmp	.L31
.L32:
	movl	-84(%rbp), %eax
	cltq
	leaq	0(,%rax,4), %rdx
	leaq	idx(%rip), %rax
	movl	(%rdx,%rax), %eax
	testl	%eax, %eax
	je	.L31
	addl	$1, -76(%rbp)
.L31:
	movl	-84(%rbp), %eax
	leal	-1(%rax), %edx
	movl	%edx, -84(%rbp)
	testl	%eax, %eax
	jne	.L32
	movl	-76(%rbp), %eax
	movl	%eax, %esi
	leaq	.LC2(%rip), %rax
	movq	%rax, %rdi
	movl	$0, %eax
	call	printf@PLT
	movl	$0, %eax
.L33:
	movq	-8(%rbp), %rdx
	subq	%fs:40, %rdx
	je	.L34
	call	__stack_chk_fail@PLT
.L34:
	leave
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE2:
	.size	main, .-main
	.ident	"GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
	.section	.note.GNU-stack,"",@progbits
	.section	.note.gnu.property,"a"
	.align 8
	.long	1f - 0f
	.long	4f - 1f
	.long	5
0:
	.string	"GNU"
1:
	.align 8
	.long	0xc0000002
	.long	3f - 2f
2:
	.long	0x3
3:
	.align 8
4:
