// File: /workspace/github_c_makefile_star2_O0/c0stya[P]fslib/src/test.c
// Function: assert_fst_equal
void assert_fst_equal(const struct _fst * a, const struct _fst * b) {
    struct _state * state_a; 
    struct _state * state_b; 

    struct _arc * arc_a; 
    struct _arc * arc_b; 

    assert (a->start ==     b->start);
    assert (a->sr_type ==   b->sr_type);
    assert (a->n_states ==  b->n_states);
    
    for (state_t st = 0; st < a->n_states && st < b->n_states; ++st) {

        state_a = &a->states[st];
        state_b = &b->states[st];
        
        assert( state_a->n_arcs == state_b->n_arcs );
        assert_state_equal( state_a, state_b );

        for (arc_t arc = 0; 
                    arc < state_a->n_arcs && arc < state_b->n_arcs; 
                    ++arc) {
            arc_a = &state_a->arcs[arc];
            arc_b = &state_b->arcs[arc];

            assert_arc_equal( arc_a, arc_b );
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movl (%rax), %eax
movq -0x10(%rbp), %rcx
cmpl (%rcx), %eax
jne 0x67d0
jmp 0x67ef
leaq 0x1efc(%rip), %rdi      # 0x86d3
leaq 0x1de6(%rip), %rsi      # 0x85c4
movl $0x1a, %edx
leaq 0x1efe(%rip), %rcx      # 0x86e8
callq 0x10b0
movq -0x8(%rbp), %rax
movzbl 0xc(%rax), %eax
movq -0x10(%rbp), %rcx
movzbl 0xc(%rcx), %ecx
cmpl %ecx, %eax
jne 0x6805
jmp 0x6824
leaq 0x1f1c(%rip), %rdi      # 0x8728
leaq 0x1db1(%rip), %rsi      # 0x85c4
movl $0x1b, %edx
leaq 0x1ec9(%rip), %rcx      # 0x86e8
callq 0x10b0
movq -0x8(%rbp), %rax
movl 0x4(%rax), %eax
movq -0x10(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jne 0x6836
jmp 0x6855
leaq 0x1f04(%rip), %rdi      # 0x8741
leaq 0x1d80(%rip), %rsi      # 0x85c4
movl $0x1c, %edx
leaq 0x1e98(%rip), %rcx      # 0x86e8
callq 0x10b0
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %ecx
movq -0x8(%rbp), %rdx
xorl %eax, %eax
cmpl 0x4(%rdx), %ecx
movb %al, -0x39(%rbp)
jae 0x687d
movl -0x34(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x4(%rcx), %eax
setb %al
movb %al, -0x39(%rbp)
movb -0x39(%rbp), %al
testb $0x1, %al
jne 0x6889
jmp 0x6974
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x34(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x34(%rbp), %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movl (%rax), %eax
movq -0x20(%rbp), %rcx
cmpl (%rcx), %eax
jne 0x68c5
jmp 0x68e4
leaq 0x1e90(%rip), %rdi      # 0x875c
leaq 0x1cf1(%rip), %rsi      # 0x85c4
movl $0x23, %edx
leaq 0x1e09(%rip), %rcx      # 0x86e8
callq 0x10b0
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x6760
movl $0x0, -0x38(%rbp)
movl -0x38(%rbp), %ecx
movq -0x18(%rbp), %rdx
xorl %eax, %eax
cmpl (%rdx), %ecx
movb %al, -0x3a(%rbp)
jae 0x6917
movl -0x38(%rbp), %eax
movq -0x20(%rbp), %rcx
cmpl (%rcx), %eax
setb %al
movb %al, -0x3a(%rbp)
movb -0x3a(%rbp), %al
testb $0x1, %al
jne 0x6920
jmp 0x6964
movq -0x18(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x38(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movl -0x38(%rbp), %ecx
shlq $0x4, %rcx
addq %rcx, %rax
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x6680
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x68f8
jmp 0x6966
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x685c
addq $0x40, %rsp
popq %rbp
retq
nopw (%rax,%rax)