// File: /workspace/github_c_makefile_star2_O1/FredTheDino[P]Fog/src/engine/util/tweak_values.cpp
// Function: Util::tweak(char const*, Vec2*, float)
b8 tweak(const char *name, Vec2 *value, f32 modifier) {
    if (!debug_values_are_on()) return false;
    const char *buffer = Util::format_int(" %s: %.4f, %.4f", name, value->x, value->y);
    debug_value_logic(name, buffer);

    if (name == global_tweak.hot) {
        Vec2 delta = {};
        if (Input::down(TWEAK_STEP)) {
            Vec2i int_delta = moved_over_boundry();
            delta = V2(int_delta.x, int_delta.y);
            if (Input::down(TWEAK_SMOOTH))
                delta *= 0.1;
            if (delta.x) {
                value->x += delta.x;
                precise_snap(&value->x);
            }

            if (delta.y) {
                value->y += delta.y;
                precise_snap(&value->y);
            }
        } else {
            delta = hadamard(V2(1, -1), scaled_mouse_movements());
            *value += delta * modifier;
        }
        return delta.x != 0 || delta.y != 0;
    }
    return false;
}

// Assembly:
cmpb $0x0, 0x45a81(%rip)     # 0x4f370
je 0x9945
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x38, %rsp
movq %rsi, %rbx
movq %rdi, %r14
movss %xmm0, -0x40(%rbp)
xorps %xmm0, %xmm0
cvtss2sd (%rsi), %xmm0
cvtss2sd 0x4(%rsi), %xmm1
leaq 0x27fbb(%rip), %rdi     # 0x318d7
movq %r14, %rsi
movb $0x2, %al
callq 0xaafe
movq %r14, %rdi
movq %rax, %rsi
callq 0x23f78
leaq 0x464c0(%rip), %r15     # 0x4fdf8
cmpq %r14, 0x20(%r15)
je 0x9948
xorl %eax, %eax
jmp 0x9b43
xorl %eax, %eax
retq
leaq 0x5b031(%rip), %rax     # 0x64980
movl (%rax), %edi
movl $0xf, %esi
callq 0xba48
testb %al, %al
je 0x99ba
callq 0x24124
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
movaps %xmm0, -0x40(%rbp)
shrq $0x20, %rax
xorps %xmm0, %xmm0
cvtsi2ss %eax, %xmm0
movaps %xmm0, -0x30(%rbp)
leaq 0x5aff7(%rip), %r14     # 0x6497c
movl (%r14), %edi
movl $0xf, %esi
callq 0xba48
testb %al, %al
je 0x9a37
movss 0x2688a(%rip), %xmm0    # 0x3022c
movaps -0x40(%rbp), %xmm2
mulss %xmm0, %xmm2
movaps -0x30(%rbp), %xmm1
mulss %xmm0, %xmm1
unpcklps %xmm1, %xmm2            # xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]
jmp 0x9a3f
leaq 0x45917(%rip), %rax     # 0x4f2d8
xorps %xmm0, %xmm0
cvtsi2ssl 0x7c(%rax), %xmm0
movaps %xmm0, -0x50(%rbp)
xorps %xmm0, %xmm0
cvtsi2ssl 0x80(%rax), %xmm0
movss %xmm0, -0x30(%rbp)
leaq 0x5af98(%rip), %rax     # 0x6497c
movl (%rax), %edi
movl $0xf, %esi
callq 0xba48
leaq 0x4(%r15), %rcx
testb %al, %al
cmoveq %r15, %rcx
movss (%rcx), %xmm0
movaps -0x50(%rbp), %xmm3
mulss %xmm0, %xmm3
xorps 0x26633(%rip), %xmm0    # 0x30040
mulss -0x30(%rbp), %xmm0
movaps %xmm3, %xmm2
unpcklps %xmm0, %xmm2            # xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]
movss -0x40(%rbp), %xmm1
mulss %xmm1, %xmm3
mulss %xmm1, %xmm0
addss (%rbx), %xmm3
movss %xmm3, (%rbx)
addss 0x4(%rbx), %xmm0
jmp 0x9b23
movaps -0x40(%rbp), %xmm2
unpcklps -0x30(%rbp), %xmm2      # xmm2 = xmm2[0],mem[0],xmm2[1],mem[1]
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm2
movaps %xmm2, -0x40(%rbp)
jne 0x9a4d
jnp 0x9ab5
movss (%rbx), %xmm0
addss %xmm2, %xmm0
movss %xmm0, (%rbx)
movl (%r14), %edi
movl $0xf, %esi
callq 0xba48
xorl %ecx, %ecx
testb %al, %al
sete %cl
leaq 0x26fec(%rip), %rax     # 0x30a60
movss (%rax,%rcx,4), %xmm1
movss %xmm1, -0x30(%rbp)
movss (%rbx), %xmm0
divss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
addsd 0x26fd6(%rip), %xmm0    # 0x30a68
callq 0x2100
movaps -0x40(%rbp), %xmm2
xorps %xmm1, %xmm1
cvtss2sd -0x30(%rbp), %xmm1
mulsd %xmm0, %xmm1
xorps %xmm0, %xmm0
cvtsd2ss %xmm1, %xmm0
xorps %xmm1, %xmm1
movss %xmm0, (%rbx)
movaps %xmm2, %xmm0
shufps $0x55, %xmm2, %xmm0     # xmm0 = xmm0[1,1],xmm2[1,1]
ucomiss %xmm1, %xmm0
jne 0x9ac3
jnp 0x9b28
addss 0x4(%rbx), %xmm0
movss %xmm0, 0x4(%rbx)
movl (%r14), %edi
movl $0xf, %esi
callq 0xba48
xorl %ecx, %ecx
testb %al, %al
sete %cl
leaq 0x26f78(%rip), %rax     # 0x30a60
movss (%rax,%rcx,4), %xmm1
movss %xmm1, -0x30(%rbp)
movss 0x4(%rbx), %xmm0
divss %xmm1, %xmm0
cvtss2sd %xmm0, %xmm0
addsd 0x26f61(%rip), %xmm0    # 0x30a68
callq 0x2100
movaps -0x40(%rbp), %xmm2
xorps %xmm1, %xmm1
cvtss2sd -0x30(%rbp), %xmm1
mulsd %xmm0, %xmm1
xorps %xmm0, %xmm0
cvtsd2ss %xmm1, %xmm0
movss %xmm0, 0x4(%rbx)
xorps %xmm0, %xmm0
movaps %xmm2, %xmm1
shufps $0x55, %xmm2, %xmm1     # xmm1 = xmm1[1,1],xmm2[1,1]
cmpneqps %xmm0, %xmm1
cmpneqps %xmm0, %xmm2
orps %xmm1, %xmm2
movd %xmm2, %eax
andb $0x1, %al
addq $0x38, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq