// File: /workspace/github_c_makefile_star2_O0/CarlosLunaMota[P]BinaryTrees/main.c
// Function: bs_tree_fast_sequential_test
int bs_tree_fast_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_max(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!
    for (i=max_size; i>0; i--) {
        
        found = bs_tree_remove_max(tree);

        // Not enought elements:
        if (found == NULL) { return FAIL; }
        else               { free(found); }

        // It is a bs_tree:
        if (is_bs_tree(tree) == NO) { return FAIL; }
    }
    
    // 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_min(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!
    for (i=max_size; i>0; i--) {
        
        found = bs_tree_remove_min(tree);

        // Not enought elements:
        if (found == NULL) { return FAIL; }
        else               { free(found); }

        // It is a bs_tree:
        if (is_bs_tree(tree) == NO) { return FAIL; }
    }
    
    // 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_max(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_min(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!
    for (i=1; i<=max_size; i++) {
        
        found = bs_tree_remove_max(tree);

        // Not enought elements:
        if (found == NULL) { return FAIL; }
        else               { free(found); }

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

        found = bs_tree_remove_min(tree);

        // Not enought elements:
        if (found == NULL) { return FAIL; }
        else               { free(found); }

        // It is a bs_tree:
        if (is_bs_tree(tree) == NO) { return FAIL; }
    }
    
    // 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 -0xa82(%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 0x1c95
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x18(%rbp), %rdi
callq 0xccf0
cmpl $0x0, %eax
jne 0x1caf
movl $0x1, -0x4(%rbp)
jmp 0x2752
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x1d3d
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 0xcb90
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x1cf9
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x18(%rbp), %rdi
callq 0xf9c0
cmpl $0x0, %eax
jne 0x1d13
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x18(%rbp), %rdi
callq 0xccf0
cmpl $0x1, %eax
jne 0x1d2d
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x1d2f
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x1cb6
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x1db2
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 0x1d87
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x1da5
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x1da7
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x1d52
movq -0x20(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0xce30
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x1ddb
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x28(%rbp), %rax
cmpl $0x0, (%rax)
je 0x1df0
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x1df2
cmpq $0x0, -0x28(%rbp)
je 0x1e82
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 0x1e3d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jl 0x1e3b
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x1e7d
movq -0x18(%rbp), %rdi
callq 0xcec0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x1e5d
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x1e7b
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x1e82
jmp 0x1df2
movq -0x18(%rbp), %rdi
callq 0xcec0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x1ea2
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x28(%rbp), %rax
movl (%rax), %eax
movl -0x8(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
je 0x1ebe
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x1ec0
cmpq $0x0, -0x28(%rbp)
je 0x1f50
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 0x1f0b
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jg 0x1f09
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x1f4b
movq -0x18(%rbp), %rdi
callq 0xce30
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x1f2b
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x1f49
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x1f50
jmp 0x1ec0
movl -0x8(%rbp), %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jle 0x1fac
movq -0x18(%rbp), %rdi
callq 0xd490
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x1f7c
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x28(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0xf9c0
cmpl $0x0, %eax
jne 0x1f9f
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x1fa1
movl -0xc(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x1f56
movq -0x18(%rbp), %rdi
callq 0xf9c0
cmpl $0x0, %eax
jne 0x1fc6
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x18(%rbp), %rdi
callq 0xccf0
cmpl $0x0, %eax
jne 0x1fe0
movl $0x1, -0x4(%rbp)
jmp 0x2752
movl -0x8(%rbp), %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jle 0x206b
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 0xca30
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x2027
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x18(%rbp), %rdi
callq 0xf9c0
cmpl $0x0, %eax
jne 0x2041
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x18(%rbp), %rdi
callq 0xccf0
cmpl $0x1, %eax
jne 0x205b
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x205d
movl -0xc(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x1fe6
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
movl -0x8(%rbp), %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jle 0x20dd
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 0x20b2
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x20d0
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x20d2
movl -0xc(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x207f
movq -0x20(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0xce30
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x2106
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x28(%rbp), %rax
cmpl $0x1, (%rax)
je 0x211b
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x211d
cmpq $0x0, -0x28(%rbp)
je 0x21ad
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 0x2168
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jl 0x2166
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x21a8
movq -0x18(%rbp), %rdi
callq 0xcec0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x2188
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x21a6
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x21ad
jmp 0x211d
movq -0x18(%rbp), %rdi
callq 0xcec0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x21cd
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x28(%rbp), %rax
movl (%rax), %eax
cmpl -0x8(%rbp), %eax
je 0x21e4
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x21e6
cmpq $0x0, -0x28(%rbp)
je 0x2276
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 0x2231
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jg 0x222f
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x2271
movq -0x18(%rbp), %rdi
callq 0xce30
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x2251
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x226f
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x2276
jmp 0x21e6
movl -0x8(%rbp), %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jle 0x22d2
movq -0x18(%rbp), %rdi
callq 0xd3d0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x22a2
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x28(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0xf9c0
cmpl $0x0, %eax
jne 0x22c5
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x22c7
movl -0xc(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x227c
movq -0x18(%rbp), %rdi
callq 0xf9c0
cmpl $0x0, %eax
jne 0x22ec
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x18(%rbp), %rdi
callq 0xccf0
cmpl $0x0, %eax
jne 0x2306
movl $0x1, -0x4(%rbp)
jmp 0x2752
movl $0x1, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jg 0x2409
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 0xcb90
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x2354
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x18(%rbp), %rdi
callq 0xf9c0
cmpl $0x0, %eax
jne 0x236e
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x18(%rbp), %rdi
callq 0xccf0
cmpl $0x1, %eax
jne 0x2388
movl $0x1, -0x4(%rbp)
jmp 0x2752
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 0xca30
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x23c5
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x18(%rbp), %rdi
callq 0xf9c0
cmpl $0x0, %eax
jne 0x23df
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x18(%rbp), %rdi
callq 0xccf0
cmpl $0x1, %eax
jne 0x23f9
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x23fb
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x230d
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
movl $0x1, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jg 0x24d2
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 0x2457
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x2475
movl $0x1, -0x4(%rbp)
jmp 0x2752
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 0x24a4
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x24c2
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x24c4
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x241e
movq -0x20(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0xce30
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x24fb
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x28(%rbp), %rax
movl (%rax), %eax
xorl %ecx, %ecx
subl -0x8(%rbp), %ecx
cmpl %ecx, %eax
je 0x2516
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x2518
cmpq $0x0, -0x28(%rbp)
je 0x25a8
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 0x2563
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jl 0x2561
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x25a3
movq -0x18(%rbp), %rdi
callq 0xcec0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x2583
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x25a1
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x25a8
jmp 0x2518
movq -0x18(%rbp), %rdi
callq 0xcec0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x25c8
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x28(%rbp), %rax
movl (%rax), %eax
cmpl -0x8(%rbp), %eax
je 0x25df
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x25e1
cmpq $0x0, -0x28(%rbp)
je 0x2671
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 0x262c
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jg 0x262a
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x266c
movq -0x18(%rbp), %rdi
callq 0xce30
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x264c
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x266a
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x2671
jmp 0x25e1
movl $0x1, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jg 0x2714
movq -0x18(%rbp), %rdi
callq 0xd490
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x26a4
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x28(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0xf9c0
cmpl $0x0, %eax
jne 0x26c7
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x18(%rbp), %rdi
callq 0xd3d0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x26e4
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x28(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0xf9c0
cmpl $0x0, %eax
jne 0x2704
movl $0x1, -0x4(%rbp)
jmp 0x2752
jmp 0x2706
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x2678
movq -0x18(%rbp), %rdi
callq 0xf9c0
cmpl $0x0, %eax
jne 0x272b
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x18(%rbp), %rdi
callq 0xccf0
cmpl $0x0, %eax
jne 0x2742
movl $0x1, -0x4(%rbp)
jmp 0x2752
movq -0x18(%rbp), %rdi
callq 0x10e0
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax,%rax)