// File: /workspace/github_c_makefile_star2_O1/neosploit[P]compiler/libfort/lib/fort.c
// Function: get_cell_property_hierarchically
FT_INTERNAL
int get_cell_property_hierarchically(const f_table_properties_t *propertiess, size_t row, size_t column, uint32_t property)
{
    assert(propertiess);
    size_t row_origin = row;

    const f_cell_props_t *opt = NULL;
    if (propertiess->cell_properties != NULL) {
        while (1) {
            opt = cget_cell_prop(propertiess->cell_properties, row, column);
            if (opt != NULL && PROP_IS_SET(opt->properties_flags, property))
                break;

            if (row != FT_ANY_ROW && column != FT_ANY_COLUMN) {
                row = FT_ANY_ROW;
                continue;
            } else if (row == FT_ANY_ROW && column != FT_ANY_COLUMN) {
                row = row_origin;
                column = FT_ANY_COLUMN;
                continue;
            } else if (row != FT_ANY_ROW  && column == FT_ANY_COLUMN) {
                row = FT_ANY_ROW;
                column = FT_ANY_COLUMN;
                continue;
            }

            opt = NULL;
            break;
        }
    }

    return get_prop_value_if_exists_otherwise_default(opt, property);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
testq %rdi, %rdi
je 0x14842
movq 0x160(%rdi), %rdi
testq %rdi, %rdi
je 0x14751
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
movq (%rdi), %r9
movq %rsi, %rbx
movq %rdx, %r11
movq %rbx, %r10
testq %r9, %r9
je 0x14702
movq 0x8(%rdi), %rdx
movq 0x18(%rdi), %rbx
movq %r9, %r14
cmpq %r10, (%rdx)
jne 0x146f2
cmpq %r11, 0x8(%rdx)
jne 0x146f2
xorl %r15d, %r15d
movq %rdx, %rax
jmp 0x146f5
movb $0x1, %r15b
testb %r15b, %r15b
je 0x14704
addq %rbx, %rdx
decq %r14
jne 0x146df
xorl %eax, %eax
testq %rax, %rax
je 0x1470e
testl %ecx, 0x10(%rax)
jne 0x14753
cmpq %r8, %r11
je 0x1471d
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
cmpq %r8, %r10
jne 0x146cc
cmpq %r8, %r11
setne %al
cmpq %r8, %r10
sete %r14b
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movq %rsi, %rbx
testb %r14b, %al
jne 0x146c9
cmpq %r8, %r11
jne 0x14751
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movl $0x0, %eax
cmpq %r8, %r10
jne 0x146c9
jmp 0x14753
xorl %eax, %eax
testq %rax, %rax
je 0x1475d
testl %ecx, 0x10(%rax)
jne 0x14764
leaq 0xe114(%rip), %rax      # 0x22878
cmpl $0x7f, %ecx
jg 0x14793
cmpl $0xf, %ecx
jg 0x147e1
decl %ecx
cmpl $0x7, %ecx
ja 0x14861
leaq 0x4de4(%rip), %rdx      # 0x19564
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movl $0x14, %ecx
jmp 0x14834
cmpl $0x3ff, %ecx            # imm = 0x3FF
jg 0x147be
cmpl $0x80, %ecx
je 0x14821
cmpl $0x100, %ecx            # imm = 0x100
je 0x1480c
cmpl $0x200, %ecx            # imm = 0x200
jne 0x14861
movl $0x3c, %ecx
jmp 0x14834
cmpl $0x400, %ecx            # imm = 0x400
je 0x14828
cmpl $0x800, %ecx            # imm = 0x800
je 0x14813
cmpl $0x1000, %ecx           # imm = 0x1000
jne 0x14861
movl $0x44, %ecx
jmp 0x14834
cmpl $0x10, %ecx
je 0x1482f
cmpl $0x20, %ecx
je 0x1481a
cmpl $0x40, %ecx
jne 0x14861
movl $0x2c, %ecx
jmp 0x14834
movl $0x18, %ecx
jmp 0x14834
movl $0x1c, %ecx
jmp 0x14834
movl $0x20, %ecx
jmp 0x14834
movl $0x34, %ecx
jmp 0x14834
movl $0x40, %ecx
jmp 0x14834
movl $0x28, %ecx
jmp 0x14834
movl $0x30, %ecx
jmp 0x14834
movl $0x38, %ecx
jmp 0x14834
movl $0x24, %ecx
movl (%rax,%rcx), %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0x6200(%rip), %rdi      # 0x1aa49
leaq 0x5236(%rip), %rsi      # 0x19a86
leaq 0x61fe(%rip), %rcx      # 0x1aa55
movl $0x1204, %edx           # imm = 0x1204
callq 0x7130
movl $0x14d, %edi            # imm = 0x14D
callq 0x7270