user: Converte this assembly snippet into its equivalent C code:

```asm
<setup_fpga>:
  endbr64
  push   %rbx
  mov    $0x20e0114,%ebx
  nopw   0x0(%rax,%rax,1)
L6:
  mov    %ebx,%edi
  mov    $0x4,%ecx
  xor    %edx,%edx
  xor    %esi,%esi
  call   <write_kernel_memory@plt>
  lea    0x314(%rbx),%edi
  xor    %edx,%edx
  add    $0x4,%ebx
  mov    $0x4,%ecx
  mov    $0xb0b1,%esi
  call   <write_kernel_memory@plt>
  cmp    $0x20e0154,%ebx
  jne    L6
  xor    %edx,%edx
  xor    %esi,%esi
  mov    $0x4,%ecx
  mov    $0x20e0158,%edi
  call   <write_kernel_memory@plt>
  xor    %edx,%edx
  xor    %esi,%esi
  mov    $0x4,%ecx
  mov    $0x20e00f8,%edi
  call   <write_kernel_memory@plt>
  xor    %edx,%edx
  xor    %esi,%esi
  mov    $0x4,%ecx
  mov    $0x20e00fc,%edi
  call   <write_kernel_memory@plt>
  xor    %edx,%edx
  xor    %esi,%esi
  mov    $0x4,%ecx
  mov    $0x20e0100,%edi
  call   <write_kernel_memory@plt>
  xor    %edx,%edx
  xor    %esi,%esi
  mov    $0x4,%ecx
  mov    $0x20e0104,%edi
  call   <write_kernel_memory@plt>
  xor    %edx,%edx
  xor    %esi,%esi
  mov    $0x4,%ecx
  mov    $0x20e0108,%edi
  call   <write_kernel_memory@plt>
  xor    %edx,%edx
  xor    %esi,%esi
  mov    $0x4,%ecx
  mov    $0x20e0154,%edi
  call   <write_kernel_memory@plt>
  xor    %edx,%edx
  xor    %esi,%esi
  mov    $0x4,%ecx
  mov    $0x20e00f4,%edi
  call   <write_kernel_memory@plt>
  xor    %edx,%edx
  xor    %esi,%esi
  mov    $0x4,%ecx
  mov    $0x20e00f0,%edi
  call   <write_kernel_memory@plt>
  xor    %edx,%edx
  xor    %esi,%esi
  mov    $0x4,%ecx
  mov    $0x20e00ec,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  xor    %edx,%edx
  mov    $0xb0b1,%esi
  mov    $0x20e046c,%edi
  call   <write_kernel_memory@plt>
  xor    %edx,%edx
  mov    $0x4,%ecx
  mov    $0xb0b1,%esi
  mov    $0x20e040c,%edi
  call   <write_kernel_memory@plt>
  xor    %edx,%edx
  mov    $0x4,%ecx
  mov    $0xb0b1,%esi
  mov    $0x20e0410,%edi
  call   <write_kernel_memory@plt>
  xor    %edx,%edx
  mov    $0x4,%ecx
  mov    $0xb0b1,%esi
  mov    $0x20e0414,%edi
  call   <write_kernel_memory@plt>
  xor    %edx,%edx
  mov    $0x4,%ecx
  mov    $0xb0b1,%esi
  mov    $0x20e0418,%edi
  call   <write_kernel_memory@plt>
  xor    %edx,%edx
  mov    $0x4,%ecx
  mov    $0xb0b1,%esi
  mov    $0x20e041c,%edi
  call   <write_kernel_memory@plt>
  xor    %edx,%edx
  mov    $0x4,%ecx
  mov    $0xb0b1,%esi
  mov    $0x20e0468,%edi
  call   <write_kernel_memory@plt>
  xor    %edx,%edx
  mov    $0x4,%ecx
  mov    $0xb0b1,%esi
  mov    $0x20e0408,%edi
  call   <write_kernel_memory@plt>
  xor    %edx,%edx
  mov    $0x4,%ecx
  mov    $0xb0b1,%esi
  mov    $0x20e0404,%edi
  call   <write_kernel_memory@plt>
  xor    %edx,%edx
  mov    $0x4,%ecx
  mov    $0xb0b1,%esi
  mov    $0x20e0400,%edi
  call   <write_kernel_memory@plt>
  xor    %edx,%edx
  mov    $0x4,%ecx
  mov    $0xcf3,%esi
  mov    $0x20c4080,%edi
  call   <write_kernel_memory@plt>
  xor    %edx,%edx
  mov    $0x4,%ecx
  mov    $0x31910bbf,%esi
  mov    $0x21b8000,%edi
  call   <write_kernel_memory@plt>
  xor    %edx,%edx
  mov    $0x4,%ecx
  mov    $0x1000,%esi
  mov    $0x21b8004,%edi
  call   <write_kernel_memory@plt>
  xor    %edx,%edx
  mov    $0x4,%ecx
  mov    $0x9014000,%esi
  mov    $0x21b8008,%edi
  call   <write_kernel_memory@plt>
  xor    %edx,%edx
  xor    %esi,%esi
  mov    $0x4,%ecx
  mov    $0x21b800c,%edi
  call   <write_kernel_memory@plt>
  xor    %edx,%edx
  mov    $0x4,%ecx
  mov    $0x9080800,%esi
  mov    $0x21b8010,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  xor    %edx,%edx
  mov    $0x701,%esi
  mov    $0x21b8090,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  xor    %edx,%edx
  pop    %rbx
  mov    $0x10,%esi
  mov    $0x21b8094,%edi
  jmp    1050 <write_kernel_memory@plt>
```

assistant: ```c
void setup_fpga() {
  int i;
  for (i = 0; i < 16; i++) {
    write_kernel_memory(0x20e0114 + i * 4, 0x0, 0, 4);
    write_kernel_memory(0x20e0428 + i * 4, 0xb0b1, 0, 4);
  }
  write_kernel_memory(0x20e046c - 0x314, 0x0, 0, 4);
  write_kernel_memory(0x20e040c - 0x314, 0x0, 0, 4);
  write_kernel_memory(0x20e0410 - 0x314, 0x0, 0, 4);
  write_kernel_memory(0x20e0414 - 0x314, 0x0, 0, 4);
  write_kernel_memory(0x20e0418 - 0x314, 0x0, 0, 4);
  write_kernel_memory(0x20e041c - 0x314, 0x0, 0, 4);
  write_kernel_memory(0x20e0468 - 0x314, 0x0, 0, 4);
  write_kernel_memory(0x20e0408 - 0x314, 0x0, 0, 4);
  write_kernel_memory(0x20e0404 - 0x314, 0x0, 0, 4);
  write_kernel_memory(0x20e0400 - 0x314, 0x0, 0, 4);
  write_kernel_memory(0x20e046c, 0xb0b1, 0, 4);
  write_kernel_memory(0x20e040c, 0xb0b1, 0, 4);
  write_kernel_memory(0x20e0410, 0xb0b1, 0, 4);
  write_kernel_memory(0x20e0414, 0xb0b1, 0, 4);
  write_kernel_memory(0x20e0418, 0xb0b1, 0, 4);
  write_kernel_memory(0x20e041c, 0xb0b1, 0, 4);
  write_kernel_memory(0x20e0468, 0xb0b1, 0, 4);
  write_kernel_memory(0x20e0408, 0xb0b1, 0, 4);
  write_kernel_memory(0x20e0404, 0xb0b1, 0, 4);
  write_kernel_memory(0x20e0400, 0xb0b1, 0, 4);
  write_kernel_memory(0x020c4080, 0xcf3, 0, 4);
  write_kernel_memory(0x21b8000, 0x31910BBF, 0, 4);
  write_kernel_memory(0x21b8004, 0x1000, 0, 4);
  write_kernel_memory(0x21b8008, 0x09014000, 0, 4);
  write_kernel_memory(0x21b800c, 0x00000000, 0, 4);
  write_kernel_memory(0x21b8010, 0x09080800, 0, 4);
  write_kernel_memory(0x21b8090, 0x701, 0, 4);
  write_kernel_memory(0x21b8094, 0x10, 0, 4);
}
```