// File: /workspace/github_cpp_makefile_star2_O1/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 $0x28, %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
testl %r13d, %r13d
jle 0x26f3f
xorl %r15d, %r15d
leaq 0x20(%rsp), %r12
movl $0x10, %edi
callq 0x2180
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movq %rax, 0x20(%rsp)
movl %r15d, 0x8(%rax)
cmpq %r15, %r13
jbe 0x27218
movq (%rbp,%r15,8), %rcx
movq %rcx, (%rax)
movq 0x8(%rbx), %rsi
cmpq 0x10(%rbx), %rsi
je 0x26f15
movq %rax, (%rsi)
addq $0x8, 0x8(%rbx)
jmp 0x26f20
movq %rbx, %rdi
movq %r12, %rdx
callq 0x2991c
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 0x26ed7
movq (%rbx), %r14
movq 0x8(%rbx), %r15
cmpq %r15, %r14
je 0x27136
movq %rbx, 0x8(%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 0x2b7(%rip), %rcx       # 0x2722c
movq %r14, %rdi
movq %r15, %rsi
callq 0x29a57
leaq 0x8(%r14), %r12
cmpq $0x81, %rbx
jl 0x27096
movq %r15, (%rsp)
movl $0x8, %r13d
movq %r12, 0x10(%rsp)
movq %r14, %rbx
movq %rbx, 0x18(%rsp)
leaq (%r14,%r13), %rbx
movq (%r14,%r13), %r15
movq (%r14), %rax
movq (%r15), %rbp
movq (%rax), %rsi
movq %rbp, %rdi
callq 0x26e14
testb %al, %al
je 0x26fda
movq 0x10(%rsp), %rdi
movq %r14, %rsi
movq %r13, %rdx
callq 0x22b0
movq %r14, %rbp
jmp 0x27018
movq 0x18(%rsp), %rax
movq (%rax), %rax
movq (%rax), %rsi
movq %rbp, %rdi
callq 0x26e14
movq %rbx, %rbp
testb %al, %al
je 0x27018
movq %r12, %rcx
leaq -0x8(%rcx), %rbp
movq -0x10(%rcx), %rax
movq -0x8(%rcx), %rdx
movq %rdx, (%rcx)
movq (%r15), %rdi
movq (%rax), %rsi
callq 0x26e14
movq %rbp, %rcx
testb %al, %al
jne 0x26ff7
movq %r15, (%rbp)
addq $0x8, %r13
addq $0x8, %r12
cmpq $0x80, %r13
jne 0x26fa3
subq $-0x80, %r14
movq (%rsp), %r13
cmpq %r13, %r14
movq 0x8(%rsp), %rbx
je 0x27136
movq -0x8(%r14), %rax
movq (%r14), %r15
movq (%r15), %rdi
movq (%rax), %rsi
callq 0x26e14
movq %r14, %r12
testb %al, %al
je 0x27084
movq %r14, %rcx
leaq -0x8(%rcx), %r12
movq -0x10(%rcx), %rax
movq -0x8(%rcx), %rdx
movq %rdx, (%rcx)
movq (%r15), %rdi
movq (%rax), %rsi
callq 0x26e14
movq %r12, %rcx
testb %al, %al
jne 0x27063
movq %r15, (%r12)
addq $0x8, %r14
cmpq %r13, %r14
jne 0x27047
jmp 0x27136
cmpq %r15, %r12
movq 0x8(%rsp), %rbx
je 0x27136
movq %r14, %rbp
movq %r15, (%rsp)
movq %rbp, %r13
movq %r12, %rbp
movq (%r12), %r15
movq (%r14), %rax
movq (%r15), %r12
movq (%rax), %rsi
movq %r12, %rdi
callq 0x26e14
testb %al, %al
je 0x270e7
movq %rbp, %rdx
subq %r14, %rdx
subq %rdx, %r13
addq $0x10, %r13
movq %r13, %rdi
movq %r14, %rsi
callq 0x22b0
movq %r14, %r12
jmp 0x27121
movq (%r13), %rax
movq (%rax), %rsi
movq %r12, %rdi
callq 0x26e14
movq %rbp, %r12
testb %al, %al
je 0x27121
movq %rbp, %rcx
leaq -0x8(%rcx), %r12
movq -0x10(%rcx), %rax
movq -0x8(%rcx), %rdx
movq %rdx, (%rcx)
movq (%r15), %rdi
movq (%rax), %rsi
callq 0x26e14
movq %r12, %rcx
testb %al, %al
jne 0x27100
movq %r15, (%r12)
leaq 0x8(%rbp), %r12
movq (%rsp), %r15
cmpq %r15, %r12
jne 0x270ab
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 0x271dc
xorl %r15d, %r15d
cmpq %r15, %rdx
jbe 0x2720c
movq (%rdi,%r15,8), %rdx
addq $0x8, %rdx
movq 0x8(%r14), %rsi
cmpq 0x10(%r14), %rsi
je 0x2718f
movl (%rdx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x8(%r14)
jmp 0x27197
movq %r14, %rdi
callq 0xadd0
movq (%rbx), %rax
movq 0x8(%rbx), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
cmpq %r15, %rdx
jbe 0x2720c
movq (%rax,%r15,8), %rdi
testq %rdi, %rdi
je 0x271bd
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 0x27166
testq %rdi, %rdi
je 0x271ed
movq 0x10(%rbx), %rsi
subq %rdi, %rsi
callq 0x2190
movl $0x18, %esi
movq %rbx, %rdi
callq 0x2190
movq %r14, %rax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x66c3(%rip), %rdi      # 0x2d8d6
movq %r15, %rsi
jmp 0x27225
leaq 0x66b7(%rip), %rdi      # 0x2d8d6
movq %r15, %rsi
movq %r13, %rdx
xorl %eax, %eax
callq 0x2270