// File: /workspace/github_c_makefile_star2_O2/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 0x1352c
movq 0x160(%rdi), %r8
leaq 0xe463(%rip), %rdi      # 0x21878
testq %r8, %r8
je 0x13491
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
movq (%r8), %r10
movq %rsi, %rax
movq %rdx, %rbx
movq %rax, %r11
xorl %edx, %edx
cmpq %rdx, %r10
je 0x13458
movq 0x8(%r8), %rax
movq 0x18(%r8), %r14
imulq %rdx, %r14
cmpq %r11, (%rax,%r14)
jne 0x1344e
addq %r14, %rax
cmpq %rbx, 0x8(%rax)
je 0x13453
incq %rdx
jmp 0x1342e
testl %ecx, 0x10(%rax)
jne 0x13494
cmpq %r9, %rbx
je 0x13467
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
cmpq %r9, %r11
jne 0x13429
cmpq %r9, %rbx
setne %r14b
cmpq %r9, %r11
sete %r15b
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
movq %rsi, %rax
testb %r15b, %r14b
jne 0x13426
cmpq %r9, %rbx
jne 0x13491
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
cmpq %r9, %r11
jne 0x13426
movq %rdi, %rax
leal -0x1(%rcx), %edx
cmpl $0x7, %edx
jbe 0x134df
cmpl $0x10, %ecx
je 0x134ff
cmpl $0x20, %ecx
je 0x13503
cmpl $0x40, %ecx
je 0x1351b
cmpl $0x80, %ecx
je 0x1350b
cmpl $0x100, %ecx            # imm = 0x100
je 0x13507
cmpl $0x200, %ecx            # imm = 0x200
je 0x13513
cmpl $0x400, %ecx            # imm = 0x400
je 0x13517
cmpl $0x800, %ecx            # imm = 0x800
je 0x1350f
cmpl $0x1000, %ecx           # imm = 0x1000
jne 0x1354b
pushq $0x44
jmp 0x1351d
leaq 0x506e(%rip), %rcx      # 0x18554
movslq (%rcx,%rdx,4), %rdx
addq %rcx, %rdx
jmpq *%rdx
pushq $0x14
jmp 0x1351d
pushq $0x1c
jmp 0x1351d
pushq $0x18
jmp 0x1351d
pushq $0x20
jmp 0x1351d
pushq $0x24
jmp 0x1351d
pushq $0x28
jmp 0x1351d
pushq $0x34
jmp 0x1351d
pushq $0x30
jmp 0x1351d
pushq $0x40
jmp 0x1351d
pushq $0x3c
jmp 0x1351d
pushq $0x38
jmp 0x1351d
pushq $0x2c
popq %rcx
movl (%rax,%rcx), %eax
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
leaq 0x647b(%rip), %rdi      # 0x199ae
leaq 0x553c(%rip), %rsi      # 0x18a76
leaq 0x6479(%rip), %rcx      # 0x199ba
movl $0x1204, %edx           # imm = 0x1204
callq 0x7120
movl $0x14d, %edi            # imm = 0x14D
callq 0x7260