LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/ipc/controller.c
// Function: controller
int controller(int argc, char** argv) {
    log_debug("Instance became controller");

    socket_mode = CONTROLLER;

    if (!initialize_socket())
        return EXIT_FAILURE;

    char* input_feed = calloc(1024, sizeof(char));

    for (int index = 2; index < argc; index++) {
        strcat(input_feed, argv[index]);
        input_feed[strlen(input_feed)] = '\31';
    }
    input_feed[strlen(input_feed) - 1] = '\0';

    write_to_socket(input_feed);
    free(input_feed);

    finalize_socket();

    return EXIT_SUCCESS;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl $0x3, %edi
leaq 0x646b(%rip), %rsi      # 0xa006
leaq 0x6489(%rip), %rdx      # 0xa02b
movl $0x12, %ecx
leaq 0x646d(%rip), %r8       # 0xa01b
movb $0x0, %al
callq 0x5bf0
leaq 0x9d00(%rip), %rax      # 0xd8bc
movl $0x1, (%rax)
callq 0x5010
cmpw $0x0, %ax
jne 0x3bd9
movl $0x1, -0x4(%rbp)
jmp 0x3c75
movl $0x400, %edi            # imm = 0x400
movl $0x1, %esi
callq 0x3350
movq %rax, -0x18(%rbp)
movl $0x2, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
cmpl -0x8(%rbp), %eax
jge 0x3c37
movq -0x18(%rbp), %rdi
movq -0x10(%rbp), %rax
movslq -0x1c(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
callq 0x3600
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
callq 0x31f0
movq %rax, %rcx
movq -0x28(%rbp), %rax
movb $0x19, (%rax,%rcx)
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x3bf3
movq -0x18(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rdi
callq 0x31f0
movq %rax, %rcx
movq -0x30(%rbp), %rax
subq $0x1, %rcx
movb $0x0, (%rax,%rcx)
movq -0x18(%rbp), %rdi
callq 0x5260
movq -0x18(%rbp), %rdi
callq 0x3060
callq 0x5220
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x30, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/ipc/ipc.c
// Function: ipc_process_input
void ipc_process_input(char *feed) {
    unsigned short update = 0;
    vector_t *input = construct_vector();

    char *token;
    while ((token = strsep(&feed, "\31")))
        push_to_vector(input, token);

    char *qualifier = vector_iterator(input);

    if (!strcmp(qualifier, "halt")) {
        custard_is_running = 0;
    } else if (!strcmp(qualifier, "configure"))
        ipc_command_configure(input, &update);
    else if (!strcmp(qualifier, "geometry"))
        ipc_command_geometry(input, &update);
    else if (!strcmp(qualifier, "match"))
        ipc_command_match(input, &update);
    else if (!strcmp(qualifier, "window"))
        ipc_command_window(input, &update);
    else if (!strcmp(qualifier, "workspace"))
        ipc_command_workspace(input, &update);
    else if (!strcmp(qualifier, "focus"))
        ipc_command_focus(input, &update);

    if (update) {
        apply();
        update = 0;
    }

    deconstruct_vector(input);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movw $0x0, -0xa(%rbp)
callq 0x3860
movq %rax, -0x18(%rbp)
leaq -0x8(%rbp), %rdi
leaq 0x6390(%rip), %rsi      # 0xa036
callq 0x3450
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
je 0x3cc4
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x3990
jmp 0x3c9b
movq -0x18(%rbp), %rdi
callq 0x38c0
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
leaq 0x635c(%rip), %rsi      # 0xa038
callq 0x3380
cmpl $0x0, %eax
jne 0x3cf7
leaq 0x9be3(%rip), %rax      # 0xd8d0
movw $0x0, (%rax)
jmp 0x3ddf
movq -0x28(%rbp), %rdi
leaq 0x633b(%rip), %rsi      # 0xa03d
callq 0x3380
cmpl $0x0, %eax
jne 0x3d1e
movq -0x18(%rbp), %rdi
leaq -0xa(%rbp), %rsi
callq 0x3e00
jmp 0x3ddd
movq -0x28(%rbp), %rdi
leaq 0x6c5e(%rip), %rsi      # 0xa987
callq 0x3380
cmpl $0x0, %eax
jne 0x3d45
movq -0x18(%rbp), %rdi
leaq -0xa(%rbp), %rsi
callq 0x3ed0
jmp 0x3ddb
movq -0x28(%rbp), %rdi
leaq 0x62f7(%rip), %rsi      # 0xa047
callq 0x3380
cmpl $0x0, %eax
jne 0x3d69
movq -0x18(%rbp), %rdi
leaq -0xa(%rbp), %rsi
callq 0x40b0
jmp 0x3dd9
movq -0x28(%rbp), %rdi
leaq 0x63a0(%rip), %rsi      # 0xa114
callq 0x3380
cmpl $0x0, %eax
jne 0x3d8d
movq -0x18(%rbp), %rdi
leaq -0xa(%rbp), %rsi
callq 0x4110
jmp 0x3dd7
movq -0x28(%rbp), %rdi
leaq 0x62b5(%rip), %rsi      # 0xa04d
callq 0x3380
cmpl $0x0, %eax
jne 0x3db1
movq -0x18(%rbp), %rdi
leaq -0xa(%rbp), %rsi
callq 0x48a0
jmp 0x3dd5
movq -0x28(%rbp), %rdi
leaq 0x629b(%rip), %rsi      # 0xa057
callq 0x3380
cmpl $0x0, %eax
jne 0x3dd3
movq -0x18(%rbp), %rdi
leaq -0xa(%rbp), %rsi
callq 0x48f0
jmp 0x3dd5
jmp 0x3dd7
jmp 0x3dd9
jmp 0x3ddb
jmp 0x3ddd
jmp 0x3ddf
cmpw $0x0, -0xa(%rbp)
je 0x3df1
callq 0x8ac0
movw $0x0, -0xa(%rbp)
movq -0x18(%rbp), %rdi
callq 0x3b00
addq $0x30, %rsp
popq %rbp
retq
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/ipc/ipc.c
// Function: ipc_command_configure
void ipc_command_configure(vector_t *input, unsigned short *screen_update) {
    /*
     * Usage:
     *  custard - configure ([configurable] [value])...
     */

    char *variable;
    char *value_string;
    kv_value_t *value = NULL;

    while (input->remaining) {
        variable = vector_iterator(input);
        value_string = vector_iterator(input);

        if (!(value = get_value_from_key(configuration, variable)))
            continue;

        ipc_helper_typecast_and_assign(value, variable, value_string);
    }

    if (!windows)
        return;

    window_t *window;
    while ((window = vector_iterator(windows))) {
        set_window_geometry(window, window->geometry);
        decorate(window);
    }

    *screen_update = 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq $0x0, -0x28(%rbp)
movq -0x8(%rbp), %rax
cmpl $0x0, 0x10(%rax)
je 0x3e6e
movq -0x8(%rbp), %rdi
callq 0x38c0
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0x38c0
movq %rax, -0x20(%rbp)
leaq 0x9a7d(%rip), %rax      # 0xd8c0
movq (%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x56f0
movq %rax, -0x28(%rbp)
cmpq $0x0, %rax
jne 0x3e5b
jmp 0x3e18
movq -0x28(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
callq 0x4a70
jmp 0x3e18
leaq 0x9a73(%rip), %rax      # 0xd8e8
cmpq $0x0, (%rax)
jne 0x3e7d
jmp 0x3ebd
jmp 0x3e7f
leaq 0x9a62(%rip), %rax      # 0xd8e8
movq (%rax), %rdi
callq 0x38c0
movq %rax, -0x30(%rbp)
cmpq $0x0, %rax
je 0x3eb4
movq -0x30(%rbp), %rdi
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rsi
callq 0x8520
movq -0x30(%rbp), %rdi
callq 0x6430
jmp 0x3e7f
movq -0x10(%rbp), %rax
movw $0x1, (%rax)
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/ipc/ipc.c
// Function: ipc_command_match
void ipc_command_match(vector_t *input, unsigned short *screen_update) {
    suppress_unused(screen_update);

    if (input->size < 3) return;

    char *subject = vector_iterator(input);

    if (!strcmp(subject, "monitor"))
        ipc_sub_command_match_monitor(input);
    else
        ipc_sub_command_match_window(input);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
cmpl $0x3, 0xc(%rax)
jae 0x40cc
jmp 0x4102
movq -0x8(%rbp), %rdi
callq 0x38c0
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rdi
leaq 0x60e5(%rip), %rsi      # 0xa1c9
callq 0x3380
cmpl $0x0, %eax
jne 0x40f9
movq -0x8(%rbp), %rdi
callq 0x4b80
jmp 0x4102
movq -0x8(%rbp), %rdi
callq 0x4cb0
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/ipc/ipc.c
// Function: ipc_command_workspace
void ipc_command_workspace(vector_t *input, unsigned short *screen_update) {
    monitor_t *monitor = monitor_with_cursor_residence();

    unsigned int workspace = string_to_integer(vector_iterator(input));
    if (workspace) {
        show_workspace_on_monitor(monitor, workspace);
    }

    *screen_update = 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
callq 0x7b10
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
callq 0x38c0
movq %rax, %rdi
callq 0x4e90
movl %eax, -0x1c(%rbp)
cmpl $0x0, -0x1c(%rbp)
je 0x48df
movq -0x18(%rbp), %rdi
movl -0x1c(%rbp), %esi
callq 0x87a0
movq -0x10(%rbp), %rax
movw $0x1, (%rax)
addq $0x20, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/ipc/ipc.c
// Function: ipc_helper_typecast_and_assign
void ipc_helper_typecast_and_assign(kv_value_t *kv_value, char *variable,
    char *input) {

    // Assign all color values

    if (!strcmp(variable, "border.color.focused") ||
        !strcmp(variable, "border.color.unfocused") ||
        !strcmp(variable, "border.color.background")) {
        kv_value->color = string_to_color(input);
        return;
    }

    // Assign all boolean values

    if (!strcmp(variable, "border.colors.flipped")) {
        kv_value->boolean = string_to_boolean(input);
        return;
    }

    // Assign all string values

    if (!strcmp(variable, "geometry") ||
        !strcmp(variable, "monitor")) {
        kv_value->string = (char*)calloc(1, sizeof(char));
        strcpy(kv_value->string, input);
        return;
    }

    // If all else fails, it's an integer

    kv_value->number = string_to_integer(input);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x10(%rbp), %rdi
leaq 0x55ce(%rip), %rsi      # 0xa05d
callq 0x3380
cmpl $0x0, %eax
je 0x4ac3
movq -0x10(%rbp), %rdi
leaq 0x55ce(%rip), %rsi      # 0xa072
callq 0x3380
cmpl $0x0, %eax
je 0x4ac3
movq -0x10(%rbp), %rdi
leaq 0x55d0(%rip), %rsi      # 0xa089
callq 0x3380
cmpl $0x0, %eax
jne 0x4ae7
movq -0x8(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
callq 0x4eb0
movl %eax, %ecx
movq -0x28(%rbp), %rax
movl %ecx, -0x1c(%rbp)
movl -0x1c(%rbp), %ecx
movl %ecx, (%rax)
jmp 0x4b75
movq -0x10(%rbp), %rdi
leaq 0x55af(%rip), %rsi      # 0xa0a1
callq 0x3380
cmpl $0x0, %eax
jne 0x4b11
movq -0x18(%rbp), %rdi
callq 0x4e40
movw %ax, %cx
movq -0x8(%rbp), %rax
movw %cx, (%rax)
jmp 0x4b75
movq -0x10(%rbp), %rdi
leaq 0x5e6b(%rip), %rsi      # 0xa987
callq 0x3380
cmpl $0x0, %eax
je 0x4b3b
movq -0x10(%rbp), %rdi
leaq 0x5698(%rip), %rsi      # 0xa1c9
callq 0x3380
cmpl $0x0, %eax
jne 0x4b64
movl $0x1, %esi
movq %rsi, %rdi
callq 0x3350
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, (%rax)
movq -0x8(%rbp), %rax
movq (%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x30e0
jmp 0x4b75
movq -0x18(%rbp), %rdi
callq 0x4e90
movl %eax, %ecx
movq -0x8(%rbp), %rax
movl %ecx, (%rax)
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/ipc/ipc.c
// Function: ipc_sub_command_match_monitor
void ipc_sub_command_match_monitor(vector_t *input) {
    char *monitor_name = vector_iterator(input);
    monitor_t *monitor = monitor_from_name(monitor_name);

    if (!monitor)
        return;

    if (!monitor->configuration)
        monitor->configuration = construct_vector();

    char *configurables[7] = {
        "grid.rows,"
        "grid.columns",
        "grid.margins",
        "grid.margin.top",
        "grid.margin.bottom",
        "grid.margin.left",
        "grid.margin.right"
    };
    unsigned int index = 0;
    kv_pair_t *setting;

    char *variable;
    char *value_string;

    while (input->remaining) {
        variable = vector_iterator(input);
        value_string = vector_iterator(input);

        log_debug("%s = %s", variable, value_string);

        for (index = 0; index < 7;) {
            if (!strcmp(configurables[index++], variable)) {
                setting = create_or_get_kv_pair(monitor->configuration,
                    variable);
                setting->value->number = string_to_integer(value_string);
                break;
            }
        }
    }

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rdi
callq 0x38c0
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x7aa0
movq %rax, -0x18(%rbp)
cmpq $0x0, -0x18(%rbp)
jne 0x4bb5
jmp 0x4ca6
movq -0x18(%rbp), %rax
cmpq $0x0, 0x18(%rax)
jne 0x4bd0
callq 0x3860
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x18(%rax)
leaq -0x50(%rbp), %rdi
leaq 0x8115(%rip), %rsi      # 0xccf0
movl $0x38, %edx
callq 0x3400
movl $0x0, -0x54(%rbp)
movq -0x8(%rbp), %rax
cmpl $0x0, 0x10(%rax)
je 0x4ca6
movq -0x8(%rbp), %rdi
callq 0x38c0
movq %rax, -0x68(%rbp)
movq -0x8(%rbp), %rdi
callq 0x38c0
movq %rax, -0x70(%rbp)
movq -0x68(%rbp), %r9
movq -0x70(%rbp), %rax
movl $0x3, %edi
leaq 0x54d2(%rip), %rsi      # 0xa0fa
leaq 0x5584(%rip), %rdx      # 0xa1b3
movl $0x1ec, %ecx            # imm = 0x1EC
leaq 0x5596(%rip), %r8       # 0xa1d1
movq %rax, (%rsp)
movb $0x0, %al
callq 0x5bf0
movl $0x0, -0x54(%rbp)
cmpl $0x7, -0x54(%rbp)
jae 0x4ca1
movl -0x54(%rbp), %eax
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, -0x54(%rbp)
movl %eax, %eax
movq -0x50(%rbp,%rax,8), %rdi
movq -0x68(%rbp), %rsi
callq 0x3380
cmpl $0x0, %eax
jne 0x4c9f
movq -0x18(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x68(%rbp), %rsi
callq 0x55f0
movq %rax, -0x60(%rbp)
movq -0x70(%rbp), %rdi
callq 0x4e90
movl %eax, %ecx
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rax
movl %ecx, (%rax)
jmp 0x4ca1
jmp 0x4c4d
jmp 0x4bec
addq $0x80, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/ipc/socket.c
// Function: finalize_socket
void finalize_socket() {
    if (socket_mode == WINDOW_MANAGER)
        unlink(socket_path);
    else
        close(socket_file_descriptor);
    free(socket_path);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
cmpl $0x0, 0x8691(%rip)      # 0xd8bc
jne 0x523b
movq 0x867c(%rip), %rdi      # 0xd8b0
callq 0x3090
jmp 0x5246
movl 0x8677(%rip), %edi      # 0xd8b8
callq 0x3300
movq 0x8663(%rip), %rdi      # 0xd8b0
callq 0x3060
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/ipc/socket.c
// Function: read_from_socket
char *read_from_socket() {
    int command_file_descriptor = accept(socket_file_descriptor, NULL, 0);

    if (!command_file_descriptor) {
        log_fatal("Unable to accept connection to socket");
        return "";
    }

    char *output = calloc(1024, sizeof(char));
    ssize_t length = read(command_file_descriptor, output, 1023);

    output[length] = '\0';
    log_debug("Fed data(%s)", output);

    return output;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movl 0x85da(%rip), %edi      # 0xd8b8
xorl %eax, %eax
movl %eax, %edx
movq %rdx, %rsi
callq 0x35c0
movl %eax, -0xc(%rbp)
cmpl $0x0, -0xc(%rbp)
jne 0x5326
movl $0x1, %edi
leaq 0x4f5a(%rip), %rsi      # 0xa259
leaq 0x5004(%rip), %rdx      # 0xa30a
movl $0x4d, %ecx
leaq 0x5009(%rip), %r8       # 0xa31b
movb $0x0, %al
callq 0x5bf0
leaq 0x531d(%rip), %rax      # 0xa63d
movq %rax, -0x8(%rbp)
jmp 0x538c
movl $0x400, %edi            # imm = 0x400
movl $0x1, %esi
callq 0x3350
movq %rax, -0x18(%rbp)
movl -0xc(%rbp), %edi
movq -0x18(%rbp), %rsi
movl $0x3ff, %edx            # imm = 0x3FF
callq 0x3330
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rax
movq -0x20(%rbp), %rcx
movb $0x0, (%rax,%rcx)
movq -0x18(%rbp), %r9
movl $0x3, %edi
leaq 0x4eef(%rip), %rsi      # 0xa259
leaq 0x4f99(%rip), %rdx      # 0xa30a
movl $0x55, %ecx
leaq 0x4fc4(%rip), %r8       # 0xa341
movb $0x0, %al
callq 0x5bf0
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/wm/config.c
// Function: create_or_get_kv_pair
kv_pair_t *create_or_get_kv_pair(vector_t *configuration, char *key) {
    kv_pair_t *kv_pair;

    while ((kv_pair = vector_iterator(configuration))) {
        if (!strcmp(kv_pair->key, key)) {
            reset_vector_iterator(configuration);
            return kv_pair;
        }
    }

    kv_pair = (kv_pair_t*)calloc(1, sizeof(kv_pair_t));

    kv_pair->key = (char*)calloc(strlen(key) + 1, sizeof(char));
    strcpy(kv_pair->key, key);

    kv_pair->value = (kv_value_t*)calloc(1, sizeof(kv_value_t));
    log_debug("New key-value pair created with key(%s)", key);

    push_to_vector(configuration, kv_pair);
    return kv_pair;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0x38c0
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
je 0x5640
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x3380
cmpl $0x0, %eax
jne 0x563e
movq -0x10(%rbp), %rdi
callq 0x3970
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x56e0
jmp 0x5600
movl $0x1, %edi
movl $0x10, %esi
callq 0x3350
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdi
callq 0x31f0
movq %rax, %rdi
addq $0x1, %rdi
movl $0x1, %esi
callq 0x3350
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x30e0
movl $0x1, %edi
movl $0x8, %esi
callq 0x3350
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x18(%rbp), %r9
movl $0x3, %edi
leaq 0x4cb2(%rip), %rsi      # 0xa363
leaq 0x4cbb(%rip), %rdx      # 0xa373
movl $0x4b, %ecx
leaq 0x4cc5(%rip), %r8       # 0xa389
movb $0x0, %al
callq 0x5bf0
movq -0x10(%rbp), %rdi
movq -0x20(%rbp), %rsi
callq 0x3990
movq -0x20(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/wm/config.c
// Function: get_value_from_key
kv_value_t *get_value_from_key(vector_t *configuration, char *key) {
    kv_pair_t *kv_pair;

    while ((kv_pair = vector_iterator(configuration))) {
        if (!strcmp(kv_pair->key, key)) {
            reset_vector_iterator(configuration);
            return kv_pair->value;
        }
    }

    return NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0x38c0
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
je 0x5741
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x3380
cmpl $0x0, %eax
jne 0x573f
movq -0x10(%rbp), %rdi
callq 0x3970
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x8(%rbp)
jmp 0x5749
jmp 0x5700
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/wm/config.c
// Function: get_value_from_key_with_fallback
kv_value_t *get_value_from_key_with_fallback(vector_t *passed_configuration,
    char *key) {

    if (!passed_configuration)
        passed_configuration = configuration;

    kv_value_t *value;
    value = get_value_from_key(passed_configuration, key);

    if (passed_configuration != configuration)
        if (!value)
            value = get_value_from_key(configuration, key);

    return value;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
cmpq $0x0, -0x8(%rbp)
jne 0x5782
movq 0x8142(%rip), %rax      # 0xd8c0
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x56f0
movq %rax, -0x18(%rbp)
movq -0x8(%rbp), %rax
cmpq 0x8122(%rip), %rax      # 0xd8c0
je 0x57bd
cmpq $0x0, -0x18(%rbp)
jne 0x57bb
movq 0x8112(%rip), %rdi      # 0xd8c0
movq -0x10(%rbp), %rsi
callq 0x56f0
movq %rax, -0x18(%rbp)
jmp 0x57bd
movq -0x18(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/wm/custard.c
// Function: log
void _log(unsigned short level, const char *file, const char *function,
    const int line, char *formatting, ...) {

    /*
     * Loglevels:
     * 0 - Absolutely fucking nothing
     * 1 - Fatal
     * 2 - Message
     * 3 - Debug
     */

     if (loglevel < level)
        return;

    fprintf(stderr, "%s:%s L%d: ", file, function, line);

    va_list ap;
    va_start(ap, formatting);
    vfprintf(stderr, formatting, ap);
    va_end(ap);

    fputs("\n", stderr);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
testb %al, %al
je 0x5c2b
movaps %xmm0, -0xc0(%rbp)
movaps %xmm1, -0xb0(%rbp)
movaps %xmm2, -0xa0(%rbp)
movaps %xmm3, -0x90(%rbp)
movaps %xmm4, -0x80(%rbp)
movaps %xmm5, -0x70(%rbp)
movaps %xmm6, -0x60(%rbp)
movaps %xmm7, -0x50(%rbp)
movq %r9, -0xc8(%rbp)
movw %di, %ax
movw %ax, -0x2(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movl %ecx, -0x1c(%rbp)
movq %r8, -0x28(%rbp)
movzwl 0x7741(%rip), %eax      # 0xd390
movzwl -0x2(%rbp), %ecx
cmpl %ecx, %eax
jge 0x5c59
jmp 0x5cd2
movq 0x7398(%rip), %rax      # 0xcff8
movq (%rax), %rdi
movq -0x10(%rbp), %rdx
movq -0x18(%rbp), %rcx
movl -0x1c(%rbp), %r8d
leaq 0x49ba(%rip), %rsi      # 0xa630
movb $0x0, %al
callq 0x33d0
leaq -0x40(%rbp), %rax
leaq -0xf0(%rbp), %rcx
movq %rcx, 0x10(%rax)
leaq 0x10(%rbp), %rcx
movq %rcx, 0x8(%rax)
movl $0x30, 0x4(%rax)
movl $0x28, (%rax)
movq 0x7350(%rip), %rax      # 0xcff8
movq (%rax), %rdi
movq -0x28(%rbp), %rsi
leaq -0x40(%rbp), %rdx
callq 0x35a0
leaq -0x40(%rbp), %rax
movq 0x7335(%rip), %rax      # 0xcff8
movq (%rax), %rsi
leaq 0x496f(%rip), %rdi      # 0xa63c
callq 0x3280
addq $0xf0, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/wm/custard.c
// Function: initialize
unsigned short initialize() {
    if (!initialize_xcb() || !initialize_ewmh() || !initialize_socket())
        return 0;
    log_debug("XCB, EWMH, and socket setup");

    setup_monitors();
    log_debug("Monitors setup");
    setup_global_configuration();
    log_debug("Global configuration setup");

    unsigned int index = 0;
    for (; index < SIGUNUSED; index++)
        if (signals[index])
            signal(index, signals[index]);
    index = 0;
    log_debug("Signal handlers setup");

    return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
callq 0x8850
cmpw $0x0, %ax
je 0x5d09
callq 0x8ae0
cmpw $0x0, %ax
je 0x5d09
callq 0x5010
cmpw $0x0, %ax
jne 0x5d14
movw $0x0, -0x2(%rbp)
jmp 0x5e08
movl $0x3, %edi
leaq 0x4691(%rip), %rsi      # 0xa3b1
leaq 0x47ea(%rip), %rdx      # 0xa511
movl $0x7c, %ecx
leaq 0x47e9(%rip), %r8       # 0xa51c
movb $0x0, %al
callq 0x5bf0
callq 0x7820
movl $0x3, %edi
leaq 0x4666(%rip), %rsi      # 0xa3b1
leaq 0x47bf(%rip), %rdx      # 0xa511
movl $0x7f, %ecx
leaq 0x47da(%rip), %r8       # 0xa538
movb $0x0, %al
callq 0x5bf0
callq 0x53a0
movl $0x3, %edi
leaq 0x463b(%rip), %rsi      # 0xa3b1
leaq 0x4794(%rip), %rdx      # 0xa511
movl $0x81, %ecx
leaq 0x47be(%rip), %r8       # 0xa547
movb $0x0, %al
callq 0x5bf0
movl $0x0, -0x8(%rbp)
cmpl $0x1f, -0x8(%rbp)
jae 0x5dd5
movl -0x8(%rbp), %eax
movl %eax, %ecx
leaq 0x79f7(%rip), %rax      # 0xd7a0
cmpq $0x0, (%rax,%rcx,8)
je 0x5dc8
movl -0x8(%rbp), %edi
movl -0x8(%rbp), %eax
movl %eax, %ecx
leaq 0x79e1(%rip), %rax      # 0xd7a0
movq (%rax,%rcx,8), %rsi
callq 0x33a0
jmp 0x5dca
movl -0x8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8(%rbp)
jmp 0x5d97
movl $0x0, -0x8(%rbp)
movl $0x3, %edi
leaq 0x45c9(%rip), %rsi      # 0xa3b1
leaq 0x4722(%rip), %rdx      # 0xa511
movl $0x88, %ecx
leaq 0x4767(%rip), %r8       # 0xa562
movb $0x0, %al
callq 0x5bf0
movw $0x1, -0x2(%rbp)
movw -0x2(%rbp), %ax
addq $0x10, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/wm/decorations.c
// Function: apply_decoration_to_window_screen_geometry
void apply_decoration_to_window_screen_geometry(window_t *window,
    screen_geometry_t *geometry) {

    unsigned int border_type = get_setting_from_window_rules(window,
        "borders")->number;

    if (!border_type)
        return;

    if (border_type > 3)
        border_type = 3;

    unsigned int outer_size = get_setting_from_window_rules(window,
        "border.size.outer")->number;
    unsigned int inner_size = get_setting_from_window_rules(window,
        "border.size.inner")->number;

    if (!outer_size)
        outer_size = 1;

    if (!inner_size)
        inner_size = 1;

    unsigned int border_size;
    if (border_type == 1)
        border_size = outer_size;
    else
        border_size = (outer_size * (border_type - 1)) +
            inner_size;

    if (!border_size)
        return;

    geometry->height -= (border_size * 2);
    geometry->width -= (border_size * 2);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x3f17(%rip), %rsi      # 0xa1f2
callq 0x8740
movl (%rax), %eax
movl %eax, -0x14(%rbp)
cmpl $0x0, -0x14(%rbp)
jne 0x62f0
jmp 0x63a1
cmpl $0x3, -0x14(%rbp)
jbe 0x62fd
movl $0x3, -0x14(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x3ef2(%rip), %rsi      # 0xa1fa
callq 0x8740
movl (%rax), %eax
movl %eax, -0x18(%rbp)
movq -0x8(%rbp), %rdi
leaq 0x3eef(%rip), %rsi      # 0xa20c
callq 0x8740
movl (%rax), %eax
movl %eax, -0x1c(%rbp)
cmpl $0x0, -0x18(%rbp)
jne 0x6334
movl $0x1, -0x18(%rbp)
cmpl $0x0, -0x1c(%rbp)
jne 0x6341
movl $0x1, -0x1c(%rbp)
cmpl $0x1, -0x14(%rbp)
jne 0x634f
movl -0x18(%rbp), %eax
movl %eax, -0x20(%rbp)
jmp 0x6361
movl -0x18(%rbp), %eax
movl -0x14(%rbp), %ecx
subl $0x1, %ecx
imull %ecx, %eax
addl -0x1c(%rbp), %eax
movl %eax, -0x20(%rbp)
cmpl $0x0, -0x20(%rbp)
jne 0x6369
jmp 0x63a1
movl -0x20(%rbp), %eax
addl %eax, %eax
cvtsi2ss %rax, %xmm1
movq -0x10(%rbp), %rax
movss 0x8(%rax), %xmm0
subss %xmm1, %xmm0
movss %xmm0, 0x8(%rax)
movl -0x20(%rbp), %eax
addl %eax, %eax
cvtsi2ss %rax, %xmm1
movq -0x10(%rbp), %rax
movss 0xc(%rax), %xmm0
subss %xmm1, %xmm0
movss %xmm0, 0xc(%rax)
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/wm/decorations.c
// Function: get_raw_color_value
unsigned int get_raw_color_value(color_t color) {
    unsigned int value;

    value = (color.alpha) * 0x1000000 |
        ((color.red   * color.alpha) / 0xff) * 0x10000 |
        ((color.green * color.alpha) / 0xff) * 0x100   |
        ((color.blue  * color.alpha) / 0xff);

    return value;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movl %edi, -0x4(%rbp)
movzbl -0x1(%rbp), %eax
shll $0x18, %eax
movl %eax, -0x14(%rbp)
movzbl -0x4(%rbp), %eax
movzbl -0x1(%rbp), %ecx
imull %ecx, %eax
movl $0xff, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0x14(%rbp), %eax
shll $0x10, %ecx
orl %ecx, %eax
movl %eax, -0x10(%rbp)
movzbl -0x3(%rbp), %eax
movzbl -0x1(%rbp), %ecx
imull %ecx, %eax
movl $0xff, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0x10(%rbp), %eax
shll $0x8, %ecx
orl %ecx, %eax
movl %eax, -0xc(%rbp)
movzbl -0x2(%rbp), %eax
movzbl -0x1(%rbp), %ecx
imull %ecx, %eax
movl $0xff, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0xc(%rbp), %eax
orl %ecx, %eax
movl %eax, -0x8(%rbp)
movl -0x8(%rbp), %eax
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/wm/decorations.c
// Function: single_border
void single_border(xcb_window_t window, unsigned int border_size,
    color_t color) {
    /* Single border, configure window */
    unsigned int values[1] = { border_size };
    configure_window(window, XCB_CONFIG_WINDOW_BORDER_WIDTH, values);

    values[0] = get_raw_color_value(color);
    xcb_change_window_attributes(xcb_connection, window,
        XCB_CW_BORDER_PIXEL, values);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movl %edx, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl -0xc(%rbp), %eax
movl %eax, -0x10(%rbp)
movl -0x8(%rbp), %edi
leaq -0x10(%rbp), %rdx
movl $0x10, %esi
callq 0x8e50
movl -0x4(%rbp), %edi
callq 0x63b0
movl %eax, -0x10(%rbp)
leaq 0x730e(%rip), %rax      # 0xd8f8
movq (%rax), %rdi
movl -0x8(%rbp), %esi
leaq -0x10(%rbp), %rcx
movl $0x8, %edx
callq 0x3170
movl %eax, -0x14(%rbp)
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/wm/decorations.c
// Function: double_border_transient
void double_border_transient(xcb_pixmap_t pixmap,
    xcb_gcontext_t graphics_context, unsigned int inner_size,
    unsigned int outer_size, unsigned int border_size,
    xcb_get_geometry_reply_t *geometry) {

    xcb_rectangle_t inner_border[5] = {
        {
            (short)geometry->width, 0,
            (unsigned short)inner_size,
            (unsigned short)(geometry->height + inner_size)
        },
        {
            0, (short)geometry->height,
            (unsigned short)(geometry->width + inner_size),
            (unsigned short)inner_size
        },
        {
            (short)(geometry->width + border_size + outer_size), 0,
            (unsigned short)inner_size,
            (unsigned short)(geometry->height + inner_size)
        },
        {
            0, (short)(geometry->height + border_size + outer_size),
            (unsigned short)(geometry->width + inner_size),
            (unsigned short)inner_size
        },
        {
            (short)(geometry->width + border_size + outer_size),
            (short)(geometry->height + border_size + outer_size),
            (unsigned short)inner_size, (unsigned short)inner_size
        }
    };

    xcb_poly_fill_rectangle(xcb_connection, pixmap, graphics_context,
        5, inner_border);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movl %edi, -0x4(%rbp)
movl %esi, -0x8(%rbp)
movl %edx, -0xc(%rbp)
movl %ecx, -0x10(%rbp)
movl %r8d, -0x14(%rbp)
movq %r9, -0x20(%rbp)
movq -0x20(%rbp), %rax
movw 0x10(%rax), %ax
movw %ax, -0x50(%rbp)
movw $0x0, -0x4e(%rbp)
movl -0xc(%rbp), %eax
movw %ax, -0x4c(%rbp)
movq -0x20(%rbp), %rax
movzwl 0x12(%rax), %eax
addl -0xc(%rbp), %eax
movw %ax, -0x4a(%rbp)
movw $0x0, -0x48(%rbp)
movq -0x20(%rbp), %rax
movw 0x12(%rax), %ax
movw %ax, -0x46(%rbp)
movq -0x20(%rbp), %rax
movzwl 0x10(%rax), %eax
addl -0xc(%rbp), %eax
movw %ax, -0x44(%rbp)
movl -0xc(%rbp), %eax
movw %ax, -0x42(%rbp)
movq -0x20(%rbp), %rax
movzwl 0x10(%rax), %eax
addl -0x14(%rbp), %eax
addl -0x10(%rbp), %eax
movw %ax, -0x40(%rbp)
movw $0x0, -0x3e(%rbp)
movl -0xc(%rbp), %eax
movw %ax, -0x3c(%rbp)
movq -0x20(%rbp), %rax
movzwl 0x12(%rax), %eax
addl -0xc(%rbp), %eax
movw %ax, -0x3a(%rbp)
movw $0x0, -0x38(%rbp)
movq -0x20(%rbp), %rax
movzwl 0x12(%rax), %eax
addl -0x14(%rbp), %eax
addl -0x10(%rbp), %eax
movw %ax, -0x36(%rbp)
movq -0x20(%rbp), %rax
movzwl 0x10(%rax), %eax
addl -0xc(%rbp), %eax
movw %ax, -0x34(%rbp)
movl -0xc(%rbp), %eax
movw %ax, -0x32(%rbp)
movq -0x20(%rbp), %rax
movzwl 0x10(%rax), %eax
addl -0x14(%rbp), %eax
addl -0x10(%rbp), %eax
movw %ax, -0x30(%rbp)
movq -0x20(%rbp), %rax
movzwl 0x12(%rax), %eax
addl -0x14(%rbp), %eax
addl -0x10(%rbp), %eax
movw %ax, -0x2e(%rbp)
movl -0xc(%rbp), %eax
movw %ax, -0x2c(%rbp)
movl -0xc(%rbp), %eax
movw %ax, -0x2a(%rbp)
leaq 0x6f77(%rip), %rax      # 0xd8f8
movq (%rax), %rdi
movl -0x4(%rbp), %esi
movl -0x8(%rbp), %edx
leaq -0x50(%rbp), %r8
movl $0x5, %ecx
callq 0x32a0
movl %eax, -0x54(%rbp)
addq $0x60, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/wm/geometry.c
// Function: create_labeled_geometry
labeled_grid_geometry_t *create_labeled_geometry(char *label, unsigned int x,
    unsigned int y, unsigned int height, unsigned int width) {
    labeled_grid_geometry_t *geometry = (labeled_grid_geometry_t*)calloc(1,
        sizeof(labeled_grid_geometry_t));
    geometry->label = (char*)calloc(1, sizeof(char));
    geometry->geometry = (grid_geometry_t*)calloc(1, sizeof(grid_geometry_t));

    strcpy(geometry->label, label);
    geometry->geometry->x = x;
    geometry->geometry->y = y;
    geometry->geometry->height = height;
    geometry->geometry->width = width;

    return geometry;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl %edx, -0x10(%rbp)
movl %ecx, -0x14(%rbp)
movl %r8d, -0x18(%rbp)
movl $0x1, %edi
movl $0x10, %esi
callq 0x3350
movq %rax, -0x20(%rbp)
movl $0x1, %esi
movq %rsi, %rdi
callq 0x3350
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, 0x8(%rax)
movl $0x1, %edi
movl $0x10, %esi
callq 0x3350
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x8(%rbp), %rsi
callq 0x30e0
movl -0xc(%rbp), %ecx
movq -0x20(%rbp), %rax
movq (%rax), %rax
movl %ecx, (%rax)
movl -0x10(%rbp), %ecx
movq -0x20(%rbp), %rax
movq (%rax), %rax
movl %ecx, 0x4(%rax)
movl -0x14(%rbp), %ecx
movq -0x20(%rbp), %rax
movq (%rax), %rax
movl %ecx, 0x8(%rax)
movl -0x18(%rbp), %ecx
movq -0x20(%rbp), %rax
movq (%rax), %rax
movl %ecx, 0xc(%rax)
movq -0x20(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/wm/geometry.c
// Function: create_screen_geometry
screen_geometry_t *create_screen_geometry(unsigned int x, unsigned int y,
    unsigned int height, unsigned int width) {
    screen_geometry_t *geometry = (screen_geometry_t*)calloc(1,
        sizeof(screen_geometry_t));

    geometry->x = x;
    geometry->y = y;
    geometry->height = height;
    geometry->width = width;

    return geometry;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movl %edi, -0x4(%rbp)
movl %esi, -0x8(%rbp)
movl %edx, -0xc(%rbp)
movl %ecx, -0x10(%rbp)
movl $0x1, %edi
movl $0x10, %esi
callq 0x3350
movq %rax, -0x18(%rbp)
movl -0x4(%rbp), %eax
cvtsi2ss %rax, %xmm0
movq -0x18(%rbp), %rax
movss %xmm0, (%rax)
movl -0x8(%rbp), %eax
cvtsi2ss %rax, %xmm0
movq -0x18(%rbp), %rax
movss %xmm0, 0x4(%rax)
movl -0xc(%rbp), %eax
cvtsi2ss %rax, %xmm0
movq -0x18(%rbp), %rax
movss %xmm0, 0x8(%rax)
movl -0x10(%rbp), %eax
cvtsi2ss %rax, %xmm0
movq -0x18(%rbp), %rax
movss %xmm0, 0xc(%rax)
movq -0x18(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/wm/geometry.c
// Function: get_equivalent_screen_geometry
screen_geometry_t *get_equivalent_screen_geometry(grid_geometry_t *geometry,
    monitor_t *monitor) {
    screen_geometry_t *screen_geometry = create_screen_geometry(
        get_x_offset(geometry->x, monitor),
        get_y_offset(geometry->y, monitor),
        span_height_over_screen(geometry->height, monitor),
        span_width_over_screen(geometry->width, monitor)
    );

    return screen_geometry;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rax
movl (%rax), %edi
movq -0x10(%rbp), %rsi
callq 0x7260
cvttss2si %xmm0, %rax
movl %eax, -0x24(%rbp)
movq -0x8(%rbp), %rax
movl 0x4(%rax), %edi
movq -0x10(%rbp), %rsi
callq 0x72d0
cvttss2si %xmm0, %rax
movl %eax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %edi
movq -0x10(%rbp), %rsi
callq 0x7220
cvttss2si %xmm0, %rax
movl %eax, -0x1c(%rbp)
movq -0x8(%rbp), %rax
movl 0xc(%rax), %edi
movq -0x10(%rbp), %rsi
callq 0x71e0
movl -0x24(%rbp), %edi
movl -0x20(%rbp), %esi
movl -0x1c(%rbp), %edx
cvttss2si %xmm0, %rax
movl %eax, %ecx
callq 0x6c30
movq %rax, -0x18(%rbp)
movq -0x18(%rbp), %rax
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/wm/geometry.c
// Function: get_geometry_from_monitor
grid_geometry_t *get_geometry_from_monitor(monitor_t *monitor, char *label) {
    if (!monitor->geometries)
        return NULL;

    labeled_grid_geometry_t *labeled_geometry;
    while ((labeled_geometry = vector_iterator(monitor->geometries))) {
        if (!strcmp(labeled_geometry->label, label)) {
            reset_vector_iterator(monitor->geometries);
            return labeled_geometry->geometry;
        }
    }

    return NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x10(%rax)
jne 0x6d65
movq $0x0, -0x8(%rbp)
jmp 0x6db8
jmp 0x6d67
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x38c0
movq %rax, -0x20(%rbp)
cmpq $0x0, %rax
je 0x6db0
movq -0x20(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x3380
cmpl $0x0, %eax
jne 0x6dae
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x3970
movq -0x20(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x8(%rbp)
jmp 0x6db8
jmp 0x6d67
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/wm/grid.c
// Function: calculate_default_height
unsigned int calculate_default_height(monitor_t *monitor) {
    unsigned int rows = get_value_from_key_with_fallback(
        monitor->configuration, "grid.rows")->number;

    if (rows % 2) return 1;

    return 2;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0x3563(%rip), %rsi      # 0xa34e
callq 0x5760
movl (%rax), %eax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x6e09
movl $0x1, -0x4(%rbp)
jmp 0x6e10
movl $0x2, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/wm/grid.c
// Function: calculate_default_width
unsigned int calculate_default_width(monitor_t *monitor) {
    unsigned int columns = get_value_from_key_with_fallback(
        monitor->configuration, "grid.columns")->number;

    if (columns % 2) return 1;

    return 2;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0x3318(%rip), %rsi      # 0xa153
callq 0x5760
movl (%rax), %eax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x6e59
movl $0x1, -0x4(%rbp)
jmp 0x6e60
movl $0x2, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/wm/grid.c
// Function: calculate_default_x
unsigned int calculate_default_x(monitor_t *monitor) {
    unsigned int columns = get_value_from_key_with_fallback(
        monitor->configuration, "grid.columns")->number;

    unsigned int default_value = (columns / 2) - 1;

    if (columns % 2) default_value++;

    return default_value;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0x32c8(%rip), %rsi      # 0xa153
callq 0x5760
movl (%rax), %eax
movl %eax, -0xc(%rbp)
movl -0xc(%rbp), %eax
shrl %eax
subl $0x1, %eax
movl %eax, -0x10(%rbp)
movl -0xc(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x6eb4
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
movl -0x10(%rbp), %eax
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/wm/grid.c
// Function: calculate_default_y
unsigned int calculate_default_y(monitor_t *monitor) {
    unsigned int rows = get_value_from_key_with_fallback(
        monitor->configuration, "grid.rows")->number;

    unsigned int default_value = (rows / 2) - 1;

    if (rows % 2) default_value++;

    return default_value;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0x3473(%rip), %rsi      # 0xa34e
callq 0x5760
movl (%rax), %eax
movl %eax, -0xc(%rbp)
movl -0xc(%rbp), %eax
shrl %eax
subl $0x1, %eax
movl %eax, -0x10(%rbp)
movl -0xc(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x6f04
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
movl -0x10(%rbp), %eax
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/wm/grid.c
// Function: calculate_horizontal_unit_size
float calculate_horizontal_unit_size(monitor_t *monitor) {
    unsigned int total_border_size = 0;

    unsigned int gap_size = get_value_from_key_with_fallback(
        monitor->configuration, "grid.margins")->number;
    unsigned int columns = get_value_from_key_with_fallback(
        monitor->configuration, "grid.columns")->number;
    unsigned int offset_left = get_value_from_key_with_fallback(
        monitor->configuration, "grid.margin.left")->number;
    unsigned int offset_right = get_value_from_key_with_fallback(
        monitor->configuration, "grid.margin.right")->number;

    unsigned int horizontal_border_summation = (total_border_size * 2) *
        columns;
    unsigned int horizontal_offset = offset_left + offset_right;
    unsigned int horizontal_gap_summation = gap_size * (columns + 1);

    unsigned int negative_real_estate = horizontal_offset +
        horizontal_gap_summation + horizontal_border_summation;

    float usable_real_estate = (float)(monitor->geometry->width -
        negative_real_estate);
    float unit_size = usable_real_estate / (float)columns;

    return unit_size;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movl $0x0, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0x322e(%rip), %rsi      # 0xa160
callq 0x5760
movl (%rax), %eax
movl %eax, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0x3208(%rip), %rsi      # 0xa153
callq 0x5760
movl (%rax), %eax
movl %eax, -0x14(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0x322c(%rip), %rsi      # 0xa190
callq 0x5760
movl (%rax), %eax
movl %eax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0x3224(%rip), %rsi      # 0xa1a1
callq 0x5760
movl (%rax), %eax
movl %eax, -0x1c(%rbp)
movl -0xc(%rbp), %eax
movl -0x14(%rbp), %ecx
imull %ecx, %eax
addl %eax, %eax
movl %eax, -0x20(%rbp)
movl -0x18(%rbp), %eax
movl -0x1c(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x24(%rbp)
movl -0x10(%rbp), %eax
movl -0x14(%rbp), %ecx
incl %ecx
imull %ecx, %eax
movl %eax, -0x28(%rbp)
movl -0x24(%rbp), %eax
movl -0x28(%rbp), %ecx
addl %ecx, %eax
movl -0x20(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x2c(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movss 0xc(%rax), %xmm0
movl -0x2c(%rbp), %eax
cvtsi2ss %rax, %xmm1
subss %xmm1, %xmm0
movss %xmm0, -0x30(%rbp)
movss -0x30(%rbp), %xmm0
movl -0x14(%rbp), %eax
cvtsi2ss %rax, %xmm1
divss %xmm1, %xmm0
movss %xmm0, -0x34(%rbp)
movss -0x34(%rbp), %xmm0
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/wm/grid.c
// Function: calculate_vertical_unit_size
float calculate_vertical_unit_size(monitor_t *monitor) {
    unsigned int total_border_size = 0;

    unsigned int gap_size = get_value_from_key_with_fallback(
        monitor->configuration, "grid.margins")->number;
    unsigned int rows = get_value_from_key_with_fallback(
        monitor->configuration, "grid.rows")->number;
    unsigned int offset_top = get_value_from_key_with_fallback(
        monitor->configuration, "grid.margin.top")->number;
    unsigned int offset_bottom = get_value_from_key_with_fallback(
        monitor->configuration, "grid.margin.bottom")->number;

    unsigned int vertical_border_summation = (total_border_size * 2) * rows;
    unsigned int vertical_offset = offset_top + offset_bottom;
    unsigned int vertical_gap_summation = gap_size * (rows + 1);

    unsigned int negative_real_estate = vertical_offset +
        vertical_gap_summation + vertical_border_summation;

    float usable_real_estate = (float)(monitor->geometry->height -
        negative_real_estate);
    float unit_size = usable_real_estate / (float)rows;

    return unit_size;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movl $0x0, -0xc(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0x313e(%rip), %rsi      # 0xa160
callq 0x5760
movl (%rax), %eax
movl %eax, -0x10(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0x3313(%rip), %rsi      # 0xa34e
callq 0x5760
movl (%rax), %eax
movl %eax, -0x14(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0x3119(%rip), %rsi      # 0xa16d
callq 0x5760
movl (%rax), %eax
movl %eax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0x3110(%rip), %rsi      # 0xa17d
callq 0x5760
movl (%rax), %eax
movl %eax, -0x1c(%rbp)
movl -0xc(%rbp), %eax
movl -0x14(%rbp), %ecx
imull %ecx, %eax
addl %eax, %eax
movl %eax, -0x20(%rbp)
movl -0x18(%rbp), %eax
movl -0x1c(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x24(%rbp)
movl -0x10(%rbp), %eax
movl -0x14(%rbp), %ecx
incl %ecx
imull %ecx, %eax
movl %eax, -0x28(%rbp)
movl -0x24(%rbp), %eax
movl -0x28(%rbp), %ecx
addl %ecx, %eax
movl -0x20(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x2c(%rbp)
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movss 0x8(%rax), %xmm0
movl -0x2c(%rbp), %eax
cvtsi2ss %rax, %xmm1
subss %xmm1, %xmm0
movss %xmm0, -0x30(%rbp)
movss -0x30(%rbp), %xmm0
movl -0x14(%rbp), %eax
cvtsi2ss %rax, %xmm1
divss %xmm1, %xmm0
movss %xmm0, -0x34(%rbp)
movss -0x34(%rbp), %xmm0
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/wm/grid.c
// Function: span_units_over_screen
float span_units_over_screen(float unit_size, unsigned int span,
    monitor_t *monitor) {
    unsigned int total_border_size = 0;
    unsigned int gap_size = get_value_from_key_with_fallback(
        monitor->configuration, "grid.margins")->number;

    return (unit_size * span) + (gap_size * (span - 1)) +
        ((total_border_size * 2) * (span - 1));
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movss %xmm0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl $0x0, -0x14(%rbp)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0x3046(%rip), %rsi      # 0xa160
callq 0x5760
movl (%rax), %eax
movl %eax, -0x18(%rbp)
movss -0x4(%rbp), %xmm0
movl -0x8(%rbp), %eax
movl %eax, %ecx
cvtsi2ss %rax, %xmm2
movl -0x18(%rbp), %eax
decl %ecx
imull %ecx, %eax
cvtsi2ss %rax, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movl -0x14(%rbp), %eax
imull %ecx, %eax
addl %eax, %eax
cvtsi2ss %rax, %xmm1
addss %xmm1, %xmm0
addq $0x20, %rsp
popq %rbp
retq
nop
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/wm/grid.c
// Function: get_unit_offset
float get_unit_offset(float unit_size, unsigned int offset,
    monitor_t *monitor) {
    unsigned int total_border_size = 0;
    unsigned int gap_size = get_value_from_key_with_fallback(
        monitor->configuration, "grid.margins")->number;

    return (unit_size * offset) + (gap_size * (offset + 1)) +
        ((total_border_size * 2) * offset);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movss %xmm0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl $0x0, -0x14(%rbp)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0x2fd6(%rip), %rsi      # 0xa160
callq 0x5760
movl (%rax), %eax
movl %eax, -0x18(%rbp)
movss -0x4(%rbp), %xmm0
movl -0x8(%rbp), %eax
movl %eax, %ecx
cvtsi2ss %rax, %xmm2
movl -0x18(%rbp), %eax
movl %ecx, %edx
incl %edx
imull %edx, %eax
cvtsi2ss %rax, %xmm1
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
movl -0x14(%rbp), %eax
imull %ecx, %eax
addl %eax, %eax
cvtsi2ss %rax, %xmm1
addss %xmm1, %xmm0
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/comfies[P]custard/src/wm/grid.c
// Function: get_x_offset
float get_x_offset(unsigned int offset, monitor_t *monitor) {
    float unit_in_pixels = calculate_horizontal_unit_size(monitor);
    float left_offset = (float)get_value_from_key_with_fallback(
        monitor->configuration, "grid.margin.left")->number;

    return get_unit_offset(unit_in_pixels, offset, monitor) + \
        left_offset + monitor->geometry->x;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x6f10
movss %xmm0, -0x14(%rbp)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
leaq 0x2f04(%rip), %rsi      # 0xa190
callq 0x5760
movl (%rax), %eax
cvtsi2ss %rax, %xmm0
movss %xmm0, -0x18(%rbp)
movss -0x14(%rbp), %xmm0
movl -0x4(%rbp), %edi
movq -0x10(%rbp), %rsi
callq 0x7160
addss -0x18(%rbp), %xmm0
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rax
addss (%rax), %xmm0
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)