// File: /workspace/github_cpp_makefile_star2_O3/jstaursky[P]hutch/src/Sleigh/slghsymbol.cc
// Function: SymbolTable::saveXml(std::ostream&) const
void SymbolTable::saveXml(ostream &s) const

{
  s << "<symbol_table";
  s << " scopesize=\"" << dec << table.size() << "\"";
  s << " symbolsize=\"" << symbollist.size() << "\">\n";
  for(int4 i=0;i<table.size();++i) {
    s << "<scope id=\"0x" << hex << table[i]->getId() << "\"";
    s << " parent=\"0x";
    if (table[i]->getParent() == (SymbolScope *)0)
      s << "0";
    else
      s << hex << table[i]->getParent()->getId();
    s << "\"/>\n";
  }

				// First save the headers
  for(int4 i=0;i<symbollist.size();++i)
    symbollist[i]->saveXmlHeader(s);

				// Now save the content of each symbol
  for(int4 i=0;i<symbollist.size();++i) // Must save IN ORDER
    symbollist[i]->saveXml(s);
  s << "</symbol_table>\n";
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r14
leaq 0x1c614(%rip), %rsi     # 0x81080
movl $0xd, %edx
movq %rbx, %rdi
callq 0x40b90
leaq 0x1c60e(%rip), %rsi     # 0x8108e
movl $0xc, %edx
movq %rbx, %rdi
callq 0x40b90
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x2, %ecx
movl %ecx, 0x18(%rbx,%rax)
movq 0x20(%r14), %rsi
subq 0x18(%r14), %rsi
sarq $0x3, %rsi
movq %rbx, %rdi
callq 0x3ffc0
leaq 0x1cb2a(%rip), %rsi     # 0x815e7
movl $0x1, %edx
movq %rax, %rdi
callq 0x40b90
leaq 0x1c5ca(%rip), %rsi     # 0x8109b
movl $0xd, %edx
movq %rbx, %rdi
callq 0x40b90
movq 0x8(%r14), %rsi
subq (%r14), %rsi
sarq $0x3, %rsi
movq %rbx, %rdi
callq 0x3ffc0
leaq 0x1c301(%rip), %rsi     # 0x80df9
movl $0x3, %edx
movq %rax, %rdi
callq 0x40b90
movq 0x20(%r14), %rax
cmpq 0x18(%r14), %rax
je 0x64bf5
xorl %r15d, %r15d
leaq 0x1caca(%rip), %r12     # 0x815e7
leaq 0x1c593(%rip), %r13     # 0x810b7
leaq 0x1bce9(%rip), %rbp     # 0x80814
movl $0xd, %edx
movq %rbx, %rdi
leaq 0x1c56f(%rip), %rsi     # 0x810a9
callq 0x40b90
movq (%rbx), %rax
movq -0x18(%rax), %rax
movl 0x18(%rbx,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%rbx,%rax)
movq 0x18(%r14), %rax
movq (%rax,%r15,8), %rax
movl 0x38(%rax), %esi
movq %rbx, %rdi
callq 0x3ffc0
movl $0x1, %edx
movq %rax, %rdi
movq %r12, %rsi
callq 0x40b90
movl $0xb, %edx
movq %rbx, %rdi
movq %r13, %rsi
callq 0x40b90
movq 0x18(%r14), %rax
movq (%rax,%r15,8), %rax
movq (%rax), %rax
testq %rax, %rax
je 0x64bb9
movq (%rbx), %rcx
movq -0x18(%rcx), %rcx
movl 0x18(%rbx,%rcx), %edx
andl $-0x4b, %edx
orl $0x8, %edx
movl %edx, 0x18(%rbx,%rcx)
movl 0x38(%rax), %esi
movq %rbx, %rdi
callq 0x3ffc0
jmp 0x64bcd
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x1af7e(%rip), %rsi     # 0x7fb46
callq 0x40b90
movl $0x4, %edx
movq %rbx, %rdi
movq %rbp, %rsi
callq 0x40b90
incq %r15
movq 0x20(%r14), %rax
subq 0x18(%r14), %rax
sarq $0x3, %rax
cmpq %r15, %rax
ja 0x64b2b
movq (%r14), %rax
movq 0x8(%r14), %rcx
cmpq %rax, %rcx
je 0x64c2a
xorl %r15d, %r15d
movq (%rax,%r15,8), %rdi
movq (%rdi), %rax
movq %rbx, %rsi
callq *0x18(%rax)
incq %r15
movq (%r14), %rax
movq 0x8(%r14), %rcx
movq %rcx, %rdx
subq %rax, %rdx
sarq $0x3, %rdx
cmpq %r15, %rdx
ja 0x64c04
cmpq %rax, %rcx
je 0x64c55
xorl %r15d, %r15d
movq (%rax,%r15,8), %rdi
movq (%rdi), %rax
movq %rbx, %rsi
callq *0x20(%rax)
incq %r15
movq (%r14), %rax
movq 0x8(%r14), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
cmpq %r15, %rcx
ja 0x64c32
leaq 0x1c467(%rip), %rsi     # 0x810c3
movl $0x10, %edx
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x40b90
nop