// File: /workspace/github_c_makefile_star2_O0/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:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movss %xmm0, -0x1c(%rbp)
callq 0xf630
cmpb $0x0, %al
jne 0xea07
movb $0x0, -0x1(%rbp)
jmp 0xebe7
movq -0x10(%rbp), %rsi
movq -0x18(%rbp), %rax
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movq -0x18(%rbp), %rax
movss 0x4(%rax), %xmm1
cvtss2sd %xmm1, %xmm1
leaq 0x37e6c(%rip), %rdi     # 0x46897
movb $0x2, %al
callq 0x102c0
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
movq -0x28(%rbp), %rsi
callq 0x312c0
movq -0x10(%rbp), %rax
leaq 0x5b3da(%rip), %rcx     # 0x69e28
cmpq 0x20(%rcx), %rax
jne 0xebe3
leaq -0x30(%rbp), %rdi
xorl %esi, %esi
movl $0x8, %edx
callq 0x21c0
leaq 0x6ff41(%rip), %rax     # 0x7e9b0
movl (%rax), %edi
movl $0xf, %esi
callq 0x11650
cmpb $0x0, %al
je 0xeb4e
callq 0x31440
movq %rax, -0x38(%rbp)
cvtsi2ssl -0x38(%rbp), %xmm0
cvtsi2ssl -0x34(%rbp), %xmm1
callq 0xbc10
movlpd %xmm0, -0x40(%rbp)
movq -0x40(%rbp), %rax
movq %rax, -0x30(%rbp)
leaq 0x6fefd(%rip), %rax     # 0x7e9ac
movl (%rax), %edi
movl $0xf, %esi
callq 0x11650
cmpb $0x0, %al
je 0xead0
leaq -0x30(%rbp), %rdi
movss 0x36749(%rip), %xmm0    # 0x45214
callq 0x420d0
movss -0x30(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0xeae1
jp 0xeae1
jmp 0xeb0b
movss -0x30(%rbp), %xmm0
movq -0x18(%rbp), %rax
addss (%rax), %xmm0
movss %xmm0, (%rax)
movq -0x18(%rbp), %rdi
movss 0x3650a(%rip), %xmm0    # 0x45008
movss 0x3670e(%rip), %xmm1    # 0x45214
callq 0x31500
movss -0x2c(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0xeb1c
jp 0xeb1c
jmp 0xeb4c
movss -0x2c(%rbp), %xmm0
movq -0x18(%rbp), %rax
addss 0x4(%rax), %xmm0
movss %xmm0, 0x4(%rax)
movq -0x18(%rbp), %rdi
addq $0x4, %rdi
movss 0x364c9(%rip), %xmm0    # 0x45008
movss 0x366cd(%rip), %xmm1    # 0x45214
callq 0x31500
jmp 0xebaf
movss 0x364b2(%rip), %xmm0    # 0x45008
movss 0x364ba(%rip), %xmm1    # 0x45018
callq 0xbc10
movlpd %xmm0, -0x50(%rbp)
callq 0x31410
movlpd %xmm0, -0x58(%rbp)
movsd -0x50(%rbp), %xmm0
movsd -0x58(%rbp), %xmm1
callq 0xb450
movlpd %xmm0, -0x48(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0x30(%rbp)
movss -0x1c(%rbp), %xmm0
leaq -0x30(%rbp), %rdi
callq 0x5810
movlpd %xmm0, -0x60(%rbp)
movq -0x18(%rbp), %rdi
movsd -0x60(%rbp), %xmm0
callq 0x5410
movss -0x30(%rbp), %xmm0
movb $0x1, %al
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
movb %al, -0x61(%rbp)
jne 0xebd9
jp 0xebd9
movss -0x2c(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
setne %al
setp %cl
orb %cl, %al
movb %al, -0x61(%rbp)
movb -0x61(%rbp), %al
andb $0x1, %al
movb %al, -0x1(%rbp)
jmp 0xebe7
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0x70, %rsp
popq %rbp
retq