// File: Luthaf[P]zeopp/sphere_approx.cc
// Function: AtomCluster::calc_centerSpheres(double, int)
void AtomCluster::calc_centerSpheres(double shift, int i){

	ATOM new_center;
//Top and bottom 4 (w/ z vertices) 
//Uses existing coordinates from icosidodecahedron 
//Pentagon 1: (0, 0, T), (1/2, +- T/2, (1+T)/2), ((1+T)/2, +-1/2, T/2) 
	new_center = calc_center(atom_vector, i+4, i+6, i+8, i+22, i+24, shift);
	atom_vector.push_back(new_center);
//Pentagon 2: (0, 0, T), (-1/2, +- T/2, (1+T)/2), (-(1+T)/2, +-1/2, T/2) 
	new_center = calc_center(atom_vector, i+4, i+7, i+10, i+23, i+26, shift);
	atom_vector.push_back(new_center);
//Pentagon 3: (0, 0, -T), (1/2, +- T/2, -(1+T)/2), ((1+T)/2, +-1/2, -T/2) 
	new_center = calc_center(atom_vector, i+5, i+9, i+12, i+25, i+28, shift);
	atom_vector.push_back(new_center);
//Pentagon 4: (0, 0, -T), (-1/2, +- T/2, -(1+T)/2), (-(1+T)/2, +-1/2, -T/2) 
	new_center = calc_center(atom_vector, i+5, i+11, i+13, i+27, i+29, shift);
	atom_vector.push_back(new_center);

//mid-top 4 (w/ y vertices)
//Pentagon 5: (+-1/2, T/2, (1+T)/2), (+-T/2, (1+T)/2, 1/2), (0, T, 0)
	new_center = calc_center(atom_vector, i+2, i+6, i+7, i+14, i+15, shift);
	atom_vector.push_back(new_center);
//Pentagon 6: (+-1/2, T/2, -(1+T)/2), (+-T/2, (1+T)/2, -1/2), (0, T, 0)
	new_center = calc_center(atom_vector, i+2, i+9, i+11, i+17, i+19, shift);
	atom_vector.push_back(new_center);
//Pentagon 7: (+-1/2, -T/2, (1+T)/2), (+-T/2, -(1+T)/2, 1/2), (0, -T, 0)
	new_center = calc_center(atom_vector, i+3, i+8, i+10, i+16, i+18, shift);
	atom_vector.push_back(new_center);
//Pentagon 8: (+-1/2, -T/2, -(1+T)/2), (+-T/2, -(1+T)/2, -1/2), (0, -T, 0)
	new_center = calc_center(atom_vector, i+3, i+12, i+13, i+20, i+21, shift);
	atom_vector.push_back(new_center);

//Middle 4 (w/ x vertices) 
//Pentagon 9: (T, 0, 0), (T/2, (1+T)/2, +-1/2), ((1+T)/2, 1/2, +-T/2)
	new_center = calc_center(atom_vector, i, i+14, i+17, i+22, i+25, shift);
	atom_vector.push_back(new_center);
//Pentagon 10: (T, 0, 0), (T/2, -(1+T)/2, +-1/2), ((1+T)/2, -1/2, +-T/2)
	new_center = calc_center(atom_vector, i, i+16, i+20, i+24, i+28, shift);
	atom_vector.push_back(new_center);
//Pentagon 11: (-T, 0, 0), (-T/2, (1+T)/2, +-1/2), (-(1+T)/2, 1/2, +-T/2)
	new_center = calc_center(atom_vector, i+1, i+15, i+19, i+23, i+27, shift);
	atom_vector.push_back(new_center);
//Pentagon 12: (-T, 0, 0), (-T/2, -(1+T)/2, +-1/2), (-(1+T)/2, -1/2, +-T/2)
	new_center = calc_center(atom_vector, i+1, i+18, i+21, i+26, i+29, shift);
	atom_vector.push_back(new_center);
	
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x9e0, %rsp            # imm = 0x9E0
movq %rdi, -0x8(%rbp)
movsd %xmm0, -0x10(%rbp)
movl %esi, -0x14(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x908(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x954b0
movq -0x908(%rbp), %rsi
addq $0x138, %rsi            # imm = 0x138
leaq -0x160(%rbp), %rdi
callq 0xfcf80
jmp 0xf971a
movq -0x908(%rbp), %rsi
movl -0x14(%rbp), %edi
movl %edi, %ecx
addl $0x4, %ecx
movl %edi, %r8d
addl $0x6, %r8d
movl %edi, %r9d
addl $0x8, %r9d
movl %edi, %edx
addl $0x16, %edx
addl $0x18, %edi
movsd -0x10(%rbp), %xmm0
movq %rsp, %rax
movl %edi, 0x8(%rax)
movl %edx, (%rax)
leaq -0x148(%rbp), %rdi
leaq -0x160(%rbp), %rdx
callq 0xfbc00
jmp 0xf9761
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x910(%rbp)
leaq -0x148(%rbp), %rsi
movq %rsi, -0x918(%rbp)
callq 0xfcef0
movq -0x918(%rbp), %rdi
callq 0xf200
leaq -0x160(%rbp), %rdi
callq 0x12310
movq -0x908(%rbp), %rdi
movq -0x910(%rbp), %rsi
addq $0x138, %rdi            # imm = 0x138
callq 0xf190
jmp 0xf97b6
movq -0x908(%rbp), %rsi
addq $0x138, %rsi            # imm = 0x138
leaq -0x220(%rbp), %rdi
callq 0xfcf80
jmp 0xf97d2
movq -0x908(%rbp), %rsi
movl -0x14(%rbp), %edi
movl %edi, %ecx
addl $0x4, %ecx
movl %edi, %r8d
addl $0x7, %r8d
movl %edi, %r9d
addl $0xa, %r9d
movl %edi, %edx
addl $0x17, %edx
addl $0x1a, %edi
movsd -0x10(%rbp), %xmm0
movq %rsp, %rax
movl %edi, 0x8(%rax)
movl %edx, (%rax)
leaq -0x208(%rbp), %rdi
leaq -0x220(%rbp), %rdx
callq 0xfbc00
jmp 0xf9819
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x920(%rbp)
leaq -0x208(%rbp), %rsi
movq %rsi, -0x928(%rbp)
callq 0xfcef0
movq -0x928(%rbp), %rdi
callq 0xf200
leaq -0x220(%rbp), %rdi
callq 0x12310
movq -0x908(%rbp), %rdi
movq -0x920(%rbp), %rsi
addq $0x138, %rdi            # imm = 0x138
callq 0xf190
jmp 0xf986e
movq -0x908(%rbp), %rsi
addq $0x138, %rsi            # imm = 0x138
leaq -0x2d0(%rbp), %rdi
callq 0xfcf80
jmp 0xf988a
movq -0x908(%rbp), %rsi
movl -0x14(%rbp), %edi
movl %edi, %ecx
addl $0x5, %ecx
movl %edi, %r8d
addl $0x9, %r8d
movl %edi, %r9d
addl $0xc, %r9d
movl %edi, %edx
addl $0x19, %edx
addl $0x1c, %edi
movsd -0x10(%rbp), %xmm0
movq %rsp, %rax
movl %edi, 0x8(%rax)
movl %edx, (%rax)
leaq -0x2b8(%rbp), %rdi
leaq -0x2d0(%rbp), %rdx
callq 0xfbc00
jmp 0xf98d1
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x930(%rbp)
leaq -0x2b8(%rbp), %rsi
movq %rsi, -0x938(%rbp)
callq 0xfcef0
movq -0x938(%rbp), %rdi
callq 0xf200
leaq -0x2d0(%rbp), %rdi
callq 0x12310
movq -0x908(%rbp), %rdi
movq -0x930(%rbp), %rsi
addq $0x138, %rdi            # imm = 0x138
callq 0xf190
jmp 0xf9926
movq -0x908(%rbp), %rsi
addq $0x138, %rsi            # imm = 0x138
leaq -0x380(%rbp), %rdi
callq 0xfcf80
jmp 0xf9942
movq -0x908(%rbp), %rsi
movl -0x14(%rbp), %edi
movl %edi, %ecx
addl $0x5, %ecx
movl %edi, %r8d
addl $0xb, %r8d
movl %edi, %r9d
addl $0xd, %r9d
movl %edi, %edx
addl $0x1b, %edx
addl $0x1d, %edi
movsd -0x10(%rbp), %xmm0
movq %rsp, %rax
movl %edi, 0x8(%rax)
movl %edx, (%rax)
leaq -0x368(%rbp), %rdi
leaq -0x380(%rbp), %rdx
callq 0xfbc00
jmp 0xf9989
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x940(%rbp)
leaq -0x368(%rbp), %rsi
movq %rsi, -0x948(%rbp)
callq 0xfcef0
movq -0x948(%rbp), %rdi
callq 0xf200
leaq -0x380(%rbp), %rdi
callq 0x12310
movq -0x908(%rbp), %rdi
movq -0x940(%rbp), %rsi
addq $0x138, %rdi            # imm = 0x138
callq 0xf190
jmp 0xf99de
movq -0x908(%rbp), %rsi
addq $0x138, %rsi            # imm = 0x138
leaq -0x430(%rbp), %rdi
callq 0xfcf80
jmp 0xf99fa
movq -0x908(%rbp), %rsi
movl -0x14(%rbp), %edi
movl %edi, %ecx
addl $0x2, %ecx
movl %edi, %r8d
addl $0x6, %r8d
movl %edi, %r9d
addl $0x7, %r9d
movl %edi, %edx
addl $0xe, %edx
addl $0xf, %edi
movsd -0x10(%rbp), %xmm0
movq %rsp, %rax
movl %edi, 0x8(%rax)
movl %edx, (%rax)
leaq -0x418(%rbp), %rdi
leaq -0x430(%rbp), %rdx
callq 0xfbc00
jmp 0xf9a41
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x950(%rbp)
leaq -0x418(%rbp), %rsi
movq %rsi, -0x958(%rbp)
callq 0xfcef0
movq -0x958(%rbp), %rdi
callq 0xf200
leaq -0x430(%rbp), %rdi
callq 0x12310
movq -0x908(%rbp), %rdi
movq -0x950(%rbp), %rsi
addq $0x138, %rdi            # imm = 0x138
callq 0xf190
jmp 0xf9a96
movq -0x908(%rbp), %rsi
addq $0x138, %rsi            # imm = 0x138
leaq -0x4e0(%rbp), %rdi
callq 0xfcf80
jmp 0xf9ab2
movq -0x908(%rbp), %rsi
movl -0x14(%rbp), %edi
movl %edi, %ecx
addl $0x2, %ecx
movl %edi, %r8d
addl $0x9, %r8d
movl %edi, %r9d
addl $0xb, %r9d
movl %edi, %edx
addl $0x11, %edx
addl $0x13, %edi
movsd -0x10(%rbp), %xmm0
movq %rsp, %rax
movl %edi, 0x8(%rax)
movl %edx, (%rax)
leaq -0x4c8(%rbp), %rdi
leaq -0x4e0(%rbp), %rdx
callq 0xfbc00
jmp 0xf9af9
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x960(%rbp)
leaq -0x4c8(%rbp), %rsi
movq %rsi, -0x968(%rbp)
callq 0xfcef0
movq -0x968(%rbp), %rdi
callq 0xf200
leaq -0x4e0(%rbp), %rdi
callq 0x12310
movq -0x908(%rbp), %rdi
movq -0x960(%rbp), %rsi
addq $0x138, %rdi            # imm = 0x138
callq 0xf190
jmp 0xf9b4e
movq -0x908(%rbp), %rsi
addq $0x138, %rsi            # imm = 0x138
leaq -0x590(%rbp), %rdi
callq 0xfcf80
jmp 0xf9b6a
movq -0x908(%rbp), %rsi
movl -0x14(%rbp), %edi
movl %edi, %ecx
addl $0x3, %ecx
movl %edi, %r8d
addl $0x8, %r8d
movl %edi, %r9d
addl $0xa, %r9d
movl %edi, %edx
addl $0x10, %edx
addl $0x12, %edi
movsd -0x10(%rbp), %xmm0
movq %rsp, %rax
movl %edi, 0x8(%rax)
movl %edx, (%rax)
leaq -0x578(%rbp), %rdi
leaq -0x590(%rbp), %rdx
callq 0xfbc00
jmp 0xf9bb1
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x970(%rbp)
leaq -0x578(%rbp), %rsi
movq %rsi, -0x978(%rbp)
callq 0xfcef0
movq -0x978(%rbp), %rdi
callq 0xf200
leaq -0x590(%rbp), %rdi
callq 0x12310
movq -0x908(%rbp), %rdi
movq -0x970(%rbp), %rsi
addq $0x138, %rdi            # imm = 0x138
callq 0xf190
jmp 0xf9c06
movq -0x908(%rbp), %rsi
addq $0x138, %rsi            # imm = 0x138
leaq -0x640(%rbp), %rdi
callq 0xfcf80
jmp 0xf9c22
movq -0x908(%rbp), %rsi
movl -0x14(%rbp), %edi
movl %edi, %ecx
addl $0x3, %ecx
movl %edi, %r8d
addl $0xc, %r8d
movl %edi, %r9d
addl $0xd, %r9d
movl %edi, %edx
addl $0x14, %edx
addl $0x15, %edi
movsd -0x10(%rbp), %xmm0
movq %rsp, %rax
movl %edi, 0x8(%rax)
movl %edx, (%rax)
leaq -0x628(%rbp), %rdi
leaq -0x640(%rbp), %rdx
callq 0xfbc00
jmp 0xf9c69
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x980(%rbp)
leaq -0x628(%rbp), %rsi
movq %rsi, -0x988(%rbp)
callq 0xfcef0
movq -0x988(%rbp), %rdi
callq 0xf200
leaq -0x640(%rbp), %rdi
callq 0x12310
movq -0x908(%rbp), %rdi
movq -0x980(%rbp), %rsi
addq $0x138, %rdi            # imm = 0x138
callq 0xf190
jmp 0xf9cbe
movq -0x908(%rbp), %rsi
addq $0x138, %rsi            # imm = 0x138
leaq -0x6f0(%rbp), %rdi
callq 0xfcf80
jmp 0xf9cda
movq -0x908(%rbp), %rsi
movl -0x14(%rbp), %ecx
movl %ecx, %r8d
addl $0xe, %r8d
movl %ecx, %r9d
addl $0x11, %r9d
movl %ecx, %edx
addl $0x16, %edx
movl %ecx, %edi
addl $0x19, %edi
movsd -0x10(%rbp), %xmm0
movq %rsp, %rax
movl %edi, 0x8(%rax)
movl %edx, (%rax)
leaq -0x6d8(%rbp), %rdi
leaq -0x6f0(%rbp), %rdx
callq 0xfbc00
jmp 0xf9d1e
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x990(%rbp)
leaq -0x6d8(%rbp), %rsi
movq %rsi, -0x998(%rbp)
callq 0xfcef0
movq -0x998(%rbp), %rdi
callq 0xf200
leaq -0x6f0(%rbp), %rdi
callq 0x12310
movq -0x908(%rbp), %rdi
movq -0x990(%rbp), %rsi
addq $0x138, %rdi            # imm = 0x138
callq 0xf190
jmp 0xf9d73
movq -0x908(%rbp), %rsi
addq $0x138, %rsi            # imm = 0x138
leaq -0x7a0(%rbp), %rdi
callq 0xfcf80
jmp 0xf9d8f
movq -0x908(%rbp), %rsi
movl -0x14(%rbp), %ecx
movl %ecx, %r8d
addl $0x10, %r8d
movl %ecx, %r9d
addl $0x14, %r9d
movl %ecx, %edx
addl $0x18, %edx
movl %ecx, %edi
addl $0x1c, %edi
movsd -0x10(%rbp), %xmm0
movq %rsp, %rax
movl %edi, 0x8(%rax)
movl %edx, (%rax)
leaq -0x788(%rbp), %rdi
leaq -0x7a0(%rbp), %rdx
callq 0xfbc00
jmp 0xf9dd3
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x9a0(%rbp)
leaq -0x788(%rbp), %rsi
movq %rsi, -0x9a8(%rbp)
callq 0xfcef0
movq -0x9a8(%rbp), %rdi
callq 0xf200
leaq -0x7a0(%rbp), %rdi
callq 0x12310
movq -0x908(%rbp), %rdi
movq -0x9a0(%rbp), %rsi
addq $0x138, %rdi            # imm = 0x138
callq 0xf190
jmp 0xf9e28
movq -0x908(%rbp), %rsi
addq $0x138, %rsi            # imm = 0x138
leaq -0x850(%rbp), %rdi
callq 0xfcf80
jmp 0xf9e44
movq -0x908(%rbp), %rsi
movl -0x14(%rbp), %edi
movl %edi, %ecx
incl %ecx
movl %edi, %r8d
addl $0xf, %r8d
movl %edi, %r9d
addl $0x13, %r9d
movl %edi, %edx
addl $0x17, %edx
addl $0x1b, %edi
movsd -0x10(%rbp), %xmm0
movq %rsp, %rax
movl %edi, 0x8(%rax)
movl %edx, (%rax)
leaq -0x838(%rbp), %rdi
leaq -0x850(%rbp), %rdx
callq 0xfbc00
jmp 0xf9e8a
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x9b0(%rbp)
leaq -0x838(%rbp), %rsi
movq %rsi, -0x9b8(%rbp)
callq 0xfcef0
movq -0x9b8(%rbp), %rdi
callq 0xf200
leaq -0x850(%rbp), %rdi
callq 0x12310
movq -0x908(%rbp), %rdi
movq -0x9b0(%rbp), %rsi
addq $0x138, %rdi            # imm = 0x138
callq 0xf190
jmp 0xf9edf
movq -0x908(%rbp), %rsi
addq $0x138, %rsi            # imm = 0x138
leaq -0x900(%rbp), %rdi
callq 0xfcf80
jmp 0xf9efb
movq -0x908(%rbp), %rsi
movl -0x14(%rbp), %edi
movl %edi, %ecx
incl %ecx
movl %edi, %r8d
addl $0x12, %r8d
movl %edi, %r9d
addl $0x15, %r9d
movl %edi, %edx
addl $0x1a, %edx
addl $0x1d, %edi
movsd -0x10(%rbp), %xmm0
movq %rsp, %rax
movl %edi, 0x8(%rax)
movl %edx, (%rax)
leaq -0x8e8(%rbp), %rdi
leaq -0x900(%rbp), %rdx
callq 0xfbc00
jmp 0xf9f41
leaq -0xb0(%rbp), %rdi
movq %rdi, -0x9c0(%rbp)
leaq -0x8e8(%rbp), %rsi
movq %rsi, -0x9c8(%rbp)
callq 0xfcef0
movq -0x9c8(%rbp), %rdi
callq 0xf200
leaq -0x900(%rbp), %rdi
callq 0x12310
movq -0x908(%rbp), %rdi
movq -0x9c0(%rbp), %rsi
addq $0x138, %rdi            # imm = 0x138
callq 0xf190
jmp 0xf9f96
leaq -0xb0(%rbp), %rdi
callq 0xf200
addq $0x9e0, %rsp            # imm = 0x9E0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x168(%rbp)
movl %eax, -0x16c(%rbp)
jmp 0xfa155
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x168(%rbp)
movl %eax, -0x16c(%rbp)
leaq -0x160(%rbp), %rdi
callq 0x12310
jmp 0xfa155
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x168(%rbp)
movl %eax, -0x16c(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x12310
jmp 0xfa155
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x168(%rbp)
movl %eax, -0x16c(%rbp)
leaq -0x2d0(%rbp), %rdi
callq 0x12310
jmp 0xfa155
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x168(%rbp)
movl %eax, -0x16c(%rbp)
leaq -0x380(%rbp), %rdi
callq 0x12310
jmp 0xfa155
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x168(%rbp)
movl %eax, -0x16c(%rbp)
leaq -0x430(%rbp), %rdi
callq 0x12310
jmp 0xfa155
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x168(%rbp)
movl %eax, -0x16c(%rbp)
leaq -0x4e0(%rbp), %rdi
callq 0x12310
jmp 0xfa155
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x168(%rbp)
movl %eax, -0x16c(%rbp)
leaq -0x590(%rbp), %rdi
callq 0x12310
jmp 0xfa155
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x168(%rbp)
movl %eax, -0x16c(%rbp)
leaq -0x640(%rbp), %rdi
callq 0x12310
jmp 0xfa155
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x168(%rbp)
movl %eax, -0x16c(%rbp)
leaq -0x6f0(%rbp), %rdi
callq 0x12310
jmp 0xfa155
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x168(%rbp)
movl %eax, -0x16c(%rbp)
leaq -0x7a0(%rbp), %rdi
callq 0x12310
jmp 0xfa155
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x168(%rbp)
movl %eax, -0x16c(%rbp)
leaq -0x850(%rbp), %rdi
callq 0x12310
jmp 0xfa155
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x168(%rbp)
movl %eax, -0x16c(%rbp)
leaq -0x900(%rbp), %rdi
callq 0x12310
leaq -0xb0(%rbp), %rdi
callq 0xf200
movq -0x168(%rbp), %rdi
callq 0x58f0
nopl (%rax)