// File: /workspace/github_c_makefile_star2_O0/ComplexNetworks-DCC-FCUP[P]gtrieScanner/nauty/nautil.c
// Function: fmperm
void
fmperm(permutation *perm, set *fix, set *mcr, int m, int n)
{
	int i,k,l;

#if !MAXN
	DYNALLOC1(permutation,workperm,workperm_sz,n,"writeperm");
#endif

	EMPTYSET(fix,m);
	EMPTYSET(mcr,m);

	for (i = n; --i >= 0;) workperm[i] = 0;

	for (i = 0; i < n; ++i)
	    if (perm[i] == i)
	    {
	        ADDELEMENT(fix,i);
	        ADDELEMENT(mcr,i);
	    }
	    else if (workperm[i] == 0)
	    {
	        l = i;
	        do
	        {
	            k = l;
	            l = perm[l];
	            workperm[k] = 1;
	        }
	        while (l != i);

	        ADDELEMENT(mcr,i);
	    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movl %r8d, -0x20(%rbp)
movslq -0x20(%rbp), %rax
cmpq 0x2026a(%rip), %rax     # 0x3d530
jbe 0x1d311
cmpq $0x0, 0x20260(%rip)     # 0x3d530
je 0x1d2de
movq 0x2025f(%rip), %rdi     # 0x3d538
callq 0x3320
movslq -0x20(%rbp), %rax
movq %rax, 0x20247(%rip)     # 0x3d530
movslq -0x20(%rbp), %rdi
shlq $0x2, %rdi
callq 0x3370
movq %rax, 0x2023b(%rip)     # 0x3d538
cmpq $0x0, %rax
jne 0x1d30f
leaq 0x3b29(%rip), %rdi      # 0x20e33
callq 0x1d260
jmp 0x1d311
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rax
addq $-0x4, %rax
movq %rax, -0x38(%rbp)
cmpq -0x10(%rbp), %rax
jb 0x1d342
movq -0x38(%rbp), %rax
movl $0x0, (%rax)
jmp 0x1d324
movq -0x18(%rbp), %rax
movslq -0x1c(%rbp), %rcx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, -0x40(%rbp)
movq -0x40(%rbp), %rax
addq $-0x4, %rax
movq %rax, -0x40(%rbp)
cmpq -0x18(%rbp), %rax
jb 0x1d373
movq -0x40(%rbp), %rax
movl $0x0, (%rax)
jmp 0x1d355
movl -0x20(%rbp), %eax
movl %eax, -0x24(%rbp)
movl -0x24(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x24(%rbp)
cmpl $0x0, %eax
jl 0x1d39b
movq 0x201aa(%rip), %rax     # 0x3d538
movslq -0x24(%rbp), %rcx
movl $0x0, (%rax,%rcx,4)
jmp 0x1d379
movl $0x0, -0x24(%rbp)
movl -0x24(%rbp), %eax
cmpl -0x20(%rbp), %eax
jge 0x1d489
movq -0x8(%rbp), %rax
movslq -0x24(%rbp), %rcx
movl (%rax,%rcx,4), %eax
cmpl -0x24(%rbp), %eax
jne 0x1d40c
movl -0x24(%rbp), %eax
andl $0x1f, %eax
movslq %eax, %rcx
leaq 0xe042(%rip), %rax      # 0x2b410
movl (%rax,%rcx,4), %edx
movq -0x10(%rbp), %rax
movl -0x24(%rbp), %ecx
sarl $0x5, %ecx
movslq %ecx, %rcx
orl (%rax,%rcx,4), %edx
movl %edx, (%rax,%rcx,4)
movl -0x24(%rbp), %eax
andl $0x1f, %eax
movslq %eax, %rcx
leaq 0xe01c(%rip), %rax      # 0x2b410
movl (%rax,%rcx,4), %edx
movq -0x18(%rbp), %rax
movl -0x24(%rbp), %ecx
sarl $0x5, %ecx
movslq %ecx, %rcx
orl (%rax,%rcx,4), %edx
movl %edx, (%rax,%rcx,4)
jmp 0x1d479
movq 0x20125(%rip), %rax     # 0x3d538
movslq -0x24(%rbp), %rcx
cmpl $0x0, (%rax,%rcx,4)
jne 0x1d477
movl -0x24(%rbp), %eax
movl %eax, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
movl %eax, -0x28(%rbp)
movq -0x8(%rbp), %rax
movslq -0x2c(%rbp), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x2c(%rbp)
movq 0x200fa(%rip), %rax     # 0x3d538
movslq -0x28(%rbp), %rcx
movl $0x1, (%rax,%rcx,4)
movl -0x2c(%rbp), %eax
cmpl -0x24(%rbp), %eax
jne 0x1d423
movl -0x24(%rbp), %eax
andl $0x1f, %eax
movslq %eax, %rcx
leaq 0xdfaf(%rip), %rax      # 0x2b410
movl (%rax,%rcx,4), %edx
movq -0x18(%rbp), %rax
movl -0x24(%rbp), %ecx
sarl $0x5, %ecx
movslq %ecx, %rcx
orl (%rax,%rcx,4), %edx
movl %edx, (%rax,%rcx,4)
jmp 0x1d479
jmp 0x1d47b
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x1d3a2
addq $0x40, %rsp
popq %rbp
retq
nop