// File: /workspace/github_c_makefile_star2_O0/CarlosLunaMota[P]BinaryTrees/main.c
// Function: bs_tree_sequential_test
int bs_tree_sequential_test(int max_size) {

    int i;
    bs_tree *tree  = new_bs_tree(MyComp);
    MyData  *data  = NULL;
    MyData  *found = NULL;

    // It is a bs_tree:
    if (is_bs_tree(tree) == NO) { return FAIL; }

    // It is empty:
    if (bs_tree_is_empty(tree) == NO) { return FAIL; }

    // Insert elements sequentially in the tree:
    for (i=0; i<max_size; i++) {
        
        data = (MyData *) malloc(sizeof(MyData));
        data->key = i;
        found = bs_tree_insert(tree, data);

        // It was not already there:
        if (found != NULL) { return FAIL; }

        // It is a bs_tree:
        if (is_bs_tree(tree) == NO)        { return FAIL; }

        // It is not empty:
        if (bs_tree_is_empty(tree) == YES) { return FAIL; }

    }

    // Check if all elements are there:
    data = (MyData *) malloc(sizeof(MyData));
    for (i=0; i<max_size; i++) {
        data->key = i;
        found = bs_tree_search(tree, data);
        if (found == NULL)            { return FAIL; }
        if (MyComp(data, found) != 0) { return FAIL; }
    }
    free(data);

    // Check if everything is correctly sorted forward...
    found = bs_tree_min(tree);
    if (found == NULL)   { return FAIL; }
    if (found->key != 0) { return FAIL; }
    while (found != NULL) {
        data  = found;
        found = bs_tree_next(tree, data);
        if (found != NULL) {
            if (MyComp(data, found) >= 0) { return FAIL; }
        } else { 
            found = bs_tree_max(tree);
            if (found == NULL)            { return FAIL; }
            if (MyComp(data, found) != 0) { return FAIL; }
            break;
        }
    }

    // ...and backwards.
    found = bs_tree_max(tree);
    if (found == NULL)            { return FAIL; }
    if (found->key != max_size-1) { return FAIL; }
    while (found != NULL) {
        data  = found;
        found = bs_tree_prev(tree, data);
        if (found != NULL) {
            if (MyComp(data, found) <= 0) { return FAIL; }
        } else { 
            found = bs_tree_min(tree);
            if (found == NULL)            { return FAIL; }
            if (MyComp(data, found) != 0) { return FAIL; }
            break; 
        }
    }

    // Now, clean everything!
    bs_tree_remove_all(tree, free);

    // It is a bs_tree:
    if (is_bs_tree(tree) == NO) { return FAIL; }

    // It is empty:
    if (bs_tree_is_empty(tree) == NO) { return FAIL; }

    // Insert elements sequentially in the tree:
    for (i=max_size; i>0; i--) {
        
        data = (MyData *) malloc(sizeof(MyData));
        data->key = i;
        found = bs_tree_insert(tree, data);

        // It was not already there:
        if (found != NULL) { return FAIL; }

        // It is a bs_tree:
        if (is_bs_tree(tree) == NO)        { return FAIL; }

        // It is not empty:
        if (bs_tree_is_empty(tree) == YES) { return FAIL; }

    }

    // Check if all elements are there:
    data = (MyData *) malloc(sizeof(MyData));
    for (i=max_size; i>0; i--) {
        data->key = i;
        found = bs_tree_search(tree, data);
        if (found == NULL)            { return FAIL; }
        if (MyComp(data, found) != 0) { return FAIL; }
    }
    free(data);

    // Check if everything is correctly sorted forward...
    found = bs_tree_min(tree);
    if (found == NULL)   { return FAIL; }
    if (found->key != 1) { return FAIL; }
    while (found != NULL) {
        data  = found;
        found = bs_tree_next(tree, data);
        if (found != NULL) {
            if (MyComp(data, found) >= 0) { return FAIL; }
        } else { 
            found = bs_tree_max(tree);
            if (found == NULL)            { return FAIL; }
            if (MyComp(data, found) != 0) { return FAIL; }
            break;
        }
    }

    // ...and backwards.
    found = bs_tree_max(tree);
    if (found == NULL)          { return FAIL; }
    if (found->key != max_size) { return FAIL; }
    while (found != NULL) {
        data  = found;
        found = bs_tree_prev(tree, data);
        if (found != NULL) {
            if (MyComp(data, found) <= 0) { return FAIL; }
        } else { 
            found = bs_tree_min(tree);
            if (found == NULL)            { return FAIL; }
            if (MyComp(data, found) != 0) { return FAIL; }
            break; 
        }
    }

    // Now, clean everything!
    bs_tree_remove_all(tree, free);

    // It is a bs_tree:
    if (is_bs_tree(tree) == NO) { return FAIL; }

    // It is empty:
    if (bs_tree_is_empty(tree) == NO) { return FAIL; }

    // Insert elements sequentially in the tree:
    for (i=1; i<=max_size; i++) {
        
        data = (MyData *) malloc(sizeof(MyData));
        data->key = i;
        found = bs_tree_insert(tree, data);

        // It was not already there:
        if (found != NULL) { return FAIL; }

        // It is a bs_tree:
        if (is_bs_tree(tree) == NO)        { return FAIL; }

        // It is not empty:
        if (bs_tree_is_empty(tree) == YES) { return FAIL; }

        data = (MyData *) malloc(sizeof(MyData));
        data->key = -i;
        found = bs_tree_insert(tree, data);

        // It was not already there:
        if (found != NULL) { return FAIL; }

        // It is a bs_tree:
        if (is_bs_tree(tree) == NO)        { return FAIL; }

        // It is not empty:
        if (bs_tree_is_empty(tree) == YES) { return FAIL; }

    }

    // Check if all elements are there:
    data = (MyData *) malloc(sizeof(MyData));
    for (i=1; i<=max_size; i++) {
        data->key = i;
        found = bs_tree_search(tree, data);
        if (found == NULL)            { return FAIL; }
        if (MyComp(data, found) != 0) { return FAIL; }
        data->key = -i;
        found = bs_tree_search(tree, data);
        if (found == NULL)            { return FAIL; }
        if (MyComp(data, found) != 0) { return FAIL; }
    }
    free(data);

    // Check if everything is correctly sorted forward...
    found = bs_tree_min(tree);
    if (found == NULL)           { return FAIL; }
    if (found->key != -max_size) { return FAIL; }
    while (found != NULL) {
        data  = found;
        found = bs_tree_next(tree, data);
        if (found != NULL) {
            if (MyComp(data, found) >= 0) { return FAIL; }
        } else { 
            found = bs_tree_max(tree);
            if (found == NULL)            { return FAIL; }
            if (MyComp(data, found) != 0) { return FAIL; }
            break;
        }
    }

    // ...and backwards.
    found = bs_tree_max(tree);
    if (found == NULL)          { return FAIL; }
    if (found->key != max_size) { return FAIL; }
    while (found != NULL) {
        data  = found;
        found = bs_tree_prev(tree, data);
        if (found != NULL) {
            if (MyComp(data, found) <= 0) { return FAIL; }
        } else { 
            found = bs_tree_min(tree);
            if (found == NULL)            { return FAIL; }
            if (MyComp(data, found) != 0) { return FAIL; }
            break; 
        }
    }

    // Now, clean everything!
    bs_tree_remove_all(tree, free);

    // It is a bs_tree:
    if (is_bs_tree(tree) == NO) { return FAIL; }

    // It is empty:
    if (bs_tree_is_empty(tree) == NO) { return FAIL; }

    free(tree);
    
    return PASS;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movl %edi, -0x8(%rbp)
leaq -0xa2(%rip), %rdi       # 0x11e0
callq 0xc5c0
movq %rax, -0x18(%rbp)
movq $0x0, -0x20(%rbp)
movq $0x0, -0x28(%rbp)
movq -0x18(%rbp), %rdi
callq 0xf9c0
cmpl $0x0, %eax
jne 0x12b5
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x18(%rbp), %rdi
callq 0xccf0
cmpl $0x0, %eax
jne 0x12cf
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x135d
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
movl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xc880
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x1319
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x18(%rbp), %rdi
callq 0xf9c0
cmpl $0x0, %eax
jne 0x1333
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x18(%rbp), %rdi
callq 0xccf0
cmpl $0x1, %eax
jne 0x134d
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
jmp 0x134f
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x12d6
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x13d2
movl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xcd50
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x13a7
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x13c5
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
jmp 0x13c7
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x1372
movq -0x20(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0xce30
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x13fb
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x28(%rbp), %rax
cmpl $0x0, (%rax)
je 0x1410
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
jmp 0x1412
cmpq $0x0, -0x28(%rbp)
je 0x14a2
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xd080
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x145d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jl 0x145b
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
jmp 0x149d
movq -0x18(%rbp), %rdi
callq 0xcec0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x147d
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x149b
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
jmp 0x14a2
jmp 0x1412
movq -0x18(%rbp), %rdi
callq 0xcec0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x14c2
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x28(%rbp), %rax
movl (%rax), %eax
movl -0x8(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
je 0x14de
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
jmp 0x14e0
cmpq $0x0, -0x28(%rbp)
je 0x1570
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xcf50
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x152b
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jg 0x1529
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
jmp 0x156b
movq -0x18(%rbp), %rdi
callq 0xce30
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x154b
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x1569
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
jmp 0x1570
jmp 0x14e0
movq -0x18(%rbp), %rdi
movq 0x18a45(%rip), %rsi     # 0x19fc0
callq 0xd550
movq -0x18(%rbp), %rdi
callq 0xf9c0
cmpl $0x0, %eax
jne 0x159a
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x18(%rbp), %rdi
callq 0xccf0
cmpl $0x0, %eax
jne 0x15b4
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movl -0x8(%rbp), %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jle 0x163f
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
movl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xc880
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x15fb
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x18(%rbp), %rdi
callq 0xf9c0
cmpl $0x0, %eax
jne 0x1615
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x18(%rbp), %rdi
callq 0xccf0
cmpl $0x1, %eax
jne 0x162f
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
jmp 0x1631
movl -0xc(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x15ba
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
movl -0x8(%rbp), %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jle 0x16b1
movl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xcd50
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x1686
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x16a4
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
jmp 0x16a6
movl -0xc(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x1653
movq -0x20(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0xce30
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x16da
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x28(%rbp), %rax
cmpl $0x1, (%rax)
je 0x16ef
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
jmp 0x16f1
cmpq $0x0, -0x28(%rbp)
je 0x1781
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xd080
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x173c
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jl 0x173a
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
jmp 0x177c
movq -0x18(%rbp), %rdi
callq 0xcec0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x175c
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x177a
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
jmp 0x1781
jmp 0x16f1
movq -0x18(%rbp), %rdi
callq 0xcec0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x17a1
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x28(%rbp), %rax
movl (%rax), %eax
cmpl -0x8(%rbp), %eax
je 0x17b8
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
jmp 0x17ba
cmpq $0x0, -0x28(%rbp)
je 0x184a
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xcf50
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x1805
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jg 0x1803
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
jmp 0x1845
movq -0x18(%rbp), %rdi
callq 0xce30
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x1825
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x1843
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
jmp 0x184a
jmp 0x17ba
movq -0x18(%rbp), %rdi
movq 0x1876b(%rip), %rsi     # 0x19fc0
callq 0xd550
movq -0x18(%rbp), %rdi
callq 0xf9c0
cmpl $0x0, %eax
jne 0x1874
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x18(%rbp), %rdi
callq 0xccf0
cmpl $0x0, %eax
jne 0x188e
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movl $0x1, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jg 0x1991
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
movl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xc880
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x18dc
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x18(%rbp), %rdi
callq 0xf9c0
cmpl $0x0, %eax
jne 0x18f6
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x18(%rbp), %rdi
callq 0xccf0
cmpl $0x1, %eax
jne 0x1910
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
xorl %ecx, %ecx
subl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xc880
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x194d
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x18(%rbp), %rdi
callq 0xf9c0
cmpl $0x0, %eax
jne 0x1967
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x18(%rbp), %rdi
callq 0xccf0
cmpl $0x1, %eax
jne 0x1981
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
jmp 0x1983
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x1895
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
movl $0x1, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jg 0x1a5a
movl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xcd50
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x19df
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x19fd
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
xorl %ecx, %ecx
subl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xcd50
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x1a2c
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x1a4a
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
jmp 0x1a4c
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x19a6
movq -0x20(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0xce30
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x1a83
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x28(%rbp), %rax
movl (%rax), %eax
xorl %ecx, %ecx
subl -0x8(%rbp), %ecx
cmpl %ecx, %eax
je 0x1a9e
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
jmp 0x1aa0
cmpq $0x0, -0x28(%rbp)
je 0x1b30
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xd080
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x1aeb
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jl 0x1ae9
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
jmp 0x1b2b
movq -0x18(%rbp), %rdi
callq 0xcec0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x1b0b
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x1b29
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
jmp 0x1b30
jmp 0x1aa0
movq -0x18(%rbp), %rdi
callq 0xcec0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x1b50
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x28(%rbp), %rax
movl (%rax), %eax
cmpl -0x8(%rbp), %eax
je 0x1b67
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
jmp 0x1b69
cmpq $0x0, -0x28(%rbp)
je 0x1bef
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0xcf50
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x1bb0
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jg 0x1bae
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
jmp 0x1bea
movq -0x18(%rbp), %rdi
callq 0xce30
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x1bcd
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x1be8
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
jmp 0x1bef
jmp 0x1b69
movq -0x18(%rbp), %rdi
movq 0x183c6(%rip), %rsi     # 0x19fc0
callq 0xd550
movq -0x18(%rbp), %rdi
callq 0xf9c0
cmpl $0x0, %eax
jne 0x1c16
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x18(%rbp), %rdi
callq 0xccf0
cmpl $0x0, %eax
jne 0x1c2d
movl $0x1, -0x4(%rbp)
jmp 0x1c3d
movq -0x18(%rbp), %rdi
callq 0x10e0
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)