user: 请从给定的汇编指令推导出C源代码：

```asm
<prep_eim>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  movl   $0x0,-0x4(%rbp)
  jmp    L0
L2:
  mov    -0x4(%rbp),%eax
  add    $0x838045,%eax
  shl    $0x2,%eax
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    %eax,%edi
  call   <write_kernel_memory@plt>
  mov    -0x4(%rbp),%eax
  add    $0x83810a,%eax
  shl    $0x2,%eax
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0xb0b1,%esi
  mov    %eax,%edi
  call   <write_kernel_memory@plt>
  addl   $0x1,-0x4(%rbp)
L0:
  cmpl   $0xf,-0x4(%rbp)
  jle    L2
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    $0x20e0158,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    $0x20e00f8,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    $0x20e00fc,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    $0x20e0100,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    $0x20e0104,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    $0x20e0108,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    $0x20e0154,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    $0x20e00f4,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    $0x20e00f0,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    $0x20e00ec,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0xb0b1,%esi
  mov    $0x20e046c,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0xb0b1,%esi
  mov    $0x20e040c,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0xb0b1,%esi
  mov    $0x20e0410,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0xb0b1,%esi
  mov    $0x20e0414,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0xb0b1,%esi
  mov    $0x20e0418,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0xb0b1,%esi
  mov    $0x20e041c,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0xb0b1,%esi
  mov    $0x20e0468,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0xb0b1,%esi
  mov    $0x20e0408,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0xb0b1,%esi
  mov    $0x20e0404,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0xb0b1,%esi
  mov    $0x20e0400,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0xcf3,%esi
  mov    $0x20c4080,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0x5191c0b9,%esi
  mov    $0x21b8000,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0x1001,%esi
  mov    $0x21b8004,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0xa024000,%esi
  mov    $0x21b8008,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    $0x21b800c,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0x9080800,%esi
  mov    $0x21b8010,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0x1,%esi
  mov    $0x21b8090,%edi
  call   <write_kernel_memory@plt>
  mov    $0x4,%ecx
  mov    $0x0,%edx
  mov    $0x10,%esi
  mov    $0x21b8094,%edi
  call   <write_kernel_memory@plt>
  mov    $0x0,%eax
  leave
  ret
```

assistant: ```c
int prep_eim(void) {
  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, 0x5191C0B9, 0, 4);
  write_kernel_memory(0x21b8004, 0x1001, 0, 4);
  write_kernel_memory(0x21b8008, 0x0A024000, 0, 4);
  write_kernel_memory(0x21b800c, 0x00000000, 0, 4);
  write_kernel_memory(0x21b8010, 0x09080800, 0, 4);
  write_kernel_memory(0x21b8090, 0x1, 0, 4);
  write_kernel_memory(0x21b8094, 0x10, 0, 4);
  return 0;
}
```