// File: /workspace/github_cpp_makefile_star2_O1/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 %r12
pushq %rbx
subq $0xf8, %rsp
movq %rdi, %rbx
movsd %xmm1, 0x10(%rsp)
movsd %xmm0, 0x8(%rsp)
movq 0x4cb2(%rip), %r14      # 0xafd8
leaq 0x1fab(%rip), %r15      # 0x82d8
movl $0x1, %edx
movq %r14, %rdi
movq %r15, %rsi
callq 0x21e0
leaq 0x21b5(%rip), %rsi      # 0x84f9
movl $0x1b, %edx
movq %r14, %rdi
callq 0x21e0
movl $0x1, %edx
movq %r14, %rdi
movq %r15, %rsi
callq 0x21e0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21d0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2120
leaq 0x1f6d(%rip), %rsi      # 0x82fc
movl $0x11, %edx
movq %r14, %rdi
callq 0x21e0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21d0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2120
leaq 0x1f44(%rip), %rsi      # 0x830e
movl $0xe, %edx
movq %r14, %rdi
callq 0x21e0
movq %r14, %rdi
movsd 0x8(%rsp), %xmm0
callq 0x2260
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x21d0
movsbl %al, %esi
movq %r12, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2120
leaq 0x1f07(%rip), %rsi      # 0x831d
movl $0x12, %edx
movq %r14, %rdi
callq 0x21e0
movq %r14, %rdi
movsd 0x10(%rsp), %xmm0
callq 0x2260
movq %rax, %r12
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x21d0
movsbl %al, %esi
movq %r12, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2120
movl $0x1, %edx
movq %r14, %rdi
movq %r15, %rsi
callq 0x21e0
leaq 0x1ed9(%rip), %rsi      # 0x834b
movl $0x14, %edx
movq %r14, %rdi
callq 0x21e0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21d0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2120
leaq 0x70(%rsp), %rdi
movsd 0x1dcd(%rip), %xmm0     # 0x8280
movsd 0x1dd5(%rip), %xmm2     # 0x8290
movsd 0x8(%rsp), %xmm1
callq 0x6f9a
movq %rbx, %rdi
callq 0x2b8a
movq 0x4b03(%rip), %rdi      # 0xafd8
leaq 0x1dfc(%rip), %rsi      # 0x82d8
movl $0x1, %edx
callq 0x21e0
movq 0x4aeb(%rip), %r14      # 0xafd8
leaq 0x1e6c(%rip), %rsi      # 0x8360
movl $0x18, %edx
movq %r14, %rdi
callq 0x21e0
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x21d0
movsbl %al, %esi
movq 0x4ab9(%rip), %rdi      # 0xafd8
callq 0x2040
movq %rax, %rdi
callq 0x2120
leaq 0x18(%rsp), %rdi
leaq 0x70(%rsp), %rsi
movsd 0x1d5a(%rip), %xmm1     # 0x8298
movsd 0x8(%rsp), %xmm0
movl $0x1, %edx
callq 0x6d5c
movq %rbx, %rdi
callq 0x2b8a
movq 0x4a7b(%rip), %rdi      # 0xafd8
leaq 0x1d74(%rip), %rsi      # 0x82d8
movl $0x1, %edx
callq 0x21e0
movq 0x4a63(%rip), %rdi      # 0xafd8
leaq 0x1e5e(%rip), %rsi      # 0x83da
movl $0x15, %edx
callq 0x21e0
movq 0x4a4b(%rip), %rdi      # 0xafd8
movsd 0x8(%rsp), %xmm0
callq 0x2260
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21d0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2120
movq 0x4a0f(%rip), %r14      # 0xafd8
leaq 0x1f45(%rip), %rsi      # 0x8515
movl $0x21, %edx
movq %r14, %rdi
callq 0x21e0
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x21d0
movsbl %al, %esi
movq 0x49dd(%rip), %rdi      # 0xafd8
callq 0x2040
movq %rax, %rdi
callq 0x2120
leaq 0x18(%rsp), %rdi
movsd 0x10(%rsp), %xmm0
movl $0x64, %esi
callq 0x3d80
movq %rbx, %rdi
callq 0x2b8a
movq 0x49ac(%rip), %rdi      # 0xafd8
leaq 0x1ca5(%rip), %rsi      # 0x82d8
movl $0x1, %edx
callq 0x21e0
movq 0x4994(%rip), %r14      # 0xafd8
leaq 0x1db6(%rip), %rsi      # 0x8401
movl $0x17, %edx
movq %r14, %rdi
callq 0x21e0
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x21d0
movsbl %al, %esi
movq 0x4962(%rip), %rdi      # 0xafd8
callq 0x2040
movq %rax, %rdi
callq 0x2120
movq 0x494e(%rip), %r14      # 0xafd8
leaq 0x1c6b(%rip), %rsi      # 0x82fc
movl $0x11, %edx
movq %r14, %rdi
callq 0x21e0
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x21d0
movsbl %al, %esi
movq 0x491c(%rip), %rdi      # 0xafd8
callq 0x2040
movq %rax, %rdi
callq 0x2120
movsd 0x30(%rsp), %xmm0
movsd %xmm0, 0x8(%rsp)
movq 0x48fc(%rip), %rdi      # 0xafd8
leaq 0x1d36(%rip), %rsi      # 0x8419
movl $0xb, %edx
callq 0x21e0
movq 0x48e4(%rip), %rdi      # 0xafd8
movsd 0x8(%rsp), %xmm0
callq 0x2260
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21d0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2120
movq 0x48a8(%rip), %rdi      # 0xafd8
leaq 0x1cee(%rip), %rsi      # 0x8425
movl $0x14, %edx
callq 0x21e0
movq 0x4890(%rip), %rdi      # 0xafd8
movl $0x64, %esi
callq 0x2290
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21d0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2120
movsd 0x8(%rsp), %xmm1
mulsd 0x1b46(%rip), %xmm1     # 0x82d0
movsd 0x10(%rsp), %xmm0
divsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
movl %eax, 0x40(%rsp)
movq 0x4835(%rip), %rdi      # 0xafd8
leaq 0x1bfc(%rip), %rsi      # 0x83a6
movl $0x12, %edx
callq 0x21e0
movl 0x40(%rsp), %esi
movq 0x4819(%rip), %rdi      # 0xafd8
callq 0x2290
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x21d0
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2120
leaq 0x18(%rsp), %rdi
movsd 0x10(%rsp), %xmm0
callq 0x3fae
movq %rbx, %rdi
callq 0x2b8a
leaq 0x4593(%rip), %rax      # 0xada0
leaq 0x58(%rsp), %rcx
movq %rax, -0x40(%rcx)
movq -0x10(%rcx), %rdi
cmpq %rcx, %rdi
je 0x6824
callq 0x21b0
leaq 0x455d(%rip), %rax      # 0xad88
leaq 0xb0(%rsp), %rdi
movq %rax, -0x40(%rdi)
callq 0x3008
leaq 0xa0(%rsp), %rdi
callq 0x3008
leaq 0x90(%rsp), %rdi
callq 0x3008
addq $0xf8, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
retq
jmp 0x686b
jmp 0x6872
jmp 0x6872
movq %rax, %rbx
jmp 0x6893
jmp 0x6872
movq %rax, %rbx
leaq 0x4524(%rip), %rax      # 0xada0
leaq 0x58(%rsp), %rcx
movq %rax, -0x40(%rcx)
movq -0x10(%rcx), %rdi
cmpq %rcx, %rdi
je 0x6893
callq 0x21b0
leaq 0x70(%rsp), %rdi
callq 0x7042
movq %rbx, %rdi
callq 0x22b0