// File: /workspace/github_c_makefile_star2_O0/OpenKMIP[P]libkmip/src/kmip.c
// Function: kmip_compare_protection_storage_masks
int
kmip_compare_protection_storage_masks(const ProtectionStorageMasks *a, const ProtectionStorageMasks *b)
{
    if(a != b)
    {
        if((a == NULL) || (b == NULL))
        {
            return(KMIP_FALSE);
        }

        if((a->masks != b->masks))
        {
            if((a->masks == NULL) || (b->masks == NULL))
            {
                return(KMIP_FALSE);
            }

            if((a->masks->size != b->masks->size))
            {
                return(KMIP_FALSE);
            }

            LinkedListItem *a_item = a->masks->head;
            LinkedListItem *b_item = b->masks->head;
            while((a_item != NULL) && (b_item != NULL))
            {
                if(a_item != b_item)
                {
                    int32 *a_data = (int32 *)a_item->data;
                    int32 *b_data = (int32 *)b_item->data;
                    if(a_data != b_data)
                    {
                        if((a_data == NULL) || (b_data == NULL))
                        {
                            return(KMIP_FALSE);
                        }
                        if(*a_data != *b_data)
                        {
                            return(KMIP_FALSE);
                        }
                    }
                }

                a_item = a_item->next;
                b_item = b_item->next;
            }

            if(a_item != b_item)
            {
                return(KMIP_FALSE);
            }
        }
    }

    return(KMIP_TRUE);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpq -0x18(%rbp), %rax
je 0xcb08
cmpq $0x0, -0x10(%rbp)
je 0xc9d8
cmpq $0x0, -0x18(%rbp)
jne 0xc9e4
movl $0x0, -0x4(%rbp)
jmp 0xcb0f
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x18(%rbp), %rcx
cmpq (%rcx), %rax
je 0xcb06
movq -0x10(%rbp), %rax
cmpq $0x0, (%rax)
je 0xca0c
movq -0x18(%rbp), %rax
cmpq $0x0, (%rax)
jne 0xca18
movl $0x0, -0x4(%rbp)
jmp 0xcb0f
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movq -0x18(%rbp), %rcx
movq (%rcx), %rcx
cmpq 0x10(%rcx), %rax
je 0xca3c
movl $0x0, -0x4(%rbp)
jmp 0xcb0f
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq (%rax), %rax
movq (%rax), %rax
movq %rax, -0x28(%rbp)
xorl %eax, %eax
cmpq $0x0, -0x20(%rbp)
movb %al, -0x39(%rbp)
je 0xca6f
cmpq $0x0, -0x28(%rbp)
setne %al
movb %al, -0x39(%rbp)
movb -0x39(%rbp), %al
testb $0x1, %al
jne 0xca78
jmp 0xcaf1
movq -0x20(%rbp), %rax
cmpq -0x28(%rbp), %rax
je 0xcad6
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x30(%rbp)
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x30(%rbp), %rax
cmpq -0x38(%rbp), %rax
je 0xcad4
cmpq $0x0, -0x30(%rbp)
je 0xcab2
cmpq $0x0, -0x38(%rbp)
jne 0xcabb
movl $0x0, -0x4(%rbp)
jmp 0xcb0f
movq -0x30(%rbp), %rax
movl (%rax), %eax
movq -0x38(%rbp), %rcx
cmpl (%rcx), %eax
je 0xcad2
movl $0x0, -0x4(%rbp)
jmp 0xcb0f
jmp 0xcad4
jmp 0xcad6
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x28(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x28(%rbp)
jmp 0xca58
movq -0x20(%rbp), %rax
cmpq -0x28(%rbp), %rax
je 0xcb04
movl $0x0, -0x4(%rbp)
jmp 0xcb0f
jmp 0xcb06
jmp 0xcb08
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
popq %rbp
retq
nopw %cs:(%rax,%rax)