// File: Luthaf[P]zeopp/sphere_approx.cc
// Function: setupHighAccuracyAtomNetwork(ATOM_NETWORK*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void setupHighAccuracyAtomNetwork(ATOM_NETWORK *atmnet, std::string AccSetting){

 double minr,maxr;

/* analyze the original atom network */
 for(unsigned int i = 0; i < atmnet->atoms.size(); i++)
   {
   if(i == 0) {
     minr = atmnet->atoms.at(i).radius; maxr = minr;
     } else{
     if( atmnet->atoms.at(i).radius < minr) minr = atmnet->atoms.at(i).radius;
     if( atmnet->atoms.at(i).radius > maxr) maxr = atmnet->atoms.at(i).radius;
    };
   };
 
 cout << "Radii analysis: the smallest atom r = " << minr << " while the largest atoms r = " << maxr << ".\n";


 if(minr < SPHERE_APPROX_MIN_R || maxr > SPHERE_APPROX_MAX_R)
   {
   cerr << "HIGH ACCURACY CANNOT BE APPLIED!\n"
        << "The current version of high accuracy routine is using parameters derived from analysis of \n" 
        << "CCDC database. The radii defined for the current system are outside of predefined range.\n"
        << "If you are a pro-user, change the source code (sphere_approx.cc) or contact the authors.\n"
        << "Exiting the -ha routines without any changes..." << "\n";
   }else
 {

/* start replacing the atoms */

 std::vector <ATOM> newAtomList;

 for(unsigned int i = 0; i < atmnet->atoms.size(); i++)
   {

   if(atmnet->atoms.at(i).radius == minr)
     {
     // in case of the smallest atoms, copy them without modifications
     newAtomList.push_back(atmnet->atoms[i]);
     atmnet->IDmapping.push_back(i);
     }else
     {
     // in case of larger atoms, run atom modification routines

     if(AccSetting == "OCC" ||
        AccSetting == "FCC" ||
        AccSetting == "ACC" ||
        AccSetting == "AQC" ||
        AccSetting == "DDH" ||
        AccSetting == "TIH" ||
        AccSetting == "ICH" ||
        AccSetting == "ICC" ||
        AccSetting == "RIH" ||
        AccSetting == "S4" ||
        AccSetting == "S10" ||
        AccSetting == "S20" ||
        AccSetting == "S30" ||
        AccSetting == "S40" ||
        AccSetting == "S50" ||
        AccSetting == "S100" ||
        AccSetting == "S500" ||
        AccSetting == "S1000" ||
        AccSetting == "S10000")
        {
        AtomCluster cluster(atmnet->atoms[i], minr);
        cluster.replaceAtomByCluster(AccSetting, atmnet->atoms.at(i).radius);
        cluster.copyReplacementAtoms(atmnet, i, &newAtomList);
        }
     else if(AccSetting == "HI")
        {
        AccSetting = "S50";
        AtomCluster cluster(atmnet->atoms[i], minr);
        cluster.replaceAtomByCluster(AccSetting, atmnet->atoms.at(i).radius);
        cluster.copyReplacementAtoms(atmnet, i, &newAtomList);
        }
     else if(AccSetting == "MED")
        {
        AccSetting = "S30";
        AtomCluster cluster(atmnet->atoms[i], minr);
        cluster.replaceAtomByCluster(AccSetting, atmnet->atoms.at(i).radius);
        cluster.copyReplacementAtoms(atmnet, i, &newAtomList);
        }
     else if(AccSetting == "LOW")
        {
        AccSetting = "S10";
        AtomCluster cluster(atmnet->atoms[i], minr);
        cluster.replaceAtomByCluster(AccSetting, atmnet->atoms.at(i).radius);
        cluster.copyReplacementAtoms(atmnet, i, &newAtomList);
        }
     else // equal to (AccSetting == "DEF")
        {
        if(atmnet->atoms.at(i).radius/minr < LARGE_RATIO)
          {
          AccSetting = "S30";
          } else{ 
          AccSetting = "S50";
          };
        AtomCluster cluster(atmnet->atoms[i], minr);
        cluster.replaceAtomByCluster(AccSetting, atmnet->atoms.at(i).radius);
        cluster.copyReplacementAtoms(atmnet, i, &newAtomList);
        };

     };
   }; // ends loop over all atoms in original atom list


/* finishing with replacement of old atom list with the new one */

 atmnet->atoms = newAtomList;
 atmnet->numAtoms = newAtomList.size();

 }; // ends if statement checking if minr and maxr are within the accaptable range

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xb00, %rsp            # imm = 0xB00
movq %rsi, -0xa88(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl $0x0, -0x24(%rbp)
movl -0x24(%rbp), %eax
movq %rax, -0xa90(%rbp)
movq -0x8(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
callq 0xf060
movq %rax, %rcx
movq -0xa90(%rbp), %rax
cmpq %rcx, %rax
jae 0xfc2d8
cmpl $0x0, -0x24(%rbp)
jne 0xfc242
movq -0x8(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movl -0x24(%rbp), %eax
movl %eax, %esi
callq 0xf090
movsd 0x30(%rax), %xmm0
movsd %xmm0, -0x18(%rbp)
movsd -0x18(%rbp), %xmm0
movsd %xmm0, -0x20(%rbp)
jmp 0xfc2c8
movq -0x8(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movl -0x24(%rbp), %eax
movl %eax, %esi
callq 0xf090
movsd 0x30(%rax), %xmm1
movsd -0x18(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0xfc286
movq -0x8(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movl -0x24(%rbp), %eax
movl %eax, %esi
callq 0xf090
movsd 0x30(%rax), %xmm0
movsd %xmm0, -0x18(%rbp)
movq -0x8(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movl -0x24(%rbp), %eax
movl %eax, %esi
callq 0xf090
movsd 0x30(%rax), %xmm0
ucomisd -0x20(%rbp), %xmm0
jbe 0xfc2c6
movq -0x8(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movl -0x24(%rbp), %eax
movl %eax, %esi
callq 0xf090
movsd 0x30(%rax), %xmm0
movsd %xmm0, -0x20(%rbp)
jmp 0xfc2c8
jmp 0xfc2ca
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0xfc1e1
movq 0x176ce1(%rip), %rdi    # 0x272fc0
leaq 0x1006c0(%rip), %rsi    # 0x1fc9a6
callq 0x5540
movq %rax, %rdi
movsd -0x18(%rbp), %xmm0
callq 0x5980
movq %rax, %rdi
leaq 0x1006cb(%rip), %rsi    # 0x1fc9cd
callq 0x5540
movq %rax, %rdi
movsd -0x20(%rbp), %xmm0
callq 0x5980
movq %rax, %rdi
leaq 0x10da33(%rip), %rsi    # 0x209d51
callq 0x5540
movsd 0xf5d4d(%rip), %xmm0    # 0x1f2078
ucomisd -0x18(%rbp), %xmm0
ja 0xfc345
movsd -0x20(%rbp), %xmm0
movsd 0x1005f1(%rip), %xmm1   # 0x1fc930
ucomisd %xmm1, %xmm0
jbe 0xfc3a8
movq 0x176ca4(%rip), %rdi    # 0x272ff0
leaq 0x100698(%rip), %rsi    # 0x1fc9eb
callq 0x5540
movq %rax, %rdi
leaq 0x1006ab(%rip), %rsi    # 0x1fca0d
callq 0x5540
movq %rax, %rdi
leaq 0x1006f8(%rip), %rsi    # 0x1fca69
callq 0x5540
movq %rax, %rdi
leaq 0x100743(%rip), %rsi    # 0x1fcac3
callq 0x5540
movq %rax, %rdi
leaq 0x10078e(%rip), %rsi    # 0x1fcb1d
callq 0x5540
movq %rax, %rdi
leaq 0xfd287(%rip), %rsi     # 0x1f9625
callq 0x5540
jmp 0xfcede
leaq -0x40(%rbp), %rdi
callq 0x59bd0
movl $0x0, -0x44(%rbp)
movl -0x44(%rbp), %eax
movq %rax, -0xa98(%rbp)
movq -0x8(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
callq 0xf060
movq %rax, %rcx
movq -0xa98(%rbp), %rax
cmpq %rcx, %rax
jae 0xfce9d
movq -0x8(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movl -0x44(%rbp), %eax
movl %eax, %esi
callq 0xf090
movq %rax, -0xaa0(%rbp)
jmp 0xfc403
movq -0xaa0(%rbp), %rax
movsd 0x30(%rax), %xmm0
ucomisd -0x18(%rbp), %xmm0
jne 0xfc46d
jp 0xfc46d
movq -0x8(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movl -0x44(%rbp), %eax
movl %eax, %esi
callq 0xfcc0
movq %rax, %rsi
leaq -0x40(%rbp), %rdi
callq 0xf190
jmp 0xfc43b
movq -0x8(%rbp), %rdi
addq $0x308, %rdi            # imm = 0x308
movl -0x44(%rbp), %eax
movl %eax, -0x58(%rbp)
leaq -0x58(%rbp), %rsi
callq 0xffc0
jmp 0xfc457
jmp 0xfce8d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xfced3
movq -0xa88(%rbp), %rdi
leaq 0x1004c5(%rip), %rsi    # 0x1fc940
callq 0x845d0
movb %al, -0xaa1(%rbp)
jmp 0xfc488
movb -0xaa1(%rbp), %al
testb $0x1, %al
jne 0xfc791
jmp 0xfc498
movq -0xa88(%rbp), %rdi
leaq 0x10049e(%rip), %rsi    # 0x1fc944
callq 0x845d0
movb %al, -0xaa2(%rbp)
jmp 0xfc4b3
movb -0xaa2(%rbp), %al
testb $0x1, %al
jne 0xfc791
jmp 0xfc4c3
movq -0xa88(%rbp), %rdi
leaq 0x100477(%rip), %rsi    # 0x1fc948
callq 0x845d0
movb %al, -0xaa3(%rbp)
jmp 0xfc4de
movb -0xaa3(%rbp), %al
testb $0x1, %al
jne 0xfc791
jmp 0xfc4ee
movq -0xa88(%rbp), %rdi
leaq 0x100450(%rip), %rsi    # 0x1fc94c
callq 0x845d0
movb %al, -0xaa4(%rbp)
jmp 0xfc509
movb -0xaa4(%rbp), %al
testb $0x1, %al
jne 0xfc791
jmp 0xfc519
movq -0xa88(%rbp), %rdi
leaq 0x100429(%rip), %rsi    # 0x1fc950
callq 0x845d0
movb %al, -0xaa5(%rbp)
jmp 0xfc534
movb -0xaa5(%rbp), %al
testb $0x1, %al
jne 0xfc791
jmp 0xfc544
movq -0xa88(%rbp), %rdi
leaq 0x100402(%rip), %rsi    # 0x1fc954
callq 0x845d0
movb %al, -0xaa6(%rbp)
jmp 0xfc55f
movb -0xaa6(%rbp), %al
testb $0x1, %al
jne 0xfc791
jmp 0xfc56f
movq -0xa88(%rbp), %rdi
leaq 0x1003db(%rip), %rsi    # 0x1fc958
callq 0x845d0
movb %al, -0xaa7(%rbp)
jmp 0xfc58a
movb -0xaa7(%rbp), %al
testb $0x1, %al
jne 0xfc791
jmp 0xfc59a
movq -0xa88(%rbp), %rdi
leaq 0x1003b4(%rip), %rsi    # 0x1fc95c
callq 0x845d0
movb %al, -0xaa8(%rbp)
jmp 0xfc5b5
movb -0xaa8(%rbp), %al
testb $0x1, %al
jne 0xfc791
jmp 0xfc5c5
movq -0xa88(%rbp), %rdi
leaq 0x10038d(%rip), %rsi    # 0x1fc960
callq 0x845d0
movb %al, -0xaa9(%rbp)
jmp 0xfc5e0
movb -0xaa9(%rbp), %al
testb $0x1, %al
jne 0xfc791
jmp 0xfc5f0
movq -0xa88(%rbp), %rdi
leaq 0x100366(%rip), %rsi    # 0x1fc964
callq 0x845d0
movb %al, -0xaaa(%rbp)
jmp 0xfc60b
movb -0xaaa(%rbp), %al
testb $0x1, %al
jne 0xfc791
jmp 0xfc61b
movq -0xa88(%rbp), %rdi
leaq 0x10033e(%rip), %rsi    # 0x1fc967
callq 0x845d0
movb %al, -0xaab(%rbp)
jmp 0xfc636
movb -0xaab(%rbp), %al
testb $0x1, %al
jne 0xfc791
jmp 0xfc646
movq -0xa88(%rbp), %rdi
leaq 0x100317(%rip), %rsi    # 0x1fc96b
callq 0x845d0
movb %al, -0xaac(%rbp)
jmp 0xfc661
movb -0xaac(%rbp), %al
testb $0x1, %al
jne 0xfc791
jmp 0xfc671
movq -0xa88(%rbp), %rdi
leaq 0x1002f0(%rip), %rsi    # 0x1fc96f
callq 0x845d0
movb %al, -0xaad(%rbp)
jmp 0xfc68c
movb -0xaad(%rbp), %al
testb $0x1, %al
jne 0xfc791
jmp 0xfc69c
movq -0xa88(%rbp), %rdi
leaq 0x1002c9(%rip), %rsi    # 0x1fc973
callq 0x845d0
movb %al, -0xaae(%rbp)
jmp 0xfc6b7
movb -0xaae(%rbp), %al
testb $0x1, %al
jne 0xfc791
jmp 0xfc6c7
movq -0xa88(%rbp), %rdi
leaq 0x1002a2(%rip), %rsi    # 0x1fc977
callq 0x845d0
movb %al, -0xaaf(%rbp)
jmp 0xfc6e2
movb -0xaaf(%rbp), %al
testb $0x1, %al
jne 0xfc791
jmp 0xfc6f2
movq -0xa88(%rbp), %rdi
leaq 0x10027b(%rip), %rsi    # 0x1fc97b
callq 0x845d0
movb %al, -0xab0(%rbp)
jmp 0xfc70d
movb -0xab0(%rbp), %al
testb $0x1, %al
jne 0xfc791
jmp 0xfc719
movq -0xa88(%rbp), %rdi
leaq 0x100259(%rip), %rsi    # 0x1fc980
callq 0x845d0
movb %al, -0xab1(%rbp)
jmp 0xfc734
movb -0xab1(%rbp), %al
testb $0x1, %al
jne 0xfc791
jmp 0xfc740
movq -0xa88(%rbp), %rdi
leaq 0x100237(%rip), %rsi    # 0x1fc985
callq 0x845d0
movb %al, -0xab2(%rbp)
jmp 0xfc75b
movb -0xab2(%rbp), %al
testb $0x1, %al
jne 0xfc791
jmp 0xfc767
movq -0xa88(%rbp), %rdi
leaq 0x100216(%rip), %rsi    # 0x1fc98b
callq 0x845d0
movb %al, -0xab3(%rbp)
jmp 0xfc782
movb -0xab3(%rbp), %al
testb $0x1, %al
jne 0xfc791
jmp 0xfc8bb
movq -0x8(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movl -0x44(%rbp), %eax
movl %eax, %esi
callq 0xfcc0
movq %rax, %rsi
leaq -0x240(%rbp), %rdi
callq 0xf0d0
jmp 0xfc7b7
movsd -0x18(%rbp), %xmm0
leaq -0x1a8(%rbp), %rdi
leaq -0x240(%rbp), %rsi
callq 0xf7c60
jmp 0xfc7d1
leaq -0x240(%rbp), %rdi
callq 0xf200
movq -0xa88(%rbp), %rsi
leaq -0x260(%rbp), %rdi
callq 0x5220
jmp 0xfc7f2
movq -0x8(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movl -0x44(%rbp), %eax
movl %eax, %esi
callq 0xf090
movq %rax, -0xac0(%rbp)
jmp 0xfc810
movq -0xac0(%rbp), %rax
movsd 0x30(%rax), %xmm0
leaq -0x1a8(%rbp), %rdi
leaq -0x260(%rbp), %rsi
callq 0xf8290
jmp 0xfc831
leaq -0x260(%rbp), %rdi
callq 0x5300
movq -0x8(%rbp), %rsi
movl -0x44(%rbp), %edx
leaq -0x1a8(%rbp), %rdi
leaq -0x40(%rbp), %rcx
callq 0xf7d60
jmp 0xfc856
leaq -0x1a8(%rbp), %rdi
callq 0xfd070
jmp 0xfce8b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x240(%rbp), %rdi
callq 0xf200
jmp 0xfced3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xfc8aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x260(%rbp), %rdi
callq 0x5300
leaq -0x1a8(%rbp), %rdi
callq 0xfd070
jmp 0xfced3
movq -0xa88(%rbp), %rdi
leaq 0x100284(%rip), %rsi    # 0x1fcb4d
callq 0x845d0
movb %al, -0xac1(%rbp)
jmp 0xfc8d6
movb -0xac1(%rbp), %al
testb $0x1, %al
jne 0xfc8e5
jmp 0xfca24
movq -0xa88(%rbp), %rdi
leaq 0x100084(%rip), %rsi    # 0x1fc977
callq 0x5710
jmp 0xfc8fa
movq -0x8(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movl -0x44(%rbp), %eax
movl %eax, %esi
callq 0xfcc0
movq %rax, %rsi
leaq -0x448(%rbp), %rdi
callq 0xf0d0
jmp 0xfc920
movsd -0x18(%rbp), %xmm0
leaq -0x3b0(%rbp), %rdi
leaq -0x448(%rbp), %rsi
callq 0xf7c60
jmp 0xfc93a
leaq -0x448(%rbp), %rdi
callq 0xf200
movq -0xa88(%rbp), %rsi
leaq -0x468(%rbp), %rdi
callq 0x5220
jmp 0xfc95b
movq -0x8(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movl -0x44(%rbp), %eax
movl %eax, %esi
callq 0xf090
movq %rax, -0xad0(%rbp)
jmp 0xfc979
movq -0xad0(%rbp), %rax
movsd 0x30(%rax), %xmm0
leaq -0x3b0(%rbp), %rdi
leaq -0x468(%rbp), %rsi
callq 0xf8290
jmp 0xfc99a
leaq -0x468(%rbp), %rdi
callq 0x5300
movq -0x8(%rbp), %rsi
movl -0x44(%rbp), %edx
leaq -0x3b0(%rbp), %rdi
leaq -0x40(%rbp), %rcx
callq 0xf7d60
jmp 0xfc9bf
leaq -0x3b0(%rbp), %rdi
callq 0xfd070
jmp 0xfce89
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x448(%rbp), %rdi
callq 0xf200
jmp 0xfced3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xfca13
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x468(%rbp), %rdi
callq 0x5300
leaq -0x3b0(%rbp), %rdi
callq 0xfd070
jmp 0xfced3
movq -0xa88(%rbp), %rdi
leaq 0x10011e(%rip), %rsi    # 0x1fcb50
callq 0x845d0
movb %al, -0xad1(%rbp)
jmp 0xfca3f
movb -0xad1(%rbp), %al
testb $0x1, %al
jne 0xfca4e
jmp 0xfcb8d
movq -0xa88(%rbp), %rdi
leaq 0xfff13(%rip), %rsi     # 0x1fc96f
callq 0x5710
jmp 0xfca63
movq -0x8(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movl -0x44(%rbp), %eax
movl %eax, %esi
callq 0xfcc0
movq %rax, %rsi
leaq -0x650(%rbp), %rdi
callq 0xf0d0
jmp 0xfca89
movsd -0x18(%rbp), %xmm0
leaq -0x5b8(%rbp), %rdi
leaq -0x650(%rbp), %rsi
callq 0xf7c60
jmp 0xfcaa3
leaq -0x650(%rbp), %rdi
callq 0xf200
movq -0xa88(%rbp), %rsi
leaq -0x670(%rbp), %rdi
callq 0x5220
jmp 0xfcac4
movq -0x8(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movl -0x44(%rbp), %eax
movl %eax, %esi
callq 0xf090
movq %rax, -0xae0(%rbp)
jmp 0xfcae2
movq -0xae0(%rbp), %rax
movsd 0x30(%rax), %xmm0
leaq -0x5b8(%rbp), %rdi
leaq -0x670(%rbp), %rsi
callq 0xf8290
jmp 0xfcb03
leaq -0x670(%rbp), %rdi
callq 0x5300
movq -0x8(%rbp), %rsi
movl -0x44(%rbp), %edx
leaq -0x5b8(%rbp), %rdi
leaq -0x40(%rbp), %rcx
callq 0xf7d60
jmp 0xfcb28
leaq -0x5b8(%rbp), %rdi
callq 0xfd070
jmp 0xfce87
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x650(%rbp), %rdi
callq 0xf200
jmp 0xfced3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xfcb7c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x670(%rbp), %rdi
callq 0x5300
leaq -0x5b8(%rbp), %rdi
callq 0xfd070
jmp 0xfced3
movq -0xa88(%rbp), %rdi
leaq 0xfffb9(%rip), %rsi     # 0x1fcb54
callq 0x845d0
movb %al, -0xae1(%rbp)
jmp 0xfcba8
movb -0xae1(%rbp), %al
testb $0x1, %al
jne 0xfcbb7
jmp 0xfccf6
movq -0xa88(%rbp), %rdi
leaq 0xffda2(%rip), %rsi     # 0x1fc967
callq 0x5710
jmp 0xfcbcc
movq -0x8(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movl -0x44(%rbp), %eax
movl %eax, %esi
callq 0xfcc0
movq %rax, %rsi
leaq -0x858(%rbp), %rdi
callq 0xf0d0
jmp 0xfcbf2
movsd -0x18(%rbp), %xmm0
leaq -0x7c0(%rbp), %rdi
leaq -0x858(%rbp), %rsi
callq 0xf7c60
jmp 0xfcc0c
leaq -0x858(%rbp), %rdi
callq 0xf200
movq -0xa88(%rbp), %rsi
leaq -0x878(%rbp), %rdi
callq 0x5220
jmp 0xfcc2d
movq -0x8(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movl -0x44(%rbp), %eax
movl %eax, %esi
callq 0xf090
movq %rax, -0xaf0(%rbp)
jmp 0xfcc4b
movq -0xaf0(%rbp), %rax
movsd 0x30(%rax), %xmm0
leaq -0x7c0(%rbp), %rdi
leaq -0x878(%rbp), %rsi
callq 0xf8290
jmp 0xfcc6c
leaq -0x878(%rbp), %rdi
callq 0x5300
movq -0x8(%rbp), %rsi
movl -0x44(%rbp), %edx
leaq -0x7c0(%rbp), %rdi
leaq -0x40(%rbp), %rcx
callq 0xf7d60
jmp 0xfcc91
leaq -0x7c0(%rbp), %rdi
callq 0xfd070
jmp 0xfce85
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x858(%rbp), %rdi
callq 0xf200
jmp 0xfced3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xfcce5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x878(%rbp), %rdi
callq 0x5300
leaq -0x7c0(%rbp), %rdi
callq 0xfd070
jmp 0xfced3
movq -0x8(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movl -0x44(%rbp), %eax
movl %eax, %esi
callq 0xf090
movq %rax, -0xaf8(%rbp)
jmp 0xfcd14
movq -0xaf8(%rbp), %rax
movsd 0x30(%rax), %xmm1
divsd -0x18(%rbp), %xmm1
movsd 0xffc0b(%rip), %xmm0    # 0x1fc938
ucomisd %xmm1, %xmm0
jbe 0xfcd4a
movq -0xa88(%rbp), %rdi
leaq 0xffc2e(%rip), %rsi     # 0x1fc96f
callq 0x5710
jmp 0xfcd48
jmp 0xfcd61
movq -0xa88(%rbp), %rdi
leaq 0xffc1f(%rip), %rsi     # 0x1fc977
callq 0x5710
jmp 0xfcd5f
jmp 0xfcd61
movq -0x8(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movl -0x44(%rbp), %eax
movl %eax, %esi
callq 0xfcc0
movq %rax, %rsi
leaq -0xa60(%rbp), %rdi
callq 0xf0d0
jmp 0xfcd87
movsd -0x18(%rbp), %xmm0
leaq -0x9c8(%rbp), %rdi
leaq -0xa60(%rbp), %rsi
callq 0xf7c60
jmp 0xfcda1
leaq -0xa60(%rbp), %rdi
callq 0xf200
movq -0xa88(%rbp), %rsi
leaq -0xa80(%rbp), %rdi
callq 0x5220
jmp 0xfcdc2
movq -0x8(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movl -0x44(%rbp), %eax
movl %eax, %esi
callq 0xf090
movq %rax, -0xb00(%rbp)
jmp 0xfcde0
movq -0xb00(%rbp), %rax
movsd 0x30(%rax), %xmm0
leaq -0x9c8(%rbp), %rdi
leaq -0xa80(%rbp), %rsi
callq 0xf8290
jmp 0xfce01
leaq -0xa80(%rbp), %rdi
callq 0x5300
movq -0x8(%rbp), %rsi
movl -0x44(%rbp), %edx
leaq -0x9c8(%rbp), %rdi
leaq -0x40(%rbp), %rcx
callq 0xf7d60
jmp 0xfce26
leaq -0x9c8(%rbp), %rdi
callq 0xfd070
jmp 0xfce85
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xa60(%rbp), %rdi
callq 0xf200
jmp 0xfced3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xfce77
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xa80(%rbp), %rdi
callq 0x5300
leaq -0x9c8(%rbp), %rdi
callq 0xfd070
jmp 0xfced3
jmp 0xfce87
jmp 0xfce89
jmp 0xfce8b
jmp 0xfce8d
jmp 0xfce8f
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0xfc3b8
movq -0x8(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
leaq -0x40(%rbp), %rsi
callq 0xadaf0
jmp 0xfceb3
leaq -0x40(%rbp), %rdi
callq 0xf060
movl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x110(%rax)
leaq -0x40(%rbp), %rdi
callq 0x12310
jmp 0xfcede
leaq -0x40(%rbp), %rdi
callq 0x12310
jmp 0xfcee7
addq $0xb00, %rsp            # imm = 0xB00
popq %rbp
retq
movq -0x50(%rbp), %rdi
callq 0x58f0