// File: /workspace/github_cpp_makefile_star2_O1/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), %r13
movq %r13, -0x10(%r13)
movq (%rdi), %rsi
movq 0x8(%rdi), %rdx
addq %rsi, %rdx
leaq -0xf0(%rbp), %r14
movq %r14, %rdi
callq 0x391e
xorl %edi, %edi
movq %r14, %rsi
callq 0xdec2
movq -0xf0(%rbp), %rdi
cmpq %r13, %rdi
je 0x107fa
movq -0xe0(%rbp), %rsi
incq %rsi
callq 0x2200
leaq 0x4e13(%rip), %rax      # 0x15614
movl (%rax), %r15d
testl %r15d, %r15d
jle 0x10907
leaq -0xc0(%rbp), %r13
xorl %r14d, %r14d
incl %r14d
movq %r13, -0xd0(%rbp)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq -0xd0(%rbp), %r15
movq %r15, %rdi
callq 0x391e
movl %r14d, %edi
movq %r15, %rsi
callq 0xfd58
movq -0xd0(%rbp), %rdi
cmpq %r13, %rdi
leaq -0xa0(%rbp), %r15
je 0x10867
movq -0xc0(%rbp), %rsi
incq %rsi
callq 0x2200
movq %r15, -0xb0(%rbp)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq -0xb0(%rbp), %r12
movq %r12, %rdi
callq 0x391e
movl %r14d, %edi
movq %r12, %rsi
callq 0x101af
movq -0xb0(%rbp), %rdi
cmpq %r15, %rdi
je 0x108ad
movq -0xa0(%rbp), %rsi
incq %rsi
callq 0x2200
leaq -0x80(%rbp), %r15
movq %r15, -0x90(%rbp)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
leaq -0x90(%rbp), %r12
movq %r12, %rdi
callq 0x391e
movl %r14d, %edi
movq %r12, %rsi
callq 0xdec2
movq -0x90(%rbp), %rdi
cmpq %r15, %rdi
je 0x108f4
movq -0x80(%rbp), %rsi
incq %rsi
callq 0x2200
leaq 0x4d19(%rip), %rax      # 0x15614
movl (%rax), %r15d
cmpl %r15d, %r14d
jl 0x10817
testl %r15d, %r15d
jle 0x109b0
leaq -0x40(%rbp), %rax
leaq -0x60(%rbp), %r14
incl %r15d
movq %rbx, -0x30(%rbp)
leal -0x2(%r15), %r12d
movq %rax, -0x50(%rbp)
movq (%rbx), %rsi
movq 0x8(%rbx), %rdx
addq %rsi, %rdx
movq %rax, %rbx
leaq -0x50(%rbp), %rdi
callq 0x391e
movl %r12d, %r13d
movl %r12d, %edi
leaq -0x50(%rbp), %rsi
callq 0x10606
movq -0x50(%rbp), %rdi
cmpq %rbx, %rdi
je 0x10961
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x2200
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 0x391e
movl %r13d, %edi
movq %r12, %rsi
callq 0xdec2
movq -0x70(%rbp), %rdi
cmpq %r14, %rdi
je 0x1099f
movq -0x60(%rbp), %rsi
incq %rsi
callq 0x2200
decl %r15d
cmpl $0x1, %r15d
leaq -0x40(%rbp), %rax
jg 0x1091f
addq $0xc8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r12
movq -0xf0(%rbp), %rdi
jmp 0x109fa
movq %rax, %r12
movq -0x50(%rbp), %rdi
cmpq %rbx, %rdi
movq %rbx, %r13
jne 0x10a1f
jmp 0x10a2b
movq %rax, %r12
movq -0x70(%rbp), %rdi
movq %r14, %r13
cmpq %r14, %rdi
jne 0x10a1f
jmp 0x10a2b
movq %rax, %r12
movq -0xd0(%rbp), %rdi
cmpq %r13, %rdi
jne 0x10a1f
jmp 0x10a2b
movq %rax, %r12
movq -0xb0(%rbp), %rdi
jmp 0x10a17
movq %rax, %r12
movq -0x90(%rbp), %rdi
movq %r15, %r13
cmpq %r15, %rdi
je 0x10a2b
movq (%r13), %rsi
incq %rsi
callq 0x2200
movq %r12, %rdi
callq 0x2340