// File: /workspace/github_cpp_makefile_star2_O2/FR13ndSDP[P]NHT/Solver.cpp
// Function: solve(std::vector<double, std::allocator<double>>, std::vector<double, std::allocator<double>>, std::vector<double, std::allocator<double>>, std::vector<double, std::allocator<double>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, double)
Vec solve(Vec aW, Vec aP, Vec aE, Vec Su, string s, double p)
{
    if (s.compare("TDMA") == 0)
    {
        return TDMA(aW, aP, aE, Su);
    }
    else if (s.compare("jacobi") == 0)
    {
        return jacobi(aW, aP, aE, Su, p);
    }
    else
    {
        return guassSeidel(aW, aP, aE, Su, p);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x138, %rsp            # imm = 0x138
movsd %xmm0, -0x40(%rbp)
movq %r9, %r14
movq %r8, %r12
movq %rcx, %rbx
movq %rdx, %r13
movq %rsi, %r15
movq %rdi, -0x38(%rbp)
leaq 0xfe7(%rip), %rsi       # 0x5100
movq %r9, %rdi
callq 0x2080
testl %eax, %eax
je 0x41ac
leaq 0x10a0(%rip), %rsi      # 0x51d0
movq %r14, %rdi
callq 0x2080
testl %eax, %eax
je 0x4216
leaq -0xa0(%rbp), %rdi
movq %rdi, -0x30(%rbp)
movq %r15, %rsi
callq 0x2dde
leaq -0x88(%rbp), %r15
movq %r15, %rdi
movq %r13, %rsi
callq 0x2dde
leaq -0x70(%rbp), %r13
movq %r13, %rdi
movq %rbx, %rsi
callq 0x2dde
leaq -0x58(%rbp), %rbx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x2dde
leaq -0xa0(%rbp), %r12
movq -0x38(%rbp), %r14
movq %r14, %rdi
movq %r12, %rsi
movq %r15, %rdx
movq %r13, %rcx
movq %rbx, %r8
movsd -0x40(%rbp), %xmm0
callq 0x3eb7
jmp 0x4283
leaq -0x160(%rbp), %rdi
movq %rdi, -0x30(%rbp)
movq %r15, %rsi
callq 0x2dde
leaq -0x148(%rbp), %r15
movq %r15, %rdi
movq %r13, %rsi
callq 0x2dde
leaq -0x130(%rbp), %r13
movq %r13, %rdi
movq %rbx, %rsi
callq 0x2dde
leaq -0x118(%rbp), %rbx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x2dde
leaq -0x160(%rbp), %r12
movq -0x38(%rbp), %r14
movq %r14, %rdi
movq %r12, %rsi
movq %r15, %rdx
movq %r13, %rcx
movq %rbx, %r8
callq 0x3aec
jmp 0x4283
leaq -0x100(%rbp), %rdi
movq %rdi, -0x30(%rbp)
movq %r15, %rsi
callq 0x2dde
leaq -0xe8(%rbp), %r15
movq %r15, %rdi
movq %r13, %rsi
callq 0x2dde
leaq -0xd0(%rbp), %r13
movq %r13, %rdi
movq %rbx, %rsi
callq 0x2dde
leaq -0xb8(%rbp), %rbx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x2dde
leaq -0x100(%rbp), %r12
movq -0x38(%rbp), %r14
movq %r14, %rdi
movq %r12, %rsi
movq %r15, %rdx
movq %r13, %rcx
movq %rbx, %r8
movsd -0x40(%rbp), %xmm0
callq 0x3c88
movq %rbx, %rdi
callq 0x2e7e
movq %r13, %rdi
callq 0x2e7e
movq %r15, %rdi
callq 0x2e7e
movq %r12, %rdi
callq 0x2e7e
movq %r14, %rax
addq $0x138, %rsp            # imm = 0x138
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0xb8(%rbp), %rdi
callq 0x2e7e
jmp 0x42cc
movq %rax, %rbx
leaq -0xd0(%rbp), %rdi
callq 0x2e7e
jmp 0x42dd
movq %rax, %rbx
leaq -0xe8(%rbp), %rdi
jmp 0x433e
jmp 0x4345
movq %rax, %rbx
leaq -0x118(%rbp), %rdi
callq 0x2e7e
jmp 0x42fc
movq %rax, %rbx
leaq -0x130(%rbp), %rdi
callq 0x2e7e
jmp 0x430d
movq %rax, %rbx
leaq -0x148(%rbp), %rdi
jmp 0x433e
jmp 0x4345
movq %rax, %rbx
leaq -0x58(%rbp), %rdi
callq 0x2e7e
jmp 0x4329
movq %rax, %rbx
leaq -0x70(%rbp), %rdi
callq 0x2e7e
jmp 0x4337
movq %rax, %rbx
leaq -0x88(%rbp), %rdi
callq 0x2e7e
jmp 0x4348
movq %rax, %rbx
movq -0x30(%rbp), %rdi
callq 0x2e7e
movq %rbx, %rdi
callq 0x2290