// File: /workspace/github_c_makefile_star2_O3/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 0x14241
movq 0x160(%rdi), %r8
leaq 0xd792(%rip), %rdi      # 0x21878
testq %r8, %r8
je 0x14160
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
movq (%r8), %r10
movq %rsi, %rax
movq %rdx, %rbx
movq %rax, %r11
testq %r10, %r10
je 0x14127
movq 0x8(%r8), %rax
movq 0x18(%r8), %rdx
movq %r10, %r14
cmpq %r11, (%rax)
jne 0x14118
cmpq %rbx, 0x8(%rax)
je 0x14122
addq %rdx, %rax
decq %r14
jne 0x1410d
jmp 0x14127
testl %ecx, 0x10(%rax)
jne 0x14163
cmpq %r9, %rbx
je 0x14136
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
cmpq %r9, %r11
jne 0x140fa
cmpq %r9, %rbx
setne %r14b
cmpq %r9, %r11
sete %r15b
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movq %rsi, %rax
testb %r15b, %r14b
jne 0x140f7
cmpq %r9, %rbx
jne 0x14160
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
cmpq %r9, %r11
jne 0x140f7
movq %rdi, %rax
cmpl $0x7f, %ecx
jg 0x14192
cmpl $0xf, %ecx
jg 0x141e0
decl %ecx
cmpl $0x7, %ecx
ja 0x14260
leaq 0x53d5(%rip), %rdx      # 0x19554
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
movl $0x14, %ecx
jmp 0x14233
cmpl $0x3ff, %ecx            # imm = 0x3FF
jg 0x141bd
cmpl $0x80, %ecx
je 0x14220
cmpl $0x100, %ecx            # imm = 0x100
je 0x1420b
cmpl $0x200, %ecx            # imm = 0x200
jne 0x14260
movl $0x3c, %ecx
jmp 0x14233
cmpl $0x400, %ecx            # imm = 0x400
je 0x14227
cmpl $0x800, %ecx            # imm = 0x800
je 0x14212
cmpl $0x1000, %ecx           # imm = 0x1000
jne 0x14260
movl $0x44, %ecx
jmp 0x14233
cmpl $0x10, %ecx
je 0x1422e
cmpl $0x20, %ecx
je 0x14219
cmpl $0x40, %ecx
jne 0x14260
movl $0x2c, %ecx
jmp 0x14233
movl $0x18, %ecx
jmp 0x14233
movl $0x1c, %ecx
jmp 0x14233
movl $0x20, %ecx
jmp 0x14233
movl $0x34, %ecx
jmp 0x14233
movl $0x40, %ecx
jmp 0x14233
movl $0x28, %ecx
jmp 0x14233
movl $0x30, %ecx
jmp 0x14233
movl $0x38, %ecx
jmp 0x14233
movl $0x24, %ecx
movl (%rax,%rcx), %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0x6753(%rip), %rdi      # 0x1a99b
leaq 0x5827(%rip), %rsi      # 0x19a76
leaq 0x6751(%rip), %rcx      # 0x1a9a7
movl $0x1204, %edx           # imm = 0x1204
callq 0x7120
movl $0x14d, %edi            # imm = 0x14D
callq 0x7260