// File: /workspace/github_cpp_makefile_star2_O2/richardposner[P]BioNetFit2/src/code/Swarm.cpp
// Function: Swarm::runSSA()
void Swarm::runSSA() {
	if (options.verbosity >= 3) {
		cout << "Running an asynchronous PSADE fit" << endl;
	}

	// Initialize and/or fill our parameter vectors
	vector<unsigned int> isLocal = vector<unsigned int>(options.swarmSize, 0);
	vector<float> particleTemps = vector<float>(options.swarmSize + 1, 0);
	vector<float> particleRadii = vector<float>(options.swarmSize + 1, 0);
	vector<float> particleFs = generateParticleFs();
	vector<float> particleCRs = generateParticleCRs();
	vector<float> cpuToParticle = vector<float>(options.swarmSize + 1, 0);
	vector<vector<float> > trialParams = vector<vector<float> >(options.swarmSize + 1, vector<float>(2, 0));

	// Launch the initialization population and map
	// CPUs to particles
	for (int p = 1; p <= options.swarmSize; ++p) {
		launchParticle(p);
		cpuToParticle[p] = p;
	}

	unordered_map<unsigned int, vector<double> > finishedParticles;
	int numFinishedParticles = 0;

	// Wait for initialization population to finish simulations
	while (numFinishedParticles < options.swarmSize) {


	}
}

// Assembly:
pushq %r14
pushq %rbx
subq $0xe8, %rsp
movq %rdi, %rbx
cmpl $0x3, 0x1614(%rdi)
jb 0x6f537
movq 0xf6a75(%rip), %rdi     # 0x165f98
leaq 0x6f859(%rip), %rsi     # 0xded83
callq 0x289f0
movq %rax, %rdi
callq 0x284a0
movslq 0x1620(%rbx), %rsi
leaq 0x8(%rsp), %r14
andl $0x0, (%r14)
leaq 0xd0(%rsp), %rdi
leaq 0xa0(%rsp), %rcx
movq %r14, %rdx
callq 0x86150
movslq 0x1620(%rbx), %rsi
incq %rsi
andl $0x0, (%r14)
leaq 0xa0(%rsp), %rdi
leaq 0x8(%rsp), %rdx
leaq 0x88(%rsp), %rcx
callq 0x8694c
movslq 0x1620(%rbx), %rsi
incq %rsi
leaq 0x8(%rsp), %rdx
andl $0x0, (%rdx)
leaq 0x88(%rsp), %rdi
leaq 0x70(%rsp), %rcx
callq 0x8694c
leaq 0x70(%rsp), %rdi
movq %rbx, %rsi
callq 0x8250a
leaq 0xb8(%rsp), %rdi
movq %rbx, %rsi
callq 0x8257a
movslq 0x1620(%rbx), %rsi
incq %rsi
leaq 0x8(%rsp), %rdx
andl $0x0, (%rdx)
leaq 0x58(%rsp), %rdi
leaq 0x40(%rsp), %rcx
callq 0x8694c
movslq 0x1620(%rbx), %r14
leaq 0x4(%rsp), %rdx
andl $0x0, (%rdx)
leaq 0x8(%rsp), %rdi
pushq $0x2
popq %rsi
leaq 0x3(%rsp), %rcx
callq 0x8694c
incq %r14
leaq 0x40(%rsp), %rdi
leaq 0x8(%rsp), %rdx
leaq 0x2(%rsp), %rcx
movq %r14, %rsi
callq 0x869a2
leaq 0x8(%rsp), %rdi
callq 0x9cd84
pushq $0x1
popq %r14
movslq 0x1620(%rbx), %rax
cmpq %rax, %r14
jg 0x6f660
movq %rbx, %rdi
movl %r14d, %esi
xorl %edx, %edx
callq 0x764b8
cvtsi2ss %r14d, %xmm0
movq 0x58(%rsp), %rax
movss %xmm0, (%rax,%r14,4)
incq %r14
jmp 0x6f632
leaq 0x38(%rsp), %rax
movq %rax, -0x30(%rax)
movq $0x1, -0x28(%rax)
xorps %xmm0, %xmm0
movups %xmm0, -0x20(%rax)
movl $0x3f800000, -0x10(%rax) # imm = 0x3F800000
movups %xmm0, -0x8(%rax)
leaq 0x8(%rsp), %rdi
callq 0x8b35a
leaq 0x40(%rsp), %rdi
callq 0x86a5a
leaq 0x58(%rsp), %rdi
callq 0x9cd84
leaq 0xb8(%rsp), %rdi
callq 0x9cd84
leaq 0x70(%rsp), %rdi
callq 0x9cd84
leaq 0x88(%rsp), %rdi
callq 0x9cd84
leaq 0xa0(%rsp), %rdi
callq 0x9cd84
leaq 0xd0(%rsp), %rdi
callq 0x5b268
addq $0xe8, %rsp
popq %rbx
popq %r14
retq
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x9cd84
jmp 0x6f724
movq %rax, %rbx
jmp 0x6f724
movq %rax, %rbx
jmp 0x6f72e
movq %rax, %rbx
jmp 0x6f73b
movq %rax, %rbx
jmp 0x6f745
movq %rax, %rbx
jmp 0x6f752
movq %rax, %rbx
jmp 0x6f75f
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x86a5a
leaq 0x58(%rsp), %rdi
callq 0x9cd84
leaq 0xb8(%rsp), %rdi
callq 0x9cd84
leaq 0x70(%rsp), %rdi
callq 0x9cd84
leaq 0x88(%rsp), %rdi
callq 0x9cd84
leaq 0xa0(%rsp), %rdi
callq 0x9cd84
leaq 0xd0(%rsp), %rdi
callq 0x5b268
movq %rbx, %rdi
callq 0x292f0