// File: /workspace/github_c_makefile_star2_O2/chatziko-k08[P]lecture-code/programs/fibonacci/fibonacci_test.c
// Function: test_fibonacci
void test_fibonacci(void) {
	// genius
	TEST_ASSERT(syllables_no(lateralus[ 0]) == fibonacci(1));
	TEST_ASSERT(syllables_no(lateralus[ 1]) == fibonacci(2));
	TEST_ASSERT(syllables_no(lateralus[ 2]) == fibonacci(3));
	TEST_ASSERT(syllables_no(lateralus[ 3]) == fibonacci(4));
	TEST_ASSERT(syllables_no(lateralus[ 4]) == fibonacci(5));
	TEST_ASSERT(syllables_no(lateralus[ 5]) == fibonacci(6));
	TEST_ASSERT(syllables_no(lateralus[ 6]) == fibonacci(5));
	TEST_ASSERT(syllables_no(lateralus[ 7]) == fibonacci(4));

	TEST_ASSERT(syllables_no(lateralus[ 8]) == fibonacci(7));
	TEST_ASSERT(syllables_no(lateralus[ 9]) == fibonacci(6));
	TEST_ASSERT(syllables_no(lateralus[10]) == fibonacci(5));
	TEST_ASSERT(syllables_no(lateralus[11]) == fibonacci(4));

	TEST_ASSERT(syllables_no(lateralus[12]) == fibonacci(1));
	TEST_ASSERT(syllables_no(lateralus[13]) == fibonacci(2));
	TEST_ASSERT(syllables_no(lateralus[14]) == fibonacci(3));
	TEST_ASSERT(syllables_no(lateralus[15]) == fibonacci(4));
	TEST_ASSERT(syllables_no(lateralus[16]) == fibonacci(5));
	TEST_ASSERT(syllables_no(lateralus[17]) == fibonacci(6));
	TEST_ASSERT(syllables_no(lateralus[18]) == fibonacci(5));
	TEST_ASSERT(syllables_no(lateralus[19]) == fibonacci(4));
	TEST_ASSERT(syllables_no(lateralus[20]) == fibonacci(3));
	TEST_ASSERT(syllables_no(lateralus[21]) == fibonacci(2));

	TEST_ASSERT(syllables_no(lateralus[22]) == fibonacci(2));
	TEST_ASSERT(syllables_no(lateralus[23]) == fibonacci(3));
	TEST_ASSERT(syllables_no(lateralus[24]) == fibonacci(4));
	TEST_ASSERT(syllables_no(lateralus[25]) == fibonacci(5));
	TEST_ASSERT(syllables_no(lateralus[26]) == fibonacci(6));

	TEST_ASSERT(syllables_no(lateralus[27]) == fibonacci(7));
	TEST_ASSERT(syllables_no(lateralus[28]) == fibonacci(6));
	TEST_ASSERT(syllables_no(lateralus[29]) == fibonacci(5));
	TEST_ASSERT(syllables_no(lateralus[30]) == fibonacci(4));

	// Και κάποια μεγάλα
	TEST_ASSERT(fibonacci(20) == 6765);
	TEST_ASSERT(fibonacci(30) == 832040);
	TEST_ASSERT(fibonacci(45) == 1134903170);

	fibonacci_destroy();
}

// Assembly:
pushq %rbx
movq 0x56e3(%rip), %rdi      # 0x9170
callq 0x3a67
movl %eax, %ebx
pushq $0x1
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x19a9(%rip), %rsi      # 0x5454
leaq 0x1fc7(%rip), %rcx      # 0x5a79
leaq 0x19ac(%rip), %r8       # 0x5465
pushq $0x3f
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x56a6(%rip), %rdi      # 0x9178
callq 0x3a67
movl %eax, %ebx
pushq $0x2
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x1964(%rip), %rsi      # 0x5454
leaq 0x1f82(%rip), %rcx      # 0x5a79
leaq 0x1993(%rip), %r8       # 0x5491
pushq $0x40
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x5669(%rip), %rdi      # 0x9180
callq 0x3a67
movl %eax, %ebx
pushq $0x3
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x191f(%rip), %rsi      # 0x5454
leaq 0x1f3d(%rip), %rcx      # 0x5a79
leaq 0x197a(%rip), %r8       # 0x54bd
pushq $0x41
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x562c(%rip), %rdi      # 0x9188
callq 0x3a67
movl %eax, %ebx
pushq $0x4
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x18da(%rip), %rsi      # 0x5454
leaq 0x1ef8(%rip), %rcx      # 0x5a79
leaq 0x1961(%rip), %r8       # 0x54e9
pushq $0x42
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x55ef(%rip), %rdi      # 0x9190
callq 0x3a67
movl %eax, %ebx
pushq $0x5
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x1895(%rip), %rsi      # 0x5454
leaq 0x1eb3(%rip), %rcx      # 0x5a79
leaq 0x1948(%rip), %r8       # 0x5515
pushq $0x43
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x55b2(%rip), %rdi      # 0x9198
callq 0x3a67
movl %eax, %ebx
pushq $0x6
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x1850(%rip), %rsi      # 0x5454
leaq 0x1e6e(%rip), %rcx      # 0x5a79
leaq 0x192f(%rip), %r8       # 0x5541
pushq $0x44
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x5575(%rip), %rdi      # 0x91a0
callq 0x3a67
movl %eax, %ebx
pushq $0x5
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x180b(%rip), %rsi      # 0x5454
leaq 0x1e29(%rip), %rcx      # 0x5a79
leaq 0x1916(%rip), %r8       # 0x556d
pushq $0x45
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x5538(%rip), %rdi      # 0x91a8
callq 0x3a67
movl %eax, %ebx
pushq $0x4
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x17c6(%rip), %rsi      # 0x5454
leaq 0x1de4(%rip), %rcx      # 0x5a79
leaq 0x18fd(%rip), %r8       # 0x5599
pushq $0x46
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x54fb(%rip), %rdi      # 0x91b0
callq 0x3a67
movl %eax, %ebx
pushq $0x7
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x1781(%rip), %rsi      # 0x5454
leaq 0x1d9f(%rip), %rcx      # 0x5a79
leaq 0x18e4(%rip), %r8       # 0x55c5
pushq $0x48
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x54be(%rip), %rdi      # 0x91b8
callq 0x3a67
movl %eax, %ebx
pushq $0x6
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x173c(%rip), %rsi      # 0x5454
leaq 0x1d5a(%rip), %rcx      # 0x5a79
leaq 0x18cb(%rip), %r8       # 0x55f1
pushq $0x49
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x5481(%rip), %rdi      # 0x91c0
callq 0x3a67
movl %eax, %ebx
pushq $0x5
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x16f7(%rip), %rsi      # 0x5454
leaq 0x1d15(%rip), %rcx      # 0x5a79
leaq 0x18b2(%rip), %r8       # 0x561d
pushq $0x4a
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x5444(%rip), %rdi      # 0x91c8
callq 0x3a67
movl %eax, %ebx
pushq $0x4
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x16b2(%rip), %rsi      # 0x5454
leaq 0x1cd0(%rip), %rcx      # 0x5a79
leaq 0x1899(%rip), %r8       # 0x5649
pushq $0x4b
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x5407(%rip), %rdi      # 0x91d0
callq 0x3a67
movl %eax, %ebx
pushq $0x1
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x166d(%rip), %rsi      # 0x5454
leaq 0x1c8b(%rip), %rcx      # 0x5a79
leaq 0x1880(%rip), %r8       # 0x5675
pushq $0x4d
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x53ca(%rip), %rdi      # 0x91d8
callq 0x3a67
movl %eax, %ebx
pushq $0x2
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x1628(%rip), %rsi      # 0x5454
leaq 0x1c46(%rip), %rcx      # 0x5a79
leaq 0x1867(%rip), %r8       # 0x56a1
pushq $0x4e
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x538d(%rip), %rdi      # 0x91e0
callq 0x3a67
movl %eax, %ebx
pushq $0x3
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x15e3(%rip), %rsi      # 0x5454
leaq 0x1c01(%rip), %rcx      # 0x5a79
leaq 0x184e(%rip), %r8       # 0x56cd
pushq $0x4f
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x5350(%rip), %rdi      # 0x91e8
callq 0x3a67
movl %eax, %ebx
pushq $0x4
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x159e(%rip), %rsi      # 0x5454
leaq 0x1bbc(%rip), %rcx      # 0x5a79
leaq 0x1835(%rip), %r8       # 0x56f9
pushq $0x50
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x5313(%rip), %rdi      # 0x91f0
callq 0x3a67
movl %eax, %ebx
pushq $0x5
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x1559(%rip), %rsi      # 0x5454
leaq 0x1b77(%rip), %rcx      # 0x5a79
leaq 0x181c(%rip), %r8       # 0x5725
pushq $0x51
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x52d6(%rip), %rdi      # 0x91f8
callq 0x3a67
movl %eax, %ebx
pushq $0x6
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x1514(%rip), %rsi      # 0x5454
leaq 0x1b32(%rip), %rcx      # 0x5a79
leaq 0x1803(%rip), %r8       # 0x5751
pushq $0x52
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x5299(%rip), %rdi      # 0x9200
callq 0x3a67
movl %eax, %ebx
pushq $0x5
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x14cf(%rip), %rsi      # 0x5454
leaq 0x1aed(%rip), %rcx      # 0x5a79
leaq 0x17ea(%rip), %r8       # 0x577d
pushq $0x53
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x525c(%rip), %rdi      # 0x9208
callq 0x3a67
movl %eax, %ebx
pushq $0x4
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x148a(%rip), %rsi      # 0x5454
leaq 0x1aa8(%rip), %rcx      # 0x5a79
leaq 0x17d1(%rip), %r8       # 0x57a9
pushq $0x54
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x521f(%rip), %rdi      # 0x9210
callq 0x3a67
movl %eax, %ebx
pushq $0x3
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x1445(%rip), %rsi      # 0x5454
leaq 0x1a63(%rip), %rcx      # 0x5a79
leaq 0x17b8(%rip), %r8       # 0x57d5
pushq $0x55
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x51e2(%rip), %rdi      # 0x9218
callq 0x3a67
movl %eax, %ebx
pushq $0x2
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x1400(%rip), %rsi      # 0x5454
leaq 0x1a1e(%rip), %rcx      # 0x5a79
leaq 0x179f(%rip), %r8       # 0x5801
pushq $0x56
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x51a5(%rip), %rdi      # 0x9220
callq 0x3a67
movl %eax, %ebx
pushq $0x2
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x13bb(%rip), %rsi      # 0x5454
leaq 0x19d9(%rip), %rcx      # 0x5a79
leaq 0x1786(%rip), %r8       # 0x582d
pushq $0x58
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x5168(%rip), %rdi      # 0x9228
callq 0x3a67
movl %eax, %ebx
pushq $0x3
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x1376(%rip), %rsi      # 0x5454
leaq 0x1994(%rip), %rcx      # 0x5a79
leaq 0x176d(%rip), %r8       # 0x5859
pushq $0x59
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x512b(%rip), %rdi      # 0x9230
callq 0x3a67
movl %eax, %ebx
pushq $0x4
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x1331(%rip), %rsi      # 0x5454
leaq 0x194f(%rip), %rcx      # 0x5a79
leaq 0x1754(%rip), %r8       # 0x5885
pushq $0x5a
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x50ee(%rip), %rdi      # 0x9238
callq 0x3a67
movl %eax, %ebx
pushq $0x5
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x12ec(%rip), %rsi      # 0x5454
leaq 0x190a(%rip), %rcx      # 0x5a79
leaq 0x173b(%rip), %r8       # 0x58b1
pushq $0x5b
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x50b1(%rip), %rdi      # 0x9240
callq 0x3a67
movl %eax, %ebx
pushq $0x6
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x12a7(%rip), %rsi      # 0x5454
leaq 0x18c5(%rip), %rcx      # 0x5a79
leaq 0x1722(%rip), %r8       # 0x58dd
pushq $0x5c
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x5074(%rip), %rdi      # 0x9248
callq 0x3a67
movl %eax, %ebx
pushq $0x7
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x1262(%rip), %rsi      # 0x5454
leaq 0x1880(%rip), %rcx      # 0x5a79
leaq 0x1709(%rip), %r8       # 0x5909
pushq $0x5e
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x5037(%rip), %rdi      # 0x9250
callq 0x3a67
movl %eax, %ebx
pushq $0x6
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x121d(%rip), %rsi      # 0x5454
leaq 0x183b(%rip), %rcx      # 0x5a79
leaq 0x16f0(%rip), %r8       # 0x5935
pushq $0x5f
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x4ffa(%rip), %rdi      # 0x9258
callq 0x3a67
movl %eax, %ebx
pushq $0x5
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x11d8(%rip), %rsi      # 0x5454
leaq 0x17f6(%rip), %rcx      # 0x5a79
leaq 0x16d7(%rip), %r8       # 0x5961
pushq $0x60
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
movq 0x4fbd(%rip), %rdi      # 0x9260
callq 0x3a67
movl %eax, %ebx
pushq $0x4
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl %eax, %ebx
sete %dil
leaq 0x1193(%rip), %rsi      # 0x5454
leaq 0x17b1(%rip), %rcx      # 0x5a79
leaq 0x16be(%rip), %r8       # 0x598d
pushq $0x61
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
pushq $0x14
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl $0x1a6d, %eax           # imm = 0x1A6D
sete %dil
leaq 0x1159(%rip), %rsi      # 0x5454
leaq 0x1777(%rip), %rcx      # 0x5a79
leaq 0x16b0(%rip), %r8       # 0x59b9
pushq $0x64
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
pushq $0x1e
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl $0xcb228, %eax          # imm = 0xCB228
sete %dil
leaq 0x1123(%rip), %rsi      # 0x5454
leaq 0x1741(%rip), %rcx      # 0x5a79
leaq 0x1690(%rip), %r8       # 0x59cf
pushq $0x65
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
pushq $0x2d
popq %rdi
callq 0x48c0
xorl %edi, %edi
cmpl $0x43a53f82, %eax       # imm = 0x43A53F82
sete %dil
leaq 0x10ed(%rip), %rsi      # 0x5454
leaq 0x170b(%rip), %rcx      # 0x5a79
leaq 0x1672(%rip), %r8       # 0x59e7
pushq $0x66
popq %rdx
xorl %eax, %eax
callq 0x239c
testl %eax, %eax
je 0x438b
xorl %eax, %eax
popq %rbx
jmp 0x493e
callq 0x2bc0