// File: andrakis[P]alisp/atoms.cpp
// Function: ALisp::Atoms::Declare(char const*)
Cell Declare(const char *name) EXCEPT {
			if (Exists(name))
				return Get(name);
			AtomType id = detail::atom_counter++;
			AtomCell atom(id);
			detail::atom_to_cell.emplace(id, atom);
			detail::atom_to_string.emplace(id, StringType(name));
			detail::string_to_atom.emplace(StringType(name), id);
			return atom;
		}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x120, %rsp            # imm = 0x120
movq %rdi, -0xc8(%rbp)
movq %rdi, %rax
movq %rax, -0xc0(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x17ae0
movb %al, -0xb1(%rbp)
jmp 0x18015
movb -0xb1(%rbp), %al
testb $0x1, %al
jne 0x18021
jmp 0x18049
movq -0xc8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x17d70
jmp 0x18033
jmp 0x1825a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x1824b
movq 0x3f9b8(%rip), %rax     # 0x57a08
movq %rax, %rcx
incq %rcx
movq %rcx, 0x3f9ab(%rip)     # 0x57a08
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x18660
jmp 0x18070
leaq 0x3f961(%rip), %rdi     # 0x579d8
leaq -0x28(%rbp), %rsi
leaq -0x30(%rbp), %rdx
callq 0x186c0
movb %dl, -0xd1(%rbp)
movq %rax, -0xd0(%rbp)
jmp 0x18093
movb -0xd1(%rbp), %al
movq -0xd0(%rbp), %rcx
movq %rcx, -0x40(%rbp)
movb %al, -0x38(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0xe8(%rbp)
leaq -0x61(%rbp), %rdi
movq %rdi, -0xe0(%rbp)
callq 0x87d0
movq -0xe8(%rbp), %rsi
movq -0xe0(%rbp), %rdx
leaq -0x60(%rbp), %rdi
callq 0x8610
jmp 0x180db
leaq 0x3f896(%rip), %rdi     # 0x57978
leaq -0x28(%rbp), %rsi
leaq -0x60(%rbp), %rdx
callq 0x18710
movb %dl, -0xf1(%rbp)
movq %rax, -0xf0(%rbp)
jmp 0x180fe
movb -0xf1(%rbp), %al
movq -0xf0(%rbp), %rcx
movq %rcx, -0x78(%rbp)
movb %al, -0x70(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x8878
leaq -0x61(%rbp), %rdi
callq 0x8490
movq -0x10(%rbp), %rax
movq %rax, -0x108(%rbp)
leaq -0x99(%rbp), %rdi
movq %rdi, -0x100(%rbp)
callq 0x87d0
movq -0x108(%rbp), %rsi
movq -0x100(%rbp), %rdx
leaq -0x98(%rbp), %rdi
callq 0x8610
jmp 0x1815e
leaq 0x3f843(%rip), %rdi     # 0x579a8
leaq -0x98(%rbp), %rsi
leaq -0x28(%rbp), %rdx
callq 0x18760
movb %dl, -0x111(%rbp)
movq %rax, -0x110(%rbp)
jmp 0x18184
movb -0x111(%rbp), %al
movq -0x110(%rbp), %rcx
movq %rcx, -0xb0(%rbp)
movb %al, -0xa8(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x8878
leaq -0x99(%rbp), %rdi
callq 0x8490
movq -0xc8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0xbd50
leaq -0x30(%rbp), %rdi
callq 0x187b0
jmp 0x1825a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x18242
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x18205
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x60(%rbp), %rdi
callq 0x8878
leaq -0x61(%rbp), %rdi
callq 0x8490
jmp 0x18242
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x18236
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x98(%rbp), %rdi
callq 0x8878
leaq -0x99(%rbp), %rdi
callq 0x8490
leaq -0x30(%rbp), %rdi
callq 0x187b0
cmpl $0x0, -0x1c(%rbp)
jge 0x1826a
movq -0x18(%rbp), %rdi
callq 0x8590
movq -0xc0(%rbp), %rax
addq $0x120, %rsp            # imm = 0x120
popq %rbp
retq
movq -0x18(%rbp), %rdi
callq 0x87b0
nopw %cs:(%rax,%rax)
nopl (%rax)