// File: martinda3[P]Compiler/src/ASprog.cpp
// Function: toyc::ASprog::toString[abi:cxx11]()
std::string ASprog::toString()
	{
	    std::string tester;
		if (numDefinitions == 0) return "program([])";
		std::string s = "<< Abstract Syntax >>\nprogram(\n";
		indent();
		s += spaces() + "sourceCodeFile(" + name + "),\n";
		s += spaces() + "[\n";
		indent();
		if (numDefinitions > 0)
		{
			s += (definitionList[0]->toString());
			for (int i = 1; i < numDefinitions; i++)
			{
				s += "\n" + definitionList[i]->toString();
			}
		}
		outdent();
		s += "\n" + spaces() + "]\n";
		outdent();
		s += ")\n<< Abstract Syntax >>\n";
		return s;
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x200, %rsp            # imm = 0x200
movq %rdi, -0x1f0(%rbp)
movq %rdi, %rax
movq %rax, -0x1e8(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x1e0(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x9480
movq -0x1e0(%rbp), %rax
cmpl $0x0, 0xfb0(%rax)
jne 0x2e463
leaq -0x31(%rbp), %rdi
movq %rdi, -0x1f8(%rbp)
callq 0x95c0
movq -0x1f0(%rbp), %rdi
movq -0x1f8(%rbp), %rdx
leaq 0x68b3(%rip), %rsi      # 0x34ce0
callq 0x13550
jmp 0x2e434
leaq -0x31(%rbp), %rdi
callq 0x93b0
movl $0x1, -0x48(%rbp)
jmp 0x2e8da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x31(%rbp), %rdi
callq 0x93b0
jmp 0x2e8f3
movb $0x0, -0x49(%rbp)
leaq -0x4a(%rbp), %rdi
movq %rdi, -0x200(%rbp)
callq 0x95c0
movq -0x1f0(%rbp), %rdi
movq -0x200(%rbp), %rdx
leaq 0x6860(%rip), %rsi      # 0x34cec
callq 0x13550
jmp 0x2e493
leaq -0x4a(%rbp), %rdi
callq 0x93b0
callq 0x1bd10
jmp 0x2e4a3
leaq -0xd0(%rbp), %rdi
callq 0x1bce0
jmp 0x2e4b1
leaq 0x6854(%rip), %rdx      # 0x34d0c
leaq -0xb0(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0xcc00
jmp 0x2e4cd
movq -0x1e0(%rbp), %rdx
addq $0xfb8, %rdx            # imm = 0xFB8
leaq -0x90(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x1adf0
jmp 0x2e4f0
leaq 0x6825(%rip), %rdx      # 0x34d1c
leaq -0x70(%rbp), %rdi
leaq -0x90(%rbp), %rsi
callq 0xcc00
jmp 0x2e509
movq -0x1f0(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x9450
jmp 0x2e51b
leaq -0x70(%rbp), %rdi
callq 0x9658
leaq -0x90(%rbp), %rdi
callq 0x9658
leaq -0xb0(%rbp), %rdi
callq 0x9658
leaq -0xd0(%rbp), %rdi
callq 0x9658
leaq -0x110(%rbp), %rdi
callq 0x1bce0
jmp 0x2e556
leaq 0x6758(%rip), %rdx      # 0x34cb5
leaq -0xf0(%rbp), %rdi
leaq -0x110(%rbp), %rsi
callq 0xcc00
jmp 0x2e572
movq -0x1f0(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0x9450
jmp 0x2e587
leaq -0xf0(%rbp), %rdi
callq 0x9658
leaq -0x110(%rbp), %rdi
callq 0x9658
callq 0x1bd10
jmp 0x2e5a6
movq -0x1e0(%rbp), %rax
cmpl $0x0, 0xfb0(%rax)
jle 0x2e7bb
movq -0x1e0(%rbp), %rax
movq 0x10(%rax), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x130(%rbp), %rdi
callq *%rax
jmp 0x2e5d6
movq -0x1f0(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0x9450
jmp 0x2e5eb
leaq -0x130(%rbp), %rdi
callq 0x9658
movl $0x1, -0x134(%rbp)
movq -0x1e0(%rbp), %rcx
movl -0x134(%rbp), %eax
cmpl 0xfb0(%rcx), %eax
jge 0x2e7b9
movq -0x1e0(%rbp), %rax
movslq -0x134(%rbp), %rcx
movq 0x10(%rax,%rcx,8), %rsi
movq (%rsi), %rax
movq (%rax), %rax
leaq -0x178(%rbp), %rdi
callq *%rax
jmp 0x2e63e
leaq 0x59a5(%rip), %rsi      # 0x33fea
leaq -0x158(%rbp), %rdi
leaq -0x178(%rbp), %rdx
callq 0x14400
jmp 0x2e65a
movq -0x1f0(%rbp), %rdi
leaq -0x158(%rbp), %rsi
callq 0x9450
jmp 0x2e66f
leaq -0x158(%rbp), %rdi
callq 0x9658
leaq -0x178(%rbp), %rdi
callq 0x9658
movl -0x134(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x134(%rbp)
jmp 0x2e601
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x4a(%rbp), %rdi
callq 0x93b0
jmp 0x2e8f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2e8cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2e71d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2e711
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2e705
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x70(%rbp), %rdi
callq 0x9658
leaq -0x90(%rbp), %rdi
callq 0x9658
leaq -0xb0(%rbp), %rdi
callq 0x9658
leaq -0xd0(%rbp), %rdi
callq 0x9658
jmp 0x2e8cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2e754
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x9658
leaq -0x110(%rbp), %rdi
callq 0x9658
jmp 0x2e8cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x130(%rbp), %rdi
callq 0x9658
jmp 0x2e8cc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2e7a8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x158(%rbp), %rdi
callq 0x9658
leaq -0x178(%rbp), %rdi
callq 0x9658
jmp 0x2e8cc
jmp 0x2e7bb
callq 0x1bd30
jmp 0x2e7c2
leaq -0x1d8(%rbp), %rdi
callq 0x1bce0
jmp 0x2e7d0
leaq 0x5813(%rip), %rsi      # 0x33fea
leaq -0x1b8(%rbp), %rdi
leaq -0x1d8(%rbp), %rdx
callq 0x14400
jmp 0x2e7ec
leaq 0x64d4(%rip), %rdx      # 0x34cc7
leaq -0x198(%rbp), %rdi
leaq -0x1b8(%rbp), %rsi
callq 0xcc00
jmp 0x2e808
movq -0x1f0(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0x9450
jmp 0x2e81d
leaq -0x198(%rbp), %rdi
callq 0x9658
leaq -0x1b8(%rbp), %rdi
callq 0x9658
leaq -0x1d8(%rbp), %rdi
callq 0x9658
callq 0x1bd30
jmp 0x2e848
movq -0x1f0(%rbp), %rdi
leaq 0x64ca(%rip), %rsi      # 0x34d20
callq 0x9330
jmp 0x2e85d
movb $0x1, -0x49(%rbp)
movl $0x1, -0x48(%rbp)
testb $0x1, -0x49(%rbp)
jne 0x2e8ca
jmp 0x2e8be
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2e8b0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
jmp 0x2e8a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x40(%rbp)
movl %eax, -0x44(%rbp)
leaq -0x198(%rbp), %rdi
callq 0x9658
leaq -0x1b8(%rbp), %rdi
callq 0x9658
leaq -0x1d8(%rbp), %rdi
callq 0x9658
jmp 0x2e8cc
movq -0x1f0(%rbp), %rdi
callq 0x9658
jmp 0x2e8da
movq -0x1f0(%rbp), %rdi
callq 0x9658
jmp 0x2e8f3
leaq -0x30(%rbp), %rdi
callq 0x9658
movq -0x1e8(%rbp), %rax
addq $0x200, %rsp            # imm = 0x200
popq %rbp
retq
leaq -0x30(%rbp), %rdi
callq 0x9658
movq -0x40(%rbp), %rdi
callq 0x95b0
nopw %cs:(%rax,%rax)