user: What would the C source look like for the assembly code provided here:

```asm
<micro_setup_grid>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %esi,-0x1c(%rbp)
  movl   $0x1,-0x4(%rbp)
  movl   $0x0,-0x8(%rbp)
  jmp    L67
L23:
  cmpl   $0x1,-0x4(%rbp)
  jne    L26
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movb   $0x21,(%rax)
  mov    -0x8(%rbp),%eax
  imul   -0x1c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movb   $0x21,(%rax)
  movl   $0x0,-0x4(%rbp)
  jmp    L33
L26:
  mov    -0x8(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movb   $0x20,(%rax)
  mov    -0x8(%rbp),%eax
  imul   -0x1c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movb   $0x20,(%rax)
  movl   $0x1,-0x4(%rbp)
L33:
  addl   $0x1,-0x8(%rbp)
L67:
  mov    -0x8(%rbp),%eax
  cmp    -0x1c(%rbp),%eax
  jl     L23
  mov    -0x1c(%rbp),%esi
  mov    -0x18(%rbp),%rax
  mov    $0x0,%ecx
  mov    $0x0,%edx
  mov    %rax,%rdi
  call   <place_finder@plt>
  movl   $0x0,-0x8(%rbp)
  jmp    L54
L20:
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  shl    $0x3,%eax
  sub    %edx,%eax
  mov    %eax,%ecx
  mov    -0x8(%rbp),%eax
  add    %ecx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movb   $0x10,(%rax)
  mov    -0x8(%rbp),%eax
  imul   -0x1c(%rbp),%eax
  cltq
  lea    0x7(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movb   $0x10,(%rax)
  addl   $0x1,-0x8(%rbp)
L54:
  cmpl   $0x6,-0x8(%rbp)
  jle    L20
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  shl    $0x3,%eax
  sub    %edx,%eax
  cltq
  lea    0x7(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movb   $0x10,(%rax)
  movl   $0x0,-0x8(%rbp)
  jmp    L71
L0:
  mov    -0x1c(%rbp),%eax
  lea    0x0(,%rax,8),%edx
  mov    -0x8(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x1c(%rbp),%eax
  lea    0x0(,%rax,8),%ecx
  mov    -0x8(%rbp),%eax
  add    %ecx,%eax
  movslq %eax,%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  add    $0x20,%edx
  mov    %dl,(%rax)
  mov    -0x8(%rbp),%eax
  imul   -0x1c(%rbp),%eax
  cltq
  lea    0x8(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x8(%rbp),%eax
  imul   -0x1c(%rbp),%eax
  cltq
  lea    0x8(%rax),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  add    $0x20,%edx
  mov    %dl,(%rax)
  addl   $0x1,-0x8(%rbp)
L71:
  cmpl   $0x7,-0x8(%rbp)
  jle    L0
  mov    -0x1c(%rbp),%eax
  shl    $0x3,%eax
  cltq
  lea    0x8(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x1c(%rbp),%eax
  shl    $0x3,%eax
  cltq
  lea    0x8(%rax),%rcx
  mov    -0x18(%rbp),%rax
  add    %rcx,%rax
  add    $0x14,%edx
  mov    %dl,(%rax)
  nop
  leave
  ret
```

assistant: ```c
void micro_setup_grid(unsigned char *grid, const int size) {
  int i, toggle = 1;
  for (i = 0; i < size; i++) {
    if (toggle == 1) {
      grid[i] = 0x21;
      grid[(i * size)] = 0x21;
      toggle = 0;
    } else {
      grid[i] = 0x20;
      grid[(i * size)] = 0x20;
      toggle = 1;
    }
  }
  place_finder(grid, size, 0, 0);
  for (i = 0; i < 7; i++) {
    grid[(7 * size) + i] = 0x10;
    grid[(i * size) + 7] = 0x10;
  }
  grid[(7 * size) + 7] = 0x10;
  for (i = 0; i < 8; i++) {
    grid[(8 * size) + i] += 0x20;
    grid[(i * size) + 8] += 0x20;
  }
  grid[(8 * size) + 8] += 20;
}
```