// File: Luthaf[P]zeopp/networkstorage.cc
// Function: ATOM_NETWORK::find_tetrahedra(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
vector<double> ATOM_NETWORK::find_tetrahedra(string element) {
    vector<double> tetras;
    double d_ij = -1, d_ik = -1, d_il = -1, d_jk = -1, d_jl = -1, d_kl = -1; //stores distances between each pair of atoms in a potential tetrahedral arrangement
    double maxDist = 5, minDist = 0.1; //four atoms are considered to be in a tetrahedral arrangement if they are each within this distance range of each other - if this is true, we then calculate the index of tetrahedral distortion
    for(int i=0; i<numAtoms; i++) {
        if(atoms.at(i).type.compare(element)==0) {
            for(int j=i+1; j<numAtoms; j++) {
                if(atoms.at(j).type.compare(element)==0) {
                    d_ij = getDistCalc().minimum_periodic_distance(atoms.at(i).a_coord, atoms.at(i).b_coord, atoms.at(i).c_coord, atoms.at(j).a_coord, atoms.at(j).b_coord, atoms.at(j).c_coord);
                    if(d_ij>minDist && d_ij<maxDist) {
                        for(int k=j+1; k<numAtoms; k++) {
                            if(atoms.at(k).type.compare(element)==0) {
                                d_ik = getDistCalc().minimum_periodic_distance(atoms.at(i).a_coord, atoms.at(i).b_coord, atoms.at(i).c_coord, atoms.at(k).a_coord, atoms.at(k).b_coord, atoms.at(k).c_coord);
                                if(d_ik>minDist && d_ik<maxDist) {
                                    d_jk = getDistCalc().minimum_periodic_distance(atoms.at(j).a_coord, atoms.at(j).b_coord, atoms.at(j).c_coord, atoms.at(k).a_coord, atoms.at(k).b_coord, atoms.at(k).c_coord);
                                    if(d_jk>minDist && d_jk<maxDist) {
                                        for(int l=k+1; l<numAtoms; l++) {
                                            if(atoms.at(l).type.compare(element)==0) {
                                                d_il = getDistCalc().minimum_periodic_distance(atoms.at(i).a_coord, atoms.at(i).b_coord, atoms.at(i).c_coord, atoms.at(l).a_coord, atoms.at(l).b_coord, atoms.at(l).c_coord);
                                                if(d_il>minDist && d_il<maxDist) {
                                                    d_jl = getDistCalc().minimum_periodic_distance(atoms.at(j).a_coord, atoms.at(j).b_coord, atoms.at(j).c_coord, atoms.at(l).a_coord, atoms.at(l).b_coord, atoms.at(l).c_coord);
                                                    if(d_jl>minDist && d_jl<maxDist) {
                                                        d_kl = getDistCalc().minimum_periodic_distance(atoms.at(k).a_coord, atoms.at(k).b_coord, atoms.at(k).c_coord, atoms.at(l).a_coord, atoms.at(l).b_coord, atoms.at(l).c_coord);
                                                        if(d_kl>minDist && d_kl<maxDist) {
                                                            //we have found four atoms within the tolerance
                                                            double t = CalculateTetrahedrality4Atoms(atoms.at(i), atoms.at(j), atoms.at(k), atoms.at(l));
                                                            tetras.push_back(t);
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    //sort before returning
    sort(tetras.begin(), tetras.end());
    return tetras;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x640, %rsp            # imm = 0x640
movq %rdx, -0x390(%rbp)
movq %rdi, -0x388(%rbp)
movq %rdi, %rax
movq %rax, -0x380(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x378(%rbp)
movb $0x0, -0x19(%rbp)
callq 0xf650
movsd 0x15a48d(%rip), %xmm0   # 0x1f2778
movsd %xmm0, -0x28(%rbp)
movsd 0x15a480(%rip), %xmm0   # 0x1f2778
movsd %xmm0, -0x30(%rbp)
movsd 0x15a473(%rip), %xmm0   # 0x1f2778
movsd %xmm0, -0x38(%rbp)
movsd 0x15a466(%rip), %xmm0   # 0x1f2778
movsd %xmm0, -0x40(%rbp)
movsd 0x15a459(%rip), %xmm0   # 0x1f2778
movsd %xmm0, -0x48(%rbp)
movsd 0x15a44c(%rip), %xmm0   # 0x1f2778
movsd %xmm0, -0x50(%rbp)
movsd 0x15f537(%rip), %xmm0   # 0x1f7870
movsd %xmm0, -0x58(%rbp)
movsd 0x159d22(%rip), %xmm0   # 0x1f2068
movsd %xmm0, -0x60(%rbp)
movl $0x0, -0x64(%rbp)
movq -0x378(%rbp), %rcx
movl -0x64(%rbp), %eax
cmpl 0x110(%rcx), %eax
jge 0x991c7
movq -0x378(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x64(%rbp), %rsi
callq 0xf090
movq %rax, -0x398(%rbp)
jmp 0x98388
movq -0x390(%rbp), %rsi
movq -0x398(%rbp), %rdi
addq $0x40, %rdi
callq 0x5050
movl %eax, -0x39c(%rbp)
jmp 0x983a7
movl -0x39c(%rbp), %eax
cmpl $0x0, %eax
jne 0x991b7
movl -0x64(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x78(%rbp)
movq -0x378(%rbp), %rcx
movl -0x78(%rbp), %eax
cmpl 0x110(%rcx), %eax
jge 0x991b5
movq -0x378(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x78(%rbp), %rsi
callq 0xf090
movq %rax, -0x3a8(%rbp)
jmp 0x983f5
movq -0x390(%rbp), %rsi
movq -0x3a8(%rbp), %rdi
addq $0x40, %rdi
callq 0x5050
movl %eax, -0x3ac(%rbp)
jmp 0x98414
movl -0x3ac(%rbp), %eax
cmpl $0x0, %eax
jne 0x991a5
movq -0x378(%rbp), %rsi
leaq -0xf0(%rbp), %rdi
callq 0x96bf0
jmp 0x98438
movq -0x378(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x64(%rbp), %rsi
callq 0xf090
movq %rax, -0x3b8(%rbp)
jmp 0x98458
movq -0x378(%rbp), %rdi
movq -0x3b8(%rbp), %rax
movsd 0x18(%rax), %xmm0
movsd %xmm0, -0x3c8(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x64(%rbp), %rsi
callq 0xf090
movq %rax, -0x3c0(%rbp)
jmp 0x9848c
movq -0x378(%rbp), %rdi
movq -0x3c0(%rbp), %rax
movsd 0x20(%rax), %xmm0
movsd %xmm0, -0x3d8(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x64(%rbp), %rsi
callq 0xf090
movq %rax, -0x3d0(%rbp)
jmp 0x984c0
movq -0x378(%rbp), %rdi
movq -0x3d0(%rbp), %rax
movsd 0x28(%rax), %xmm0
movsd %xmm0, -0x3e8(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x78(%rbp), %rsi
callq 0xf090
movq %rax, -0x3e0(%rbp)
jmp 0x984f4
movq -0x378(%rbp), %rdi
movq -0x3e0(%rbp), %rax
movsd 0x18(%rax), %xmm0
movsd %xmm0, -0x3f8(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x78(%rbp), %rsi
callq 0xf090
movq %rax, -0x3f0(%rbp)
jmp 0x98528
movq -0x378(%rbp), %rdi
movq -0x3f0(%rbp), %rax
movsd 0x20(%rax), %xmm0
movsd %xmm0, -0x408(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x78(%rbp), %rsi
callq 0xf090
movq %rax, -0x400(%rbp)
jmp 0x9855c
movsd -0x408(%rbp), %xmm4
movsd -0x3f8(%rbp), %xmm3
movsd -0x3e8(%rbp), %xmm2
movsd -0x3d8(%rbp), %xmm1
movsd -0x3c8(%rbp), %xmm0
movq -0x400(%rbp), %rax
movsd 0x28(%rax), %xmm5
leaq -0xf0(%rbp), %rdi
callq 0xd7d80
movsd %xmm0, -0x410(%rbp)
jmp 0x985a6
movsd -0x410(%rbp), %xmm0
movsd %xmm0, -0x28(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x122d0
movsd -0x28(%rbp), %xmm0
ucomisd -0x60(%rbp), %xmm0
jbe 0x991a3
movsd -0x28(%rbp), %xmm1
movsd -0x58(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x991a3
movl -0x78(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xf4(%rbp)
movq -0x378(%rbp), %rcx
movl -0xf4(%rbp), %eax
cmpl 0x110(%rcx), %eax
jge 0x991a1
movq -0x378(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0xf4(%rbp), %rsi
callq 0xf090
movq %rax, -0x418(%rbp)
jmp 0x9862b
movq -0x390(%rbp), %rsi
movq -0x418(%rbp), %rdi
addq $0x40, %rdi
callq 0x5050
movl %eax, -0x41c(%rbp)
jmp 0x9864a
movl -0x41c(%rbp), %eax
cmpl $0x0, %eax
jne 0x9918b
movq -0x378(%rbp), %rsi
leaq -0x170(%rbp), %rdi
callq 0x96bf0
jmp 0x9866e
movq -0x378(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x64(%rbp), %rsi
callq 0xf090
movq %rax, -0x428(%rbp)
jmp 0x9868e
movq -0x378(%rbp), %rdi
movq -0x428(%rbp), %rax
movsd 0x18(%rax), %xmm0
movsd %xmm0, -0x438(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x64(%rbp), %rsi
callq 0xf090
movq %rax, -0x430(%rbp)
jmp 0x986c2
movq -0x378(%rbp), %rdi
movq -0x430(%rbp), %rax
movsd 0x20(%rax), %xmm0
movsd %xmm0, -0x448(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x64(%rbp), %rsi
callq 0xf090
movq %rax, -0x440(%rbp)
jmp 0x986f6
movq -0x378(%rbp), %rdi
movq -0x440(%rbp), %rax
movsd 0x28(%rax), %xmm0
movsd %xmm0, -0x458(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0xf4(%rbp), %rsi
callq 0xf090
movq %rax, -0x450(%rbp)
jmp 0x9872d
movq -0x378(%rbp), %rdi
movq -0x450(%rbp), %rax
movsd 0x18(%rax), %xmm0
movsd %xmm0, -0x468(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0xf4(%rbp), %rsi
callq 0xf090
movq %rax, -0x460(%rbp)
jmp 0x98764
movq -0x378(%rbp), %rdi
movq -0x460(%rbp), %rax
movsd 0x20(%rax), %xmm0
movsd %xmm0, -0x478(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0xf4(%rbp), %rsi
callq 0xf090
movq %rax, -0x470(%rbp)
jmp 0x9879b
movsd -0x478(%rbp), %xmm4
movsd -0x468(%rbp), %xmm3
movsd -0x458(%rbp), %xmm2
movsd -0x448(%rbp), %xmm1
movsd -0x438(%rbp), %xmm0
movq -0x470(%rbp), %rax
movsd 0x28(%rax), %xmm5
leaq -0x170(%rbp), %rdi
callq 0xd7d80
movsd %xmm0, -0x480(%rbp)
jmp 0x987e5
movsd -0x480(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x122d0
movsd -0x30(%rbp), %xmm0
ucomisd -0x60(%rbp), %xmm0
jbe 0x99189
movsd -0x30(%rbp), %xmm1
movsd -0x58(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x99189
movq -0x378(%rbp), %rsi
leaq -0x1e8(%rbp), %rdi
callq 0x96bf0
jmp 0x98837
movq -0x378(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x78(%rbp), %rsi
callq 0xf090
movq %rax, -0x488(%rbp)
jmp 0x98857
movq -0x378(%rbp), %rdi
movq -0x488(%rbp), %rax
movsd 0x18(%rax), %xmm0
movsd %xmm0, -0x498(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x78(%rbp), %rsi
callq 0xf090
movq %rax, -0x490(%rbp)
jmp 0x9888b
movq -0x378(%rbp), %rdi
movq -0x490(%rbp), %rax
movsd 0x20(%rax), %xmm0
movsd %xmm0, -0x4a8(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x78(%rbp), %rsi
callq 0xf090
movq %rax, -0x4a0(%rbp)
jmp 0x988bf
movq -0x378(%rbp), %rdi
movq -0x4a0(%rbp), %rax
movsd 0x28(%rax), %xmm0
movsd %xmm0, -0x4b8(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0xf4(%rbp), %rsi
callq 0xf090
movq %rax, -0x4b0(%rbp)
jmp 0x988f6
movq -0x378(%rbp), %rdi
movq -0x4b0(%rbp), %rax
movsd 0x18(%rax), %xmm0
movsd %xmm0, -0x4c8(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0xf4(%rbp), %rsi
callq 0xf090
movq %rax, -0x4c0(%rbp)
jmp 0x9892d
movq -0x378(%rbp), %rdi
movq -0x4c0(%rbp), %rax
movsd 0x20(%rax), %xmm0
movsd %xmm0, -0x4d8(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0xf4(%rbp), %rsi
callq 0xf090
movq %rax, -0x4d0(%rbp)
jmp 0x98964
movsd -0x4d8(%rbp), %xmm4
movsd -0x4c8(%rbp), %xmm3
movsd -0x4b8(%rbp), %xmm2
movsd -0x4a8(%rbp), %xmm1
movsd -0x498(%rbp), %xmm0
movq -0x4d0(%rbp), %rax
movsd 0x28(%rax), %xmm5
leaq -0x1e8(%rbp), %rdi
callq 0xd7d80
movsd %xmm0, -0x4e0(%rbp)
jmp 0x989ae
movsd -0x4e0(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
leaq -0x1e8(%rbp), %rdi
callq 0x122d0
movsd -0x40(%rbp), %xmm0
ucomisd -0x60(%rbp), %xmm0
jbe 0x99187
movsd -0x40(%rbp), %xmm1
movsd -0x58(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x99187
movl -0xf4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1ec(%rbp)
movq -0x378(%rbp), %rcx
movl -0x1ec(%rbp), %eax
cmpl 0x110(%rcx), %eax
jge 0x99185
movq -0x378(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x1ec(%rbp), %rsi
callq 0xf090
movq %rax, -0x4e8(%rbp)
jmp 0x98a36
movq -0x390(%rbp), %rsi
movq -0x4e8(%rbp), %rdi
addq $0x40, %rdi
callq 0x5050
movl %eax, -0x4ec(%rbp)
jmp 0x98a55
movl -0x4ec(%rbp), %eax
cmpl $0x0, %eax
jne 0x9916f
movq -0x378(%rbp), %rsi
leaq -0x268(%rbp), %rdi
callq 0x96bf0
jmp 0x98a79
movq -0x378(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x64(%rbp), %rsi
callq 0xf090
movq %rax, -0x4f8(%rbp)
jmp 0x98a99
movq -0x378(%rbp), %rdi
movq -0x4f8(%rbp), %rax
movsd 0x18(%rax), %xmm0
movsd %xmm0, -0x508(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x64(%rbp), %rsi
callq 0xf090
movq %rax, -0x500(%rbp)
jmp 0x98acd
movq -0x378(%rbp), %rdi
movq -0x500(%rbp), %rax
movsd 0x20(%rax), %xmm0
movsd %xmm0, -0x518(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x64(%rbp), %rsi
callq 0xf090
movq %rax, -0x510(%rbp)
jmp 0x98b01
movq -0x378(%rbp), %rdi
movq -0x510(%rbp), %rax
movsd 0x28(%rax), %xmm0
movsd %xmm0, -0x528(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x1ec(%rbp), %rsi
callq 0xf090
movq %rax, -0x520(%rbp)
jmp 0x98b38
movq -0x378(%rbp), %rdi
movq -0x520(%rbp), %rax
movsd 0x18(%rax), %xmm0
movsd %xmm0, -0x538(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x1ec(%rbp), %rsi
callq 0xf090
movq %rax, -0x530(%rbp)
jmp 0x98b6f
movq -0x378(%rbp), %rdi
movq -0x530(%rbp), %rax
movsd 0x20(%rax), %xmm0
movsd %xmm0, -0x548(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x1ec(%rbp), %rsi
callq 0xf090
movq %rax, -0x540(%rbp)
jmp 0x98ba6
movsd -0x548(%rbp), %xmm4
movsd -0x538(%rbp), %xmm3
movsd -0x528(%rbp), %xmm2
movsd -0x518(%rbp), %xmm1
movsd -0x508(%rbp), %xmm0
movq -0x540(%rbp), %rax
movsd 0x28(%rax), %xmm5
leaq -0x268(%rbp), %rdi
callq 0xd7d80
movsd %xmm0, -0x550(%rbp)
jmp 0x98bf0
movsd -0x550(%rbp), %xmm0
movsd %xmm0, -0x38(%rbp)
leaq -0x268(%rbp), %rdi
callq 0x122d0
movsd -0x38(%rbp), %xmm0
ucomisd -0x60(%rbp), %xmm0
jbe 0x9916d
movsd -0x38(%rbp), %xmm1
movsd -0x58(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x9916d
movq -0x378(%rbp), %rsi
leaq -0x2e0(%rbp), %rdi
callq 0x96bf0
jmp 0x98c42
movq -0x378(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x78(%rbp), %rsi
callq 0xf090
movq %rax, -0x558(%rbp)
jmp 0x98c62
movq -0x378(%rbp), %rdi
movq -0x558(%rbp), %rax
movsd 0x18(%rax), %xmm0
movsd %xmm0, -0x568(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x78(%rbp), %rsi
callq 0xf090
movq %rax, -0x560(%rbp)
jmp 0x98c96
movq -0x378(%rbp), %rdi
movq -0x560(%rbp), %rax
movsd 0x20(%rax), %xmm0
movsd %xmm0, -0x578(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x78(%rbp), %rsi
callq 0xf090
movq %rax, -0x570(%rbp)
jmp 0x98cca
movq -0x378(%rbp), %rdi
movq -0x570(%rbp), %rax
movsd 0x28(%rax), %xmm0
movsd %xmm0, -0x588(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x1ec(%rbp), %rsi
callq 0xf090
movq %rax, -0x580(%rbp)
jmp 0x98d01
movq -0x378(%rbp), %rdi
movq -0x580(%rbp), %rax
movsd 0x18(%rax), %xmm0
movsd %xmm0, -0x598(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x1ec(%rbp), %rsi
callq 0xf090
movq %rax, -0x590(%rbp)
jmp 0x98d38
movq -0x378(%rbp), %rdi
movq -0x590(%rbp), %rax
movsd 0x20(%rax), %xmm0
movsd %xmm0, -0x5a8(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x1ec(%rbp), %rsi
callq 0xf090
movq %rax, -0x5a0(%rbp)
jmp 0x98d6f
movsd -0x5a8(%rbp), %xmm4
movsd -0x598(%rbp), %xmm3
movsd -0x588(%rbp), %xmm2
movsd -0x578(%rbp), %xmm1
movsd -0x568(%rbp), %xmm0
movq -0x5a0(%rbp), %rax
movsd 0x28(%rax), %xmm5
leaq -0x2e0(%rbp), %rdi
callq 0xd7d80
movsd %xmm0, -0x5b0(%rbp)
jmp 0x98db9
movsd -0x5b0(%rbp), %xmm0
movsd %xmm0, -0x48(%rbp)
leaq -0x2e0(%rbp), %rdi
callq 0x122d0
movsd -0x48(%rbp), %xmm0
ucomisd -0x60(%rbp), %xmm0
jbe 0x9916b
movsd -0x48(%rbp), %xmm1
movsd -0x58(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x9916b
movq -0x378(%rbp), %rsi
leaq -0x358(%rbp), %rdi
callq 0x96bf0
jmp 0x98e0b
movq -0x378(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0xf4(%rbp), %rsi
callq 0xf090
movq %rax, -0x5b8(%rbp)
jmp 0x98e2e
movq -0x378(%rbp), %rdi
movq -0x5b8(%rbp), %rax
movsd 0x18(%rax), %xmm0
movsd %xmm0, -0x5c8(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0xf4(%rbp), %rsi
callq 0xf090
movq %rax, -0x5c0(%rbp)
jmp 0x98e65
movq -0x378(%rbp), %rdi
movq -0x5c0(%rbp), %rax
movsd 0x20(%rax), %xmm0
movsd %xmm0, -0x5d8(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0xf4(%rbp), %rsi
callq 0xf090
movq %rax, -0x5d0(%rbp)
jmp 0x98e9c
movq -0x378(%rbp), %rdi
movq -0x5d0(%rbp), %rax
movsd 0x28(%rax), %xmm0
movsd %xmm0, -0x5e8(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x1ec(%rbp), %rsi
callq 0xf090
movq %rax, -0x5e0(%rbp)
jmp 0x98ed3
movq -0x378(%rbp), %rdi
movq -0x5e0(%rbp), %rax
movsd 0x18(%rax), %xmm0
movsd %xmm0, -0x5f8(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x1ec(%rbp), %rsi
callq 0xf090
movq %rax, -0x5f0(%rbp)
jmp 0x98f0a
movq -0x378(%rbp), %rdi
movq -0x5f0(%rbp), %rax
movsd 0x20(%rax), %xmm0
movsd %xmm0, -0x608(%rbp)
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x1ec(%rbp), %rsi
callq 0xf090
movq %rax, -0x600(%rbp)
jmp 0x98f41
movsd -0x608(%rbp), %xmm4
movsd -0x5f8(%rbp), %xmm3
movsd -0x5e8(%rbp), %xmm2
movsd -0x5d8(%rbp), %xmm1
movsd -0x5c8(%rbp), %xmm0
movq -0x600(%rbp), %rax
movsd 0x28(%rax), %xmm5
leaq -0x358(%rbp), %rdi
callq 0xd7d80
movsd %xmm0, -0x610(%rbp)
jmp 0x98f8b
movsd -0x610(%rbp), %xmm0
movsd %xmm0, -0x50(%rbp)
leaq -0x358(%rbp), %rdi
callq 0x122d0
movsd -0x50(%rbp), %xmm0
ucomisd -0x60(%rbp), %xmm0
jbe 0x99169
movsd -0x50(%rbp), %xmm1
movsd -0x58(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x99169
movq -0x378(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x64(%rbp), %rsi
callq 0xf090
movq %rax, -0x618(%rbp)
jmp 0x98fe8
movq -0x378(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x78(%rbp), %rsi
callq 0xf090
movq %rax, -0x620(%rbp)
jmp 0x99008
movq -0x378(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0xf4(%rbp), %rsi
callq 0xf090
movq %rax, -0x628(%rbp)
jmp 0x9902b
movq -0x378(%rbp), %rdi
addq $0x2f0, %rdi            # imm = 0x2F0
movslq -0x1ec(%rbp), %rsi
callq 0xf090
movq %rax, -0x630(%rbp)
jmp 0x9904e
movq -0x630(%rbp), %r8
movq -0x628(%rbp), %rcx
movq -0x620(%rbp), %rdx
movq -0x618(%rbp), %rsi
movq -0x378(%rbp), %rdi
callq 0x99240
movsd %xmm0, -0x638(%rbp)
jmp 0x99080
movq -0x388(%rbp), %rdi
movsd -0x638(%rbp), %xmm0
movsd %xmm0, -0x360(%rbp)
leaq -0x360(%rbp), %rsi
callq 0x105c0
jmp 0x990a5
jmp 0x99169
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
jmp 0x99228
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0xf0(%rbp), %rdi
callq 0x122d0
jmp 0x99228
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x170(%rbp), %rdi
callq 0x122d0
jmp 0x99228
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x1e8(%rbp), %rdi
callq 0x122d0
jmp 0x99228
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x268(%rbp), %rdi
callq 0x122d0
jmp 0x99228
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x2e0(%rbp), %rdi
callq 0x122d0
jmp 0x99228
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x358(%rbp), %rdi
callq 0x122d0
jmp 0x99228
jmp 0x9916b
jmp 0x9916d
jmp 0x9916f
jmp 0x99171
movl -0x1ec(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1ec(%rbp)
jmp 0x989fa
jmp 0x99187
jmp 0x99189
jmp 0x9918b
jmp 0x9918d
movl -0xf4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xf4(%rbp)
jmp 0x985ef
jmp 0x991a3
jmp 0x991a5
jmp 0x991a7
movl -0x78(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x78(%rbp)
jmp 0x983bf
jmp 0x991b7
jmp 0x991b9
movl -0x64(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x64(%rbp)
jmp 0x98352
movq -0x388(%rbp), %rdi
callq 0x26bb0
movq -0x388(%rbp), %rdi
movq %rax, -0x368(%rbp)
callq 0x269f0
movq %rax, -0x370(%rbp)
movq -0x368(%rbp), %rdi
movq -0x370(%rbp), %rsi
callq 0x65a10
jmp 0x99202
movb $0x1, -0x19(%rbp)
testb $0x1, -0x19(%rbp)
jne 0x99218
movq -0x388(%rbp), %rdi
callq 0xf9d0
movq -0x380(%rbp), %rax
addq $0x640, %rsp            # imm = 0x640
popq %rbp
retq
movq -0x388(%rbp), %rdi
callq 0xf9d0
movq -0x70(%rbp), %rdi
callq 0x58f0
nopl (%rax)