`let` changes value after initialization when initialized from loop iterator
### Description

```nim
var xs: seq[proc()]

for mutableVal in 1 .. 5:
  let immutableVal = mutableVal
  xs.add proc() = echo $immutableVal

for x in xs:
  x()
```

### Nim Version

% nim -v
Nim Compiler Version 2.0.14 [MacOSX: arm64]
Compiled at 2025-01-06
Copyright (c) 2006-2023 by Andreas Rumpf

git hash: bf4de6a394e040d9810cba8c69fb2829ff04dcc6
active boot switches: -d:release


### Current Output

```text
5
5
5
5
5
```

### Expected Output

```text
1
2
3
4
5
```

### Known Workarounds

Use `closureScope` around the `let immutableVal = mutableVal` to ensure that `let` contents don't change after initialization.

### Additional Information

Both in `--mm:refc` and `--mm:orc`.