user: 下面的汇编指令对应的C源代码是什么：

```asm
<test_normalize_timeval>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0xb,-0x10(%rbp)
  movl   $0x1e240,-0xc(%rbp)
  lea    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <timeval_normalize@plt>
  mov    -0x10(%rbp),%eax
  cmp    $0xb,%eax
  sete   %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0xc(%rbp),%eax
  cmp    $0x1e240,%eax
  sete   %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  movl   $0xa,-0x10(%rbp)
  movl   $0xf4240,-0xc(%rbp)
  lea    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <timeval_normalize@plt>
  mov    -0x10(%rbp),%eax
  cmp    $0xb,%eax
  sete   %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0xc(%rbp),%eax
  test   %eax,%eax
  sete   %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  movl   $0xa,-0x10(%rbp)
  movl   $0x7fffffff,-0xc(%rbp)
  lea    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <timeval_normalize@plt>
  mov    -0x10(%rbp),%eax
  cmp    $0x86d,%eax
  sete   %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0xc(%rbp),%eax
  cmp    $0x7613f,%eax
  sete   %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  movl   $0xa,-0x10(%rbp)
  movl   $0xffffffff,-0xc(%rbp)
  lea    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <timeval_normalize@plt>
  mov    -0x10(%rbp),%eax
  cmp    $0x9,%eax
  sete   %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0xc(%rbp),%eax
  cmp    $0xf423f,%eax
  sete   %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  movl   $0xa,-0x10(%rbp)
  movl   $0xfff0bdc1,-0xc(%rbp)
  lea    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <timeval_normalize@plt>
  mov    -0x10(%rbp),%eax
  cmp    $0x9,%eax
  sete   %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0xc(%rbp),%eax
  cmp    $0x1,%eax
  sete   %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  movl   $0xbb8,-0x10(%rbp)
  movl   $0x80000001,-0xc(%rbp)
  lea    -0x10(%rbp),%rax
  mov    %rax,%rdi
  call   <timeval_normalize@plt>
  mov    -0x10(%rbp),%eax
  cmp    $0x354,%eax
  sete   %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  mov    -0xc(%rbp),%eax
  cmp    $0x7e101,%eax
  sete   %al
  movzbl %al,%eax
  mov    %eax,%edi
  call   <assert@plt>
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L3
  call   <__stack_chk_fail@plt>
L3:
  leave
  ret
```

assistant: ```c
void test_normalize_timeval() {
  struct timeval a;
  a.tv_sec = 11;
  a.tv_usec = 123456;
  ;
  timeval_normalize(&a);
  assert(a.tv_sec == 11);
  assert(a.tv_usec == 123456);
  ;
  a.tv_sec = 10;
  a.tv_usec = 1000000;
  ;
  timeval_normalize(&a);
  assert(a.tv_sec == 11);
  assert(a.tv_usec == 0);
  ;
  a.tv_sec = 10;
  a.tv_usec = 2147483647;
  ;
  timeval_normalize(&a);
  assert(a.tv_sec == 2157);
  assert(a.tv_usec == 483647);
  ;
  a.tv_sec = 10;
  a.tv_usec = -1;
  ;
  timeval_normalize(&a);
  assert(a.tv_sec == 9);
  assert(a.tv_usec == 999999);
  ;
  a.tv_sec = 10;
  a.tv_usec = -999999;
  ;
  timeval_normalize(&a);
  assert(a.tv_sec == 9);
  assert(a.tv_usec == 1);
  ;
  a.tv_sec = 3000;
  a.tv_usec = -2147483647;
  ;
  timeval_normalize(&a);
  assert(a.tv_sec == 852);
  assert(a.tv_usec == 516353);
  ;
}
```