// File: /workspace/github_cpp_makefile_star2_O2/joraso[P]Glassius/Protocol.cpp
// Function: Protocol::LennardJonesTest(double, double, Stopwatch*)
void Protocol::LennardJonesTest(double Temp, double relax, Stopwatch* timer){

    std::cout <<"\n"<< "Testing Lennard-Jones Fluid" <<"\n"<< std::endl;
    std::cout << "Using Parameters:" << std::endl;
    std::cout << "Temperature = " << Temp << std::endl;
    std::cout << "RelaxationTime =  " << relax << std::endl;
    
    double rho = 1000 / (9.4*9.4*9.4);
    
    std::cout << "\n" << "Setting up System..." << std::endl;
    Fluid System(rho, Temp, 10);
    timer->StampComplete();
    
    std::cout << "\n" << "Setting up Simulation..." << std::endl;
    Verlet Simulation(&System, Temp, 0.01, 1);
    timer->StampComplete();
    
    std::cout << "\n" << "Equilibrating at T = " << Temp << std::endl;
    std::cout << "Thermostating every 100 timesteps" << std::endl;
    Simulation.Equilibrate(relax, 100);
    timer->StampComplete();
    
    std::cout << "\n" << "Begining Production Run" << std::endl;
    std::cout << "Using Parameters:" << std::endl;
    double dt = Simulation.Getdt();
    std::cout << "Timestep = " << dt << std::endl;
    int Npoints = 100;
    std::cout << "Total Data Points = " << Npoints << std::endl;
    int Nrec = int( relax / (dt*Npoints) );
    Simulation.SetRecord(Nrec);
    std::cout << "Recording every = " << Simulation.GetRecord() << std::endl;
    Simulation.Run(relax);
    timer->StampComplete();
    
    return;
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0xf0, %rsp
movq %rdi, %rbx
movsd %xmm1, 0x8(%rsp)
movsd %xmm0, (%rsp)
movq 0x3ec9(%rip), %r14      # 0x8fd0
leaq 0x11d2(%rip), %r15      # 0x62e0
movq %r14, %rdi
movq %r15, %rsi
callq 0x2150
leaq 0x13e1(%rip), %rsi      # 0x6501
movq %rax, %rdi
callq 0x2150
movq %rax, %rdi
movq %r15, %rsi
callq 0x2150
movq %rax, %rdi
callq 0x20c0
leaq 0x11c2(%rip), %rsi      # 0x6304
movq %r14, %rdi
callq 0x2150
movq %rax, %rdi
callq 0x20c0
leaq 0x11bd(%rip), %rsi      # 0x6316
movq %r14, %rdi
callq 0x2150
movq %rax, %rdi
movsd (%rsp), %xmm0
callq 0x21c0
movq %rax, %rdi
callq 0x20c0
leaq 0x11a8(%rip), %rsi      # 0x6325
movq %r14, %rdi
callq 0x2150
movq %rax, %rdi
movsd 0x8(%rsp), %xmm0
callq 0x21c0
movq %rax, %rdi
callq 0x20c0
movq %r14, %rdi
movq %r15, %rsi
callq 0x2150
leaq 0x11a6(%rip), %rsi      # 0x6353
movq %rax, %rdi
callq 0x2150
movq %rax, %rdi
callq 0x20c0
leaq 0x68(%rsp), %rdi
movsd 0x10b6(%rip), %xmm0     # 0x6280
movsd 0x10be(%rip), %xmm2     # 0x6290
movsd (%rsp), %xmm1
callq 0x57f4
movq %rbx, %rdi
callq 0x294a
movq 0x3de5(%rip), %rdi      # 0x8fd0
leaq 0x10ee(%rip), %rsi      # 0x62e0
callq 0x2150
leaq 0x116a(%rip), %rsi      # 0x6368
movq %rax, %rdi
callq 0x2150
movq %rax, %rdi
callq 0x20c0
leaq 0x10(%rsp), %rdi
leaq 0x68(%rsp), %rsi
movsd 0x1078(%rip), %xmm1     # 0x6298
pushq $0x1
popq %rdx
movsd (%rsp), %xmm0
callq 0x56ba
movq %rbx, %rdi
callq 0x294a
movq 0x3d94(%rip), %rdi      # 0x8fd0
leaq 0x109d(%rip), %rsi      # 0x62e0
callq 0x2150
leaq 0x1193(%rip), %rsi      # 0x63e2
movq %rax, %rdi
callq 0x2150
movq %rax, %rdi
movsd (%rsp), %xmm0
callq 0x21c0
movq %rax, %rdi
callq 0x20c0
movq 0x3d5d(%rip), %rdi      # 0x8fd0
leaq 0x12a3(%rip), %rsi      # 0x651d
callq 0x2150
movq %rax, %rdi
callq 0x20c0
leaq 0x10(%rsp), %rdi
pushq $0x64
popq %rsi
movsd 0x8(%rsp), %xmm0
callq 0x3968
movq %rbx, %rdi
callq 0x294a
movq 0x3d27(%rip), %rdi      # 0x8fd0
leaq 0x1030(%rip), %rsi      # 0x62e0
callq 0x2150
leaq 0x114d(%rip), %rsi      # 0x6409
movq %rax, %rdi
callq 0x2150
movq %rax, %rdi
callq 0x20c0
movq 0x3cfd(%rip), %rdi      # 0x8fd0
leaq 0x102a(%rip), %rsi      # 0x6304
callq 0x2150
movq %rax, %rdi
callq 0x20c0
movsd 0x28(%rsp), %xmm0
movsd %xmm0, (%rsp)
movq 0x3cd7(%rip), %rdi      # 0x8fd0
leaq 0x1121(%rip), %rsi      # 0x6421
callq 0x2150
movq %rax, %rdi
movsd (%rsp), %xmm0
callq 0x21c0
movq %rax, %rdi
callq 0x20c0
movq 0x3caf(%rip), %rdi      # 0x8fd0
leaq 0x1105(%rip), %rsi      # 0x642d
callq 0x2150
pushq $0x64
popq %rsi
movq %rax, %rdi
callq 0x21e0
movq %rax, %rdi
callq 0x20c0
movsd (%rsp), %xmm1
mulsd 0xf8b(%rip), %xmm1      # 0x62d8
movsd 0x8(%rsp), %xmm0
divsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movl %eax, 0x38(%rsp)
movq 0x3c6a(%rip), %rdi      # 0x8fd0
leaq 0x1041(%rip), %rsi      # 0x63ae
callq 0x2150
movl 0x38(%rsp), %esi
movq %rax, %rdi
callq 0x21e0
movq %rax, %rdi
callq 0x20c0
leaq 0x10(%rsp), %rdi
movsd 0x8(%rsp), %xmm0
callq 0x3b24
movq %rbx, %rdi
callq 0x294a
leaq 0x10(%rsp), %rdi
callq 0x56f8
leaq 0x68(%rsp), %rdi
callq 0x589c
addq $0xf0, %rsp
popq %rbx
popq %r14
popq %r15
retq
jmp 0x53c5
jmp 0x53cc
jmp 0x53cc
movq %rax, %rbx
jmp 0x53d9
jmp 0x53cc
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x56f8
leaq 0x68(%rsp), %rdi
callq 0x589c
movq %rbx, %rdi
callq 0x2200