// File: /workspace/github_c_makefile_star2_O0/aremmell[P]libsir/src/sirhelpers.c
// Function: _sir_validupdatedata
bool __sir_validupdatedata(const sir_update_config_data* data, const char* func,
    const char* file, uint32_t line) {
    if (!_sir_validptr(data))
        return false;

    bool valid = true;
    if ((data->fields & SIRU_ALL) == 0U || (data->fields & ~SIRU_ALL) != 0U)
        valid = false;

    if (valid && _sir_bittest(data->fields, SIRU_LEVELS))
        valid = _sir_validptrnofail(data->levels) &&
                _sir_validlevels(*data->levels);

    if (valid && _sir_bittest(data->fields, SIRU_OPTIONS))
        valid = _sir_validptrnofail(data->opts) &&
                _sir_validopts(*data->opts);

    if (valid && _sir_bittest(data->fields, SIRU_SYSLOG_ID))
        valid = _sir_validstrnofail(data->sl_identity);

    if (valid && _sir_bittest(data->fields, SIRU_SYSLOG_CAT))
        valid = _sir_validstrnofail(data->sl_category);

    if (!valid) {
        SIR_ASSERT(valid);
        (void)__sir_seterror(_SIR_E_INVALID, func, file, line);
    }

    return valid;
}

// Assembly:
subq $0x28, %rsp
movq %rdi, 0x18(%rsp)
movq %rsi, 0x10(%rsp)
movq %rdx, 0x8(%rsp)
movl %ecx, 0x4(%rsp)
movq 0x18(%rsp), %rdi
movl $0x1, %esi
leaq 0x9479(%rip), %rdx      # 0x10f71
leaq 0x9448(%rip), %rcx      # 0x10f47
movl $0x57, %r8d
callq 0x7d10
testb $0x1, %al
jne 0x7b18
movb $0x0, 0x27(%rsp)
jmp 0x7cfe
movb $0x1, 0x3(%rsp)
movq 0x18(%rsp), %rax
movl (%rax), %eax
andl $0xf, %eax
cmpl $0x0, %eax
je 0x7b3b
movq 0x18(%rsp), %rax
movl (%rax), %eax
andl $-0x10, %eax
cmpl $0x0, %eax
je 0x7b40
movb $0x0, 0x3(%rsp)
testb $0x1, 0x3(%rsp)
je 0x7bc3
movq 0x18(%rsp), %rax
movl (%rax), %edi
movl $0x1, %esi
callq 0x7d80
testb $0x1, %al
jne 0x7b5e
jmp 0x7bc3
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rdi
xorl %esi, %esi
leaq 0x9401(%rip), %rdx      # 0x10f71
leaq 0x93d0(%rip), %rcx      # 0x10f47
movl $0x5f, %r8d
callq 0x7d10
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0x2(%rsp)
jne 0x7b91
jmp 0x7bb9
movq 0x18(%rsp), %rax
movq 0x8(%rax), %rax
leaq 0x93d0(%rip), %rsi      # 0x10f71
leaq 0x939f(%rip), %rdx      # 0x10f47
movl $0x60, %ecx
movzwl (%rax), %edi
callq 0x7da0
movb %al, 0x2(%rsp)
movb 0x2(%rsp), %al
andb $0x1, %al
movb %al, 0x3(%rsp)
testb $0x1, 0x3(%rsp)
je 0x7c45
movq 0x18(%rsp), %rax
movl (%rax), %edi
movl $0x2, %esi
callq 0x7d80
testb $0x1, %al
jne 0x7be1
jmp 0x7c45
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rdi
xorl %esi, %esi
leaq 0x937e(%rip), %rdx      # 0x10f71
leaq 0x934d(%rip), %rcx      # 0x10f47
movl $0x63, %r8d
callq 0x7d10
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, 0x1(%rsp)
jne 0x7c14
jmp 0x7c3b
movq 0x18(%rsp), %rax
movq 0x10(%rax), %rax
movl (%rax), %edi
leaq 0x934b(%rip), %rsi      # 0x10f71
leaq 0x931a(%rip), %rdx      # 0x10f47
movl $0x64, %ecx
callq 0x7ed0
movb %al, 0x1(%rsp)
movb 0x1(%rsp), %al
andb $0x1, %al
movb %al, 0x3(%rsp)
testb $0x1, 0x3(%rsp)
je 0x7c8d
movq 0x18(%rsp), %rax
movl (%rax), %edi
movl $0x4, %esi
callq 0x7d80
testb $0x1, %al
jne 0x7c63
jmp 0x7c8d
movq 0x18(%rsp), %rax
movq 0x18(%rax), %rdi
xorl %esi, %esi
leaq 0x92fc(%rip), %rdx      # 0x10f71
leaq 0x92cb(%rip), %rcx      # 0x10f47
movl $0x67, %r8d
callq 0x7ff0
andb $0x1, %al
movb %al, 0x3(%rsp)
testb $0x1, 0x3(%rsp)
je 0x7cd5
movq 0x18(%rsp), %rax
movl (%rax), %edi
movl $0x8, %esi
callq 0x7d80
testb $0x1, %al
jne 0x7cab
jmp 0x7cd5
movq 0x18(%rsp), %rax
movq 0x20(%rax), %rdi
xorl %esi, %esi
leaq 0x92b4(%rip), %rdx      # 0x10f71
leaq 0x9283(%rip), %rcx      # 0x10f47
movl $0x6a, %r8d
callq 0x7ff0
andb $0x1, %al
movb %al, 0x3(%rsp)
testb $0x1, 0x3(%rsp)
jne 0x7cf4
movq 0x10(%rsp), %rsi
movq 0x8(%rsp), %rdx
movl 0x4(%rsp), %ecx
movl $0x800c0000, %edi       # imm = 0x800C0000
callq 0x3940
movb 0x3(%rsp), %al
andb $0x1, %al
movb %al, 0x27(%rsp)
movb 0x27(%rsp), %al
andb $0x1, %al
addq $0x28, %rsp
retq
nopl (%rax)