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

    int i;
    rb_tree *tree  = new_rb_tree(MyComp);
    MyData  *data  = NULL;
    MyData  *found = NULL;

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

    // It is empty:
    if (rb_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 = rb_tree_insert(tree, data);

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

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

        // It is not empty:
        if (rb_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 = rb_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 = rb_tree_min(tree);
    if (found == NULL)   { return FAIL; }
    if (found->key != 0) { return FAIL; }
    while (found != NULL) {
        data  = found;
        found = rb_tree_next(tree, data);
        if (found != NULL) {
            if (MyComp(data, found) >= 0) { return FAIL; }
        } else { 
            found = rb_tree_max(tree);
            if (found == NULL)            { return FAIL; }
            if (MyComp(data, found) != 0) { return FAIL; }
            break;
        }
    }

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

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

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

    // It is empty:
    if (rb_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 = rb_tree_insert(tree, data);

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

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

        // It is not empty:
        if (rb_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 = rb_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 = rb_tree_min(tree);
    if (found == NULL)   { return FAIL; }
    if (found->key != 1) { return FAIL; }
    while (found != NULL) {
        data  = found;
        found = rb_tree_next(tree, data);
        if (found != NULL) {
            if (MyComp(data, found) >= 0) { return FAIL; }
        } else { 
            found = rb_tree_max(tree);
            if (found == NULL)            { return FAIL; }
            if (MyComp(data, found) != 0) { return FAIL; }
            break;
        }
    }

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

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

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

    // It is empty:
    if (rb_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 = rb_tree_insert(tree, data);

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

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

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

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

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

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

        // It is not empty:
        if (rb_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 = rb_tree_search(tree, data);
        if (found == NULL)            { return FAIL; }
        if (MyComp(data, found) != 0) { return FAIL; }
        data->key = -i;
        found = rb_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 = rb_tree_min(tree);
    if (found == NULL)           { return FAIL; }
    if (found->key != -max_size) { return FAIL; }
    while (found != NULL) {
        data  = found;
        found = rb_tree_next(tree, data);
        if (found != NULL) {
            if (MyComp(data, found) >= 0) { return FAIL; }
        } else { 
            found = rb_tree_max(tree);
            if (found == NULL)            { return FAIL; }
            if (MyComp(data, found) != 0) { return FAIL; }
            break;
        }
    }

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

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

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

    // It is empty:
    if (rb_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 -0x3ba2(%rip), %rdi     # 0x11e0
callq 0xfe40
movq %rax, -0x18(%rbp)
movq $0x0, -0x20(%rbp)
movq $0x0, -0x28(%rbp)
movq -0x18(%rbp), %rdi
callq 0x13b90
cmpl $0x0, %eax
jne 0x4db5
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x18(%rbp), %rdi
callq 0x10ae0
cmpl $0x0, %eax
jne 0x4dcf
movl $0x1, -0x4(%rbp)
jmp 0x573d
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x4e5d
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 0x10330
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x4e19
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x18(%rbp), %rdi
callq 0x13b90
cmpl $0x0, %eax
jne 0x4e33
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x18(%rbp), %rdi
callq 0x10ae0
cmpl $0x1, %eax
jne 0x4e4d
movl $0x1, -0x4(%rbp)
jmp 0x573d
jmp 0x4e4f
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x4dd6
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x4ed2
movl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x10b40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x4ea7
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x4ec5
movl $0x1, -0x4(%rbp)
jmp 0x573d
jmp 0x4ec7
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x4e72
movq -0x20(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0x10c20
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x4efb
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x28(%rbp), %rax
cmpl $0x0, (%rax)
je 0x4f10
movl $0x1, -0x4(%rbp)
jmp 0x573d
jmp 0x4f12
cmpq $0x0, -0x28(%rbp)
je 0x4fa2
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x10e70
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x4f5d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jl 0x4f5b
movl $0x1, -0x4(%rbp)
jmp 0x573d
jmp 0x4f9d
movq -0x18(%rbp), %rdi
callq 0x10cb0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x4f7d
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x4f9b
movl $0x1, -0x4(%rbp)
jmp 0x573d
jmp 0x4fa2
jmp 0x4f12
movq -0x18(%rbp), %rdi
callq 0x10cb0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x4fc2
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x28(%rbp), %rax
movl (%rax), %eax
movl -0x8(%rbp), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
je 0x4fde
movl $0x1, -0x4(%rbp)
jmp 0x573d
jmp 0x4fe0
cmpq $0x0, -0x28(%rbp)
je 0x5070
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x10d40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x502b
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jg 0x5029
movl $0x1, -0x4(%rbp)
jmp 0x573d
jmp 0x506b
movq -0x18(%rbp), %rdi
callq 0x10c20
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x504b
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x5069
movl $0x1, -0x4(%rbp)
jmp 0x573d
jmp 0x5070
jmp 0x4fe0
movq -0x18(%rbp), %rdi
movq 0x14f45(%rip), %rsi     # 0x19fc0
callq 0x11fb0
movq -0x18(%rbp), %rdi
callq 0x13b90
cmpl $0x0, %eax
jne 0x509a
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x18(%rbp), %rdi
callq 0x10ae0
cmpl $0x0, %eax
jne 0x50b4
movl $0x1, -0x4(%rbp)
jmp 0x573d
movl -0x8(%rbp), %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jle 0x513f
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 0x10330
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x50fb
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x18(%rbp), %rdi
callq 0x13b90
cmpl $0x0, %eax
jne 0x5115
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x18(%rbp), %rdi
callq 0x10ae0
cmpl $0x1, %eax
jne 0x512f
movl $0x1, -0x4(%rbp)
jmp 0x573d
jmp 0x5131
movl -0xc(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x50ba
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
movl -0x8(%rbp), %eax
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jle 0x51b1
movl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x10b40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x5186
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x51a4
movl $0x1, -0x4(%rbp)
jmp 0x573d
jmp 0x51a6
movl -0xc(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x5153
movq -0x20(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0x10c20
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x51da
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x28(%rbp), %rax
cmpl $0x1, (%rax)
je 0x51ef
movl $0x1, -0x4(%rbp)
jmp 0x573d
jmp 0x51f1
cmpq $0x0, -0x28(%rbp)
je 0x5281
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x10e70
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x523c
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jl 0x523a
movl $0x1, -0x4(%rbp)
jmp 0x573d
jmp 0x527c
movq -0x18(%rbp), %rdi
callq 0x10cb0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x525c
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x527a
movl $0x1, -0x4(%rbp)
jmp 0x573d
jmp 0x5281
jmp 0x51f1
movq -0x18(%rbp), %rdi
callq 0x10cb0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x52a1
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x28(%rbp), %rax
movl (%rax), %eax
cmpl -0x8(%rbp), %eax
je 0x52b8
movl $0x1, -0x4(%rbp)
jmp 0x573d
jmp 0x52ba
cmpq $0x0, -0x28(%rbp)
je 0x534a
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x10d40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x5305
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jg 0x5303
movl $0x1, -0x4(%rbp)
jmp 0x573d
jmp 0x5345
movq -0x18(%rbp), %rdi
callq 0x10c20
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x5325
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x5343
movl $0x1, -0x4(%rbp)
jmp 0x573d
jmp 0x534a
jmp 0x52ba
movq -0x18(%rbp), %rdi
movq 0x14c6b(%rip), %rsi     # 0x19fc0
callq 0x11fb0
movq -0x18(%rbp), %rdi
callq 0x13b90
cmpl $0x0, %eax
jne 0x5374
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x18(%rbp), %rdi
callq 0x10ae0
cmpl $0x0, %eax
jne 0x538e
movl $0x1, -0x4(%rbp)
jmp 0x573d
movl $0x1, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jg 0x5491
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 0x10330
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x53dc
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x18(%rbp), %rdi
callq 0x13b90
cmpl $0x0, %eax
jne 0x53f6
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x18(%rbp), %rdi
callq 0x10ae0
cmpl $0x1, %eax
jne 0x5410
movl $0x1, -0x4(%rbp)
jmp 0x573d
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 0x10330
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x544d
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x18(%rbp), %rdi
callq 0x13b90
cmpl $0x0, %eax
jne 0x5467
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x18(%rbp), %rdi
callq 0x10ae0
cmpl $0x1, %eax
jne 0x5481
movl $0x1, -0x4(%rbp)
jmp 0x573d
jmp 0x5483
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x5395
movl $0x4, %edi
callq 0x10a0
movq %rax, -0x20(%rbp)
movl $0x1, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x8(%rbp), %eax
jg 0x555a
movl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x10b40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x54df
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x54fd
movl $0x1, -0x4(%rbp)
jmp 0x573d
xorl %ecx, %ecx
subl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movl %ecx, (%rax)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x10b40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x552c
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x554a
movl $0x1, -0x4(%rbp)
jmp 0x573d
jmp 0x554c
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x54a6
movq -0x20(%rbp), %rdi
callq 0x10e0
movq -0x18(%rbp), %rdi
callq 0x10c20
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x5583
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x28(%rbp), %rax
movl (%rax), %eax
xorl %ecx, %ecx
subl -0x8(%rbp), %ecx
cmpl %ecx, %eax
je 0x559e
movl $0x1, -0x4(%rbp)
jmp 0x573d
jmp 0x55a0
cmpq $0x0, -0x28(%rbp)
je 0x5630
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x10e70
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x55eb
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jl 0x55e9
movl $0x1, -0x4(%rbp)
jmp 0x573d
jmp 0x562b
movq -0x18(%rbp), %rdi
callq 0x10cb0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x560b
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x5629
movl $0x1, -0x4(%rbp)
jmp 0x573d
jmp 0x5630
jmp 0x55a0
movq -0x18(%rbp), %rdi
callq 0x10cb0
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x5650
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x28(%rbp), %rax
movl (%rax), %eax
cmpl -0x8(%rbp), %eax
je 0x5667
movl $0x1, -0x4(%rbp)
jmp 0x573d
jmp 0x5669
cmpq $0x0, -0x28(%rbp)
je 0x56ef
movq -0x28(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x10d40
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
je 0x56b0
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
jg 0x56ae
movl $0x1, -0x4(%rbp)
jmp 0x573d
jmp 0x56ea
movq -0x18(%rbp), %rdi
callq 0x10c20
movq %rax, -0x28(%rbp)
cmpq $0x0, -0x28(%rbp)
jne 0x56cd
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x11e0
cmpl $0x0, %eax
je 0x56e8
movl $0x1, -0x4(%rbp)
jmp 0x573d
jmp 0x56ef
jmp 0x5669
movq -0x18(%rbp), %rdi
movq 0x148c6(%rip), %rsi     # 0x19fc0
callq 0x11fb0
movq -0x18(%rbp), %rdi
callq 0x13b90
cmpl $0x0, %eax
jne 0x5716
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x18(%rbp), %rdi
callq 0x10ae0
cmpl $0x0, %eax
jne 0x572d
movl $0x1, -0x4(%rbp)
jmp 0x573d
movq -0x18(%rbp), %rdi
callq 0x10e0
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)