// File: /workspace/github_cpp_makefile_star2_O3/gersteinlab[P]MUSIC/src/ms_ansi_string.cpp
// Function: t_string::get_string_sorting_idx(std::vector<char*, std::allocator<char*>>*)
vector<int>* t_string::get_string_sorting_idx(vector<char*>* string_list)
{
	vector<t_str_node*>* str_nodes = new vector<t_str_node*>();
	for(int i_s = 0; i_s < (int)string_list->size(); i_s++)
	{
		t_str_node* new_node = new t_str_node();
		new_node->i = i_s;
		new_node->str = string_list->at(i_s);
		str_nodes->push_back(new_node);
	} // i_s loop.

	// Sort the nodes.
	sort(str_nodes->begin(), str_nodes->end(), t_string::sort_str_nodes);	

	// Fill the sorting idx.
	vector<int>* string_sort_idx = new vector<int>();
	for(int i_s = 0; i_s < (int)str_nodes->size(); i_s++)
	{
		string_sort_idx->push_back(str_nodes->at(i_s)->i);
		delete(str_nodes->at(i_s));
	} // i_s loop.

	delete(str_nodes);

	return(string_sort_idx);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %rdi, %r14
movl $0x18, %edi
callq 0x2180
movq %rax, %rbx
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq $0x0, 0x10(%rax)
movq (%r14), %rbp
movq 0x8(%r14), %r13
subq %rbp, %r13
sarq $0x3, %r13
movq %rax, %r12
addq $0x8, %r12
testl %r13d, %r13d
jle 0x26aff
movq %r12, 0x8(%rsp)
xorl %r15d, %r15d
leaq 0x30(%rsp), %r12
movl $0x10, %edi
callq 0x2180
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movq %rax, 0x30(%rsp)
movl %r15d, 0x8(%rax)
cmpq %r15, %r13
jbe 0x26bdc
movq (%rbp,%r15,8), %rcx
movq %rcx, (%rax)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x268fd
movq %rax, (%rsi)
movq 0x8(%rsp), %rax
addq $0x8, (%rax)
jmp 0x26908
movq %rbx, %rdi
movq %r12, %rdx
callq 0x2920a
incq %r15
movq (%r14), %rbp
movq 0x8(%r14), %rax
subq %rbp, %rax
movq %rax, %r13
sarq $0x3, %r13
shrq $0x3, %rax
cltq
cmpq %rax, %r15
jl 0x268bb
movq (%rbx), %r14
movq 0x8(%rbx), %r15
cmpq %r15, %r14
je 0x26afa
movq %rbx, 0x10(%rsp)
movq %r15, %rbx
subq %r14, %rbx
movq %rbx, %rax
sarq $0x3, %rax
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
leaq 0x293(%rip), %rcx       # 0x26bf0
movq %r14, %rdi
movq %r15, %rsi
callq 0x29345
leaq 0x8(%r14), %r12
cmpq $0x81, %rbx
movq %r15, 0x18(%rsp)
jl 0x26a69
movl $0x8, %r13d
movq %r12, 0x28(%rsp)
movq %r14, %rbx
leaq (%r14,%r13), %rax
movq %rax, 0x20(%rsp)
movq (%r14,%r13), %r15
movq (%r14), %rax
movq (%r15), %rbp
movq (%rax), %rsi
movq %rbp, %rdi
callq 0x267e2
testb %al, %al
je 0x269c3
movq 0x28(%rsp), %rdi
movq %r14, %rsi
movq %r13, %rdx
callq 0x22b0
movq %r14, %rbp
jmp 0x269f8
movq (%rbx), %rbx
movq (%rbx), %rsi
movq %rbp, %rdi
callq 0x267e2
movq 0x20(%rsp), %rbp
testb %al, %al
je 0x269f8
movq %r12, %rbp
movq %rbx, (%rbp)
movq -0x10(%rbp), %rbx
movq (%r15), %rdi
movq (%rbx), %rsi
callq 0x267e2
addq $-0x8, %rbp
testb %al, %al
jne 0x269dd
movq %r15, (%rbp)
addq $0x8, %r13
addq $0x8, %r12
cmpq $0x80, %r13
movq 0x20(%rsp), %rbx
jne 0x2698c
subq $-0x80, %r14
movq 0x18(%rsp), %r13
cmpq %r13, %r14
je 0x26af5
movq -0x8(%r14), %r12
movq (%r14), %r15
movq (%r15), %rdi
movq (%r12), %rsi
callq 0x267e2
movq %r14, %rbx
testb %al, %al
je 0x26a60
movq %r14, %rbx
movq %r12, (%rbx)
movq -0x10(%rbx), %r12
movq (%r15), %rdi
movq (%r12), %rsi
callq 0x267e2
addq $-0x8, %rbx
testb %al, %al
jne 0x26a45
movq %r15, (%rbx)
addq $0x8, %r14
jmp 0x26a1f
cmpq %r15, %r12
je 0x26af5
movq %r14, %rbp
movq %rbp, %r13
movq %r12, %rbp
movq (%r12), %r15
movq (%r14), %rax
movq (%r15), %r12
movq (%rax), %rsi
movq %r12, %rdi
callq 0x267e2
testb %al, %al
je 0x26ab1
movq %rbp, %rdx
subq %r14, %rdx
subq %rdx, %r13
addq $0x10, %r13
movq %r13, %rdi
movq %r14, %rsi
callq 0x22b0
movq %r14, %r12
jmp 0x26ae6
movq (%r13), %rbx
movq (%rbx), %rsi
movq %r12, %rdi
callq 0x267e2
movq %rbp, %r12
testb %al, %al
je 0x26ae6
movq %rbp, %r12
movq %rbx, (%r12)
movq -0x10(%r12), %rbx
movq (%r15), %rdi
movq (%rbx), %rsi
callq 0x267e2
addq $-0x8, %r12
testb %al, %al
jne 0x26aca
movq %r15, (%r12)
leaq 0x8(%rbp), %r12
cmpq 0x18(%rsp), %r12
jne 0x26a75
movq 0x10(%rsp), %rbx
movq 0x8(%rsp), %r12
movl $0x18, %edi
callq 0x2180
movq %rax, %r14
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq $0x0, 0x10(%rax)
movq (%rbx), %rdi
movq 0x8(%rbx), %rdx
subq %rdi, %rdx
sarq $0x3, %rdx
testl %edx, %edx
jle 0x26ba0
xorl %r15d, %r15d
cmpq %r15, %rdx
jbe 0x26bd0
movq (%rdi,%r15,8), %rdx
addq $0x8, %rdx
movq 0x8(%r14), %rsi
cmpq 0x10(%r14), %rsi
je 0x26b58
movl (%rdx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%r14)
jmp 0x26b63
movq %r14, %rdi
callq 0xabfa
movq (%rbx), %rdi
movq (%r12), %rdx
subq %rdi, %rdx
sarq $0x3, %rdx
cmpq %r15, %rdx
jbe 0x26bd0
movq (%rdi,%r15,8), %rdi
movl $0x10, %esi
callq 0x2190
incq %r15
movq (%rbx), %rdi
movq 0x8(%rbx), %rax
subq %rdi, %rax
movq %rax, %rdx
sarq $0x3, %rdx
shrq $0x3, %rax
cltq
cmpq %rax, %r15
jl 0x26b2f
testq %rdi, %rdi
je 0x26bb1
movq 0x10(%rbx), %rsi
subq %rdi, %rsi
callq 0x2190
movl $0x18, %esi
movq %rbx, %rdi
callq 0x2190
movq %r14, %rax
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x5cf9(%rip), %rdi      # 0x2c8d0
movq %r15, %rsi
jmp 0x26be9
leaq 0x5ced(%rip), %rdi      # 0x2c8d0
movq %r15, %rsi
movq %r13, %rdx
xorl %eax, %eax
callq 0x2270