user: What is the c source code of the assembly code below:

```asm
<normal_var_and_pointers>:
  endbr64
  push   %rbx
  mov    $0xa,%esi
  lea    D96(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D0(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xb,%esi
  lea    D94(%rip),%rbx
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D89(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xa,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D53(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xb,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D84(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D49(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D5(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x14,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D81(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    D33(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0xb,%esi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  pop    %rbx
  ret
```

tool_calls: name: parse_data
arguments: data_tag: D96
type_infered: string
name: parse_data
arguments: data_tag: D0
type_infered: string
name: parse_data
arguments: data_tag: D94
type_infered: string
name: parse_data
arguments: data_tag: D89
type_infered: string
name: parse_data
arguments: data_tag: D53
type_infered: string
name: parse_data
arguments: data_tag: D84
type_infered: string
name: parse_data
arguments: data_tag: D49
type_infered: string
name: parse_data
arguments: data_tag: D5
type_infered: string
name: parse_data
arguments: data_tag: D81
type_infered: string
name: parse_data
arguments: data_tag: D33
type_infered: string

tool: D96: 
Original value of i: %i

tool: D0: 
	Incrementing value of i via i.

tool: D94: 
		New value of i: %i

tool: D89: 
	Decrementing value of i via pointer `int * ptrToVar`.

tool: D53: 
	Incrementing value of i via pointer to constant location: `int * const ptrToConstantLoc`.

tool: D84: 
	Decrementing value of i via pointer to constant var: `const int * ptrToConstantVar`.

tool: D49: 
ERROR: cannot decrement as to what it points cannot be modified for `const int * ptrToConstantVar`.

tool: D5: 
INFO: Though we can point to entirely different variable.

tool: D81: 
	Incrementing value of i via pointer to constant var and location: `const int * const ptrToConstantVarAndLoc`.

tool: D33: 
ERROR: Cannot change location or value for `const int * const ptrToConstantVarAndLoc`.

assistant: ```c
void normal_var_and_pointers() {
  int other = 20;
  int i = 10;
  int *ptrToVar = &i;
  int *const ptrToConstantLoc = &i;
  const int *ptrToConstantVar = &i;
  const int *const ptrToConstantVarAndLoc = &i;
  printf("\nOriginal value of i: %i", i);
  printf("\n\tIncrementing value of i via i.");
  i++;
  printf("\n\t\tNew value of i: %i", i);
  printf("\n\tDecrementing value of i via pointer `int * ptrToVar`.");
  --*ptrToVar;
  printf("\n\t\tNew value of i: %i", *ptrToVar);
  printf("\n\tIncrementing value of i via pointer to constant location: `int * const ptrToConstantLoc`.");
  ++*ptrToConstantLoc;
  printf("\n\t\tNew value of i: %i", *ptrToConstantLoc);
  printf("\n\tDecrementing value of i via pointer to constant var: `const int * ptrToConstantVar`.");
  printf("\nERROR: cannot decrement as to what it points cannot be modified for `const int * ptrToConstantVar`.");
  printf("\nINFO: Though we can point to entirely different variable.");
  ptrToConstantVar = &other;
  printf("\n\t\tNew value of i: %i", *ptrToConstantVar);
  printf("\n\tIncrementing value of i via pointer to constant var and location: `const int * const ptrToConstantVarAndLoc`.");
  printf("\nERROR: Cannot change location or value for `const int * const ptrToConstantVarAndLoc`.");
  printf("\n\t\tNew value of i: %i", *ptrToConstantVarAndLoc);
}
```