// File: /workspace/github_c_makefile_star2_O0/sabotage-linux[P]libnl-tiny/genl_family.c
// Function: family_compare
static int family_compare(struct nl_object *_a, struct nl_object *_b,
			  uint32_t attrs, int flags)
{
	struct genl_family *a = (struct genl_family *) _a;
	struct genl_family *b = (struct genl_family *) _b;
	int diff = 0;

#define FAM_DIFF(ATTR, EXPR) ATTR_DIFF(attrs, FAMILY_ATTR_##ATTR, a, b, EXPR)

	diff |= FAM_DIFF(ID,		a->gf_id != b->gf_id);
	diff |= FAM_DIFF(VERSION,	a->gf_version != b->gf_version);
	diff |= FAM_DIFF(HDRSIZE,	a->gf_hdrsize != b->gf_hdrsize);
	diff |= FAM_DIFF(MAXATTR,	a->gf_maxattr != b->gf_maxattr);
	diff |= FAM_DIFF(NAME,		strcmp(a->gf_name, b->gf_name));

#undef FAM_DIFF

	return diff;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movl %ecx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x28(%rbp)
movl $0x0, -0x2c(%rbp)
movl $0x0, -0x30(%rbp)
movl -0x14(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x7e30
movq -0x20(%rbp), %rax
movl 0x30(%rax), %eax
movq -0x28(%rbp), %rcx
andl 0x30(%rcx), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x7e29
movq -0x20(%rbp), %rax
movzwl 0x34(%rax), %eax
movq -0x28(%rbp), %rcx
movzwl 0x34(%rcx), %ecx
cmpl %ecx, %eax
je 0x7e30
movl $0x1, -0x30(%rbp)
movl -0x30(%rbp), %eax
movl %eax, -0x34(%rbp)
movl -0x34(%rbp), %eax
orl -0x2c(%rbp), %eax
movl %eax, -0x2c(%rbp)
movl $0x0, -0x38(%rbp)
movl -0x14(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x7e7e
movq -0x20(%rbp), %rax
movl 0x30(%rax), %eax
movq -0x28(%rbp), %rcx
andl 0x30(%rcx), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x7e77
movq -0x20(%rbp), %rax
movl 0x48(%rax), %eax
movq -0x28(%rbp), %rcx
cmpl 0x48(%rcx), %eax
je 0x7e7e
movl $0x4, -0x38(%rbp)
movl -0x38(%rbp), %eax
movl %eax, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
orl -0x2c(%rbp), %eax
movl %eax, -0x2c(%rbp)
movl $0x0, -0x40(%rbp)
movl -0x14(%rbp), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x7ecc
movq -0x20(%rbp), %rax
movl 0x30(%rax), %eax
movq -0x28(%rbp), %rcx
andl 0x30(%rcx), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x7ec5
movq -0x20(%rbp), %rax
movl 0x4c(%rax), %eax
movq -0x28(%rbp), %rcx
cmpl 0x4c(%rcx), %eax
je 0x7ecc
movl $0x8, -0x40(%rbp)
movl -0x40(%rbp), %eax
movl %eax, -0x44(%rbp)
movl -0x44(%rbp), %eax
orl -0x2c(%rbp), %eax
movl %eax, -0x2c(%rbp)
movl $0x0, -0x48(%rbp)
movl -0x14(%rbp), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0x7f1a
movq -0x20(%rbp), %rax
movl 0x30(%rax), %eax
movq -0x28(%rbp), %rcx
andl 0x30(%rcx), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0x7f13
movq -0x20(%rbp), %rax
movl 0x50(%rax), %eax
movq -0x28(%rbp), %rcx
cmpl 0x50(%rcx), %eax
je 0x7f1a
movl $0x10, -0x48(%rbp)
movl -0x48(%rbp), %eax
movl %eax, -0x4c(%rbp)
movl -0x4c(%rbp), %eax
orl -0x2c(%rbp), %eax
movl %eax, -0x2c(%rbp)
movl $0x0, -0x50(%rbp)
movl -0x14(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x7f72
movq -0x20(%rbp), %rax
movl 0x30(%rax), %eax
movq -0x28(%rbp), %rcx
andl 0x30(%rcx), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x7f6b
movq -0x20(%rbp), %rdi
addq $0x36, %rdi
movq -0x28(%rbp), %rsi
addq $0x36, %rsi
callq 0x32d0
cmpl $0x0, %eax
je 0x7f72
movl $0x2, -0x50(%rbp)
movl -0x50(%rbp), %eax
movl %eax, -0x54(%rbp)
movl -0x54(%rbp), %eax
orl -0x2c(%rbp), %eax
movl %eax, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
addq $0x60, %rsp
popq %rbp
retq
nopw (%rax,%rax)