// File: /workspace/github_cpp_makefile_star2_O3/suhasjains[P]AMR-Solver/src/multigrid.cpp
// Function: amrsolver::multigrid(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void multigrid(std::string name) {

     	gauss_seidel(0, name);


	for(int i=1; i<=myOctree::max_level; i++) {
        	prolongate_ghost(i,name);
       		prolongate_domain(i,name);
     		gauss_seidel(i, name);
	}

	for(int i=myOctree::max_level-1; i>=0; i--) {
		restrict(i,name);
		gauss_seidel(i,name);		
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xc8, %rsp
movq %rdi, %rbx
leaq -0xe0(%rbp), %r15
movq %r15, -0x10(%r15)
movq (%rdi), %rsi
movq 0x8(%rdi), %rdx
addq %rsi, %rdx
leaq -0xf0(%rbp), %r14
movq %r14, %rdi
callq 0x39ba
xorl %edi, %edi
movq %r14, %rsi
callq 0xdede
movq -0xf0(%rbp), %rdi
cmpq %r15, %rdi
je 0x106a0
movq -0xe0(%rbp), %rsi
incq %rsi
callq 0x2210
leaq 0x4f7d(%rip), %rax      # 0x15624
cmpl $0x0, (%rax)
jle 0x10853
leaq -0xc0(%rbp), %r15
xorl %r14d, %r14d
incl %r14d
movq %r15, -0xd0(%rbp)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq -0xd0(%rbp), %r13
movq %r13, %rdi
callq 0x39ba
movl %r14d, %edi
movq %r13, %rsi
callq 0xfbd3
movq -0xd0(%rbp), %rdi
cmpq %r15, %rdi
leaq -0xa0(%rbp), %r13
je 0x1070a
movq -0xc0(%rbp), %rsi
incq %rsi
callq 0x2210
movq %r13, -0xb0(%rbp)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq -0xb0(%rbp), %r12
movq %r12, %rdi
callq 0x39ba
movl %r14d, %edi
movq %r12, %rsi
callq 0x1003a
movq -0xb0(%rbp), %rdi
cmpq %r13, %rdi
je 0x10750
movq -0xa0(%rbp), %rsi
incq %rsi
callq 0x2210
leaq -0x80(%rbp), %r13
movq %r13, -0x90(%rbp)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq -0x90(%rbp), %r12
movq %r12, %rdi
callq 0x39ba
movl %r14d, %edi
movq %r12, %rsi
callq 0xdede
movq -0x90(%rbp), %rdi
cmpq %r13, %rdi
je 0x10797
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x2210
leaq 0x4e86(%rip), %rax      # 0x15624
movl (%rax), %r13d
cmpl %r13d, %r14d
jl 0x106ba
testl %r13d, %r13d
jle 0x10853
leaq -0x40(%rbp), %rax
leaq -0x60(%rbp), %r14
incl %r13d
movq %rbx, -0x30(%rbp)
leal -0x2(%r13), %r12d
movq %rax, -0x50(%rbp)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
movq %rax, %rbx
leaq -0x50(%rbp), %rdi
callq 0x39ba
movl %r12d, %r15d
movl %r12d, %edi
leaq -0x50(%rbp), %rsi
callq 0x104a1
movq -0x50(%rbp), %rdi
cmpq %rbx, %rdi
je 0x10804
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x2210
movq %r14, -0x70(%rbp)
movq -0x30(%rbp), %rbx
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq -0x70(%rbp), %r12
movq %r12, %rdi
callq 0x39ba
movl %r15d, %edi
movq %r12, %rsi
callq 0xdede
movq -0x70(%rbp), %rdi
cmpq %r14, %rdi
je 0x10842
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x2210
decl %r13d
cmpl $0x1, %r13d
leaq -0x40(%rbp), %rax
ja 0x107c2
addq $0xc8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r12
movq -0xf0(%rbp), %rdi
jmp 0x1089d
movq %rax, %r12
movq -0x50(%rbp), %rdi
cmpq %rbx, %rdi
movq %rbx, %r15
jne 0x108c2
jmp 0x108cd
movq %rax, %r12
movq -0x70(%rbp), %rdi
movq %r14, %r15
cmpq %r14, %rdi
jne 0x108c2
jmp 0x108cd
movq %rax, %r12
movq -0xd0(%rbp), %rdi
cmpq %r15, %rdi
jne 0x108c2
jmp 0x108cd
movq %rax, %r12
movq -0xb0(%rbp), %rdi
jmp 0x108ba
movq %rax, %r12
movq -0x90(%rbp), %rdi
movq %r13, %r15
cmpq %r13, %rdi
je 0x108cd
movq (%r15), %rsi
incq %rsi
callq 0x2210
movq %r12, %rdi
callq 0x2350