// File: /workspace/github_c_makefile_star2_O0/mruby-zest[P]osc-bridge/src/bridge.c
// Function: cache_set_vector
static int cache_set_vector(bridge_t *br, uri_t uri, char *types, rtosc_arg_t *args)
{
    param_cache_t *line = cache_get(br, uri);
    assert(line);
    line->pending = false;

    int line_size = line->type == 'v' ? strlen(line->vec_type) : 0;

    //If the line is invalid OR
    //the cache isn't a vector field OR
    //the vector fields differ in type OR
    //the vector fields differ in value
    if(!line->valid || line->type != 'v' || strcmp(line->vec_type, types) ||
            memcmp(&line->vec_value, &args, sizeof(args[0])*line_size))
    {
        if(line->type == 'v')
            declone_vec_value(line->vec_type, line->vec_value);
        else
            declone_value(line->type, line->val);

        line->valid     = true;
        line->type      = 'v';
        line->vec_type  = strdup(types);
        line->vec_value = clone_vec_value(types, args);
        line->requests = 0;

        //check if cache line is currently debounced...
        //int debounced = false;
        //for(int i=0; i<br->debounce_len; ++i)
        //    if(!strcmp(br->bounce[i].path, line->path))
        //        debounced = true;

        //if(!debounced)
            run_callbacks(br, line);

        return true;
    }
    return false;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x3580
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x3322
jmp 0x3341
leaq 0x90f0(%rip), %rdi      # 0xc419
leaq 0x8edf(%rip), %rsi      # 0xc20f
movl $0x95, %edx
leaq 0x90e2(%rip), %rcx      # 0xc41e
callq 0x2120
movq -0x30(%rbp), %rax
movb 0x8(%rax), %cl
andb $-0x3, %cl
orb $0x0, %cl
movb %cl, 0x8(%rax)
movq -0x30(%rbp), %rax
movsbl 0x9(%rax), %eax
cmpl $0x76, %eax
jne 0x3371
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x20b0
movq %rax, -0x40(%rbp)
jmp 0x3379
xorl %eax, %eax
movq %rax, -0x40(%rbp)
jmp 0x3379
movq -0x40(%rbp), %rax
movl %eax, -0x34(%rbp)
movq -0x30(%rbp), %rax
movb 0x8(%rax), %al
shlb $0x7, %al
sarb $0x7, %al
cmpb $0x0, %al
je 0x33da
movq -0x30(%rbp), %rax
movsbl 0x9(%rax), %eax
cmpl $0x76, %eax
jne 0x33da
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rdi
movq -0x20(%rbp), %rsi
callq 0x21a0
cmpl $0x0, %eax
jne 0x33da
movq -0x30(%rbp), %rdi
addq $0x20, %rdi
addq $0x8, %rdi
movslq -0x34(%rbp), %rdx
shlq $0x4, %rdx
leaq -0x28(%rbp), %rsi
callq 0x2160
cmpl $0x0, %eax
je 0x347e
movq -0x30(%rbp), %rax
movsbl 0x9(%rax), %eax
cmpl $0x76, %eax
jne 0x33fe
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rdi
movq -0x30(%rbp), %rax
movq 0x28(%rax), %rsi
callq 0x2d40
jmp 0x3419
movq -0x30(%rbp), %rax
movb 0x9(%rax), %al
movq -0x30(%rbp), %rcx
movq 0x20(%rcx), %rsi
movq 0x28(%rcx), %rdx
movsbl %al, %edi
callq 0x2dc0
movq -0x30(%rbp), %rax
movb 0x8(%rax), %cl
andb $-0x2, %cl
orb $0x1, %cl
movb %cl, 0x8(%rax)
movq -0x30(%rbp), %rax
movb $0x76, 0x9(%rax)
movq -0x20(%rbp), %rdi
callq 0x22a0
movq %rax, %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x20(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x4f40
movq %rax, %rcx
movq -0x30(%rbp), %rax
movq %rcx, 0x28(%rax)
movq -0x30(%rbp), %rax
movl $0x0, 0x18(%rax)
movq -0x10(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x4ad0
movl $0x1, -0x4(%rbp)
jmp 0x3485
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x40, %rsp
popq %rbp
retq
nop