// File: JD557[P]Wolf/wolf.cpp
// Function: main
int main(int argc,char* argv[]) {
	programCounter=0;
	bool interpreter;
	if (argc!=2) {showHelp();return 1;}
	else if (argv[1][0]=='-' && argv[1][1]=='i') {interpreter=true;}
	else {
		interpreter=false;
		ifstream file(argv[1]);
		string tempstring="";
		while (getline(file,tempstring)) {program.push_back(tempstring);}
	}
	string command;
	while (true) {
		if (interpreter) {cout << programCounter << ": ";}
		if (interpreter && programCounter==program.size()) {
			getline(cin,command);
			program.push_back(command);
		}
		else if (programCounter<program.size()) {
			command=program[programCounter];
			if (interpreter) {cout << command << endl;}
		}
		else {cout << "TERMINATED" << endl;break;}
		command=cleanInput(command);
		if (!line(command)) {cerr << "Error on line " << programCounter << endl;}
		programCounter++;
	}
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x320, %rsp            # imm = 0x320
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq 0xb798(%rip), %rax      # 0xe238
movq $0x0, (%rax)
cmpl $0x2, -0x8(%rbp)
je 0x2abe
callq 0x2590
movl $0x1, -0x4(%rbp)
jmp 0x2ec7
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movsbl (%rax), %eax
cmpl $0x2d, %eax
jne 0x2ae8
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x69, %eax
jne 0x2ae8
movb $0x1, -0x11(%rbp)
jmp 0x2c08
movb $0x0, -0x11(%rbp)
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0x220(%rbp), %rdi
movl $0x8, %edx
callq 0x2340
leaq -0x241(%rbp), %rdi
movq %rdi, -0x2c0(%rbp)
callq 0x2310
movq -0x2c0(%rbp), %rdx
leaq 0x6c72(%rip), %rsi      # 0x9798
leaq -0x240(%rbp), %rdi
callq 0x2ee0
jmp 0x2b34
leaq -0x241(%rbp), %rdi
callq 0x2220
leaq -0x220(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0x2050
movq %rax, -0x2c8(%rbp)
jmp 0x2b5c
movq -0x2c8(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x2280
movb %al, -0x2c9(%rbp)
jmp 0x2b7a
movb -0x2c9(%rbp), %al
testb $0x1, %al
jne 0x2b86
jmp 0x2bdd
leaq 0xb67b(%rip), %rdi      # 0xe208
leaq -0x240(%rbp), %rsi
callq 0x2f90
jmp 0x2b9b
jmp 0x2b40
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x250(%rbp)
movl %eax, -0x254(%rbp)
leaq -0x241(%rbp), %rdi
callq 0x2220
jmp 0x2bf7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x250(%rbp)
movl %eax, -0x254(%rbp)
leaq -0x240(%rbp), %rdi
callq 0x2100
jmp 0x2bf7
leaq -0x240(%rbp), %rdi
callq 0x2100
leaq -0x220(%rbp), %rdi
callq 0x2070
jmp 0x2c08
leaq -0x220(%rbp), %rdi
callq 0x2070
jmp 0x2ed3
jmp 0x2c0a
leaq -0x278(%rbp), %rdi
callq 0x22a0
jmp 0x2c18
testb $0x1, -0x11(%rbp)
je 0x2c6b
leaq 0xb613(%rip), %rax      # 0xe238
movq (%rax), %rsi
movq 0xb399(%rip), %rdi      # 0xdfc8
callq 0x2060
movq %rax, -0x2d8(%rbp)
jmp 0x2c3d
movq -0x2d8(%rbp), %rdi
leaq 0x6b4b(%rip), %rsi      # 0x9796
callq 0x21c0
jmp 0x2c52
jmp 0x2c6b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x250(%rbp)
movl %eax, -0x254(%rbp)
jmp 0x2eb9
testb $0x1, -0x11(%rbp)
je 0x2ccc
leaq 0xb5c0(%rip), %rax      # 0xe238
movq (%rax), %rax
movq %rax, -0x2e0(%rbp)
leaq 0xb57f(%rip), %rdi      # 0xe208
callq 0x3000
movq %rax, %rcx
movq -0x2e0(%rbp), %rax
cmpq %rcx, %rax
jne 0x2ccc
movq 0xb334(%rip), %rdi      # 0xdfd8
leaq -0x278(%rbp), %rsi
callq 0x2050
jmp 0x2cb2
leaq 0xb54f(%rip), %rdi      # 0xe208
leaq -0x278(%rbp), %rsi
callq 0x2f90
jmp 0x2cc7
jmp 0x2d92
leaq 0xb565(%rip), %rax      # 0xe238
movq (%rax), %rax
movq %rax, -0x2e8(%rbp)
leaq 0xb524(%rip), %rdi      # 0xe208
callq 0x3000
movq %rax, %rcx
movq -0x2e8(%rbp), %rax
cmpq %rcx, %rax
jae 0x2d5a
leaq 0xb539(%rip), %rax      # 0xe238
movq (%rax), %rsi
leaq 0xb4ff(%rip), %rdi      # 0xe208
callq 0x3020
movq %rax, %rsi
leaq -0x278(%rbp), %rdi
callq 0x2030
jmp 0x2d1f
testb $0x1, -0x11(%rbp)
je 0x2d58
movq 0xb29c(%rip), %rdi      # 0xdfc8
leaq -0x278(%rbp), %rsi
callq 0x21b0
movq %rax, -0x2f0(%rbp)
jmp 0x2d41
movq -0x2f0(%rbp), %rdi
movq 0xb269(%rip), %rsi      # 0xdfb8
callq 0x2200
jmp 0x2d56
jmp 0x2d58
jmp 0x2d90
movq 0xb267(%rip), %rdi      # 0xdfc8
leaq 0x6a31(%rip), %rsi      # 0x9799
callq 0x21c0
movq %rax, -0x2f8(%rbp)
jmp 0x2d76
movq -0x2f8(%rbp), %rdi
movq 0xb234(%rip), %rsi      # 0xdfb8
callq 0x2200
jmp 0x2d8b
jmp 0x2ea4
jmp 0x2d92
leaq -0x2b8(%rbp), %rdi
leaq -0x278(%rbp), %rsi
callq 0x20b0
jmp 0x2da7
leaq -0x298(%rbp), %rdi
leaq -0x2b8(%rbp), %rsi
callq 0x2930
jmp 0x2dbc
leaq -0x278(%rbp), %rdi
movq %rdi, -0x308(%rbp)
leaq -0x298(%rbp), %rsi
movq %rsi, -0x310(%rbp)
callq 0x2260
movq -0x310(%rbp), %rdi
callq 0x2100
leaq -0x2b8(%rbp), %rdi
callq 0x2100
movq -0x308(%rbp), %rdi
callq 0x4fc0
movb %al, -0x2f9(%rbp)
jmp 0x2e09
movb -0x2f9(%rbp), %al
testb $0x1, %al
jne 0x2e87
jmp 0x2e15
movq 0xb1d4(%rip), %rdi      # 0xdff0
leaq 0x6981(%rip), %rsi      # 0x97a4
callq 0x21c0
movq %rax, -0x318(%rbp)
jmp 0x2e31
movq -0x318(%rbp), %rdi
leaq 0xb3f9(%rip), %rax      # 0xe238
movq (%rax), %rsi
callq 0x2060
movq %rax, -0x320(%rbp)
jmp 0x2e50
movq -0x320(%rbp), %rdi
movq 0xb15a(%rip), %rsi      # 0xdfb8
callq 0x2200
jmp 0x2e65
jmp 0x2e87
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x250(%rbp)
movl %eax, -0x254(%rbp)
leaq -0x2b8(%rbp), %rdi
callq 0x2100
jmp 0x2eb9
leaq 0xb3aa(%rip), %rax      # 0xe238
movq (%rax), %rcx
addq $0x1, %rcx
leaq 0xb39c(%rip), %rax      # 0xe238
movq %rcx, (%rax)
jmp 0x2c16
movl $0x0, -0x4(%rbp)
leaq -0x278(%rbp), %rdi
callq 0x2100
jmp 0x2ec7
leaq -0x278(%rbp), %rdi
callq 0x2100
jmp 0x2ed3
movl -0x4(%rbp), %eax
addq $0x320, %rsp            # imm = 0x320
popq %rbp
retq
movq -0x250(%rbp), %rdi
callq 0x2300
nop