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

```asm
<xfrm_fill_key>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    %rsi,-0x10(%rbp)
  mov    %rdx,-0x18(%rbp)
  mov    %rcx,-0x20(%rbp)
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D299(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L339
  mov    -0x20(%rbp),%rax
  movl   $0x0,(%rax)
  jmp    L37
L339:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D56(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L277
  mov    -0x20(%rbp),%rax
  movl   $0x0,(%rax)
  jmp    L37
L277:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D69(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L195
  mov    -0x20(%rbp),%rax
  movl   $0x40,(%rax)
  jmp    L37
L195:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D278(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L165
  mov    -0x20(%rbp),%rax
  movl   $0x80,(%rax)
  jmp    L37
L165:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D22(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L108
  mov    -0x20(%rbp),%rax
  movl   $0x80,(%rax)
  jmp    L37
L108:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D263(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L436
  mov    -0x20(%rbp),%rax
  movl   $0x80,(%rax)
  jmp    L37
L436:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D122(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L398
  mov    -0x20(%rbp),%rax
  movl   $0x80,(%rax)
  jmp    L37
L398:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D74(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L292
  mov    -0x20(%rbp),%rax
  movl   $0x80,(%rax)
  jmp    L37
L292:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D213(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L571
  mov    -0x20(%rbp),%rax
  movl   $0xa0,(%rax)
  jmp    L37
L571:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D187(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L184
  mov    -0x20(%rbp),%rax
  movl   $0xa0,(%rax)
  jmp    L37
L184:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D181(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L558
  mov    -0x20(%rbp),%rax
  movl   $0xc0,(%rax)
  jmp    L37
L558:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D230(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L374
  mov    -0x20(%rbp),%rax
  movl   $0x100,(%rax)
  jmp    L37
L374:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D89(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L366
  mov    -0x20(%rbp),%rax
  movl   $0x100,(%rax)
  jmp    L37
L366:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D176(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L379
  mov    -0x20(%rbp),%rax
  movl   $0x100,(%rax)
  jmp    L37
L379:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D140(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L422
  mov    -0x20(%rbp),%rax
  movl   $0x100,(%rax)
  jmp    L37
L422:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D14(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L136
  mov    -0x20(%rbp),%rax
  movl   $0x120,(%rax)
  jmp    L37
L136:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D127(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L588
  mov    -0x20(%rbp),%rax
  movl   $0x180,(%rax)
  jmp    L37
L588:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D52(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L244
  mov    -0x20(%rbp),%rax
  movl   $0x1c0,(%rax)
  jmp    L37
L244:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D99(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L9
  mov    -0x20(%rbp),%rax
  movl   $0x200,(%rax)
  jmp    L37
L9:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D232(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L254
  mov    -0x20(%rbp),%rax
  movl   $0xa0,(%rax)
  jmp    L37
L254:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D156(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L96
  mov    -0x20(%rbp),%rax
  movl   $0xa0,(%rax)
  jmp    L37
L96:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D264(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L203
  mov    -0x20(%rbp),%rax
  movl   $0x98,(%rax)
  jmp    L37
L203:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D39(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L31
  mov    -0x20(%rbp),%rax
  movl   $0xe0,(%rax)
  jmp    L37
L31:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D231(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L364
  mov    -0x20(%rbp),%rax
  movl   $0xe0,(%rax)
  jmp    L37
L364:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D276(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L163
  mov    -0x20(%rbp),%rax
  movl   $0xd8,(%rax)
  jmp    L37
L163:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D63(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L473
  mov    -0x20(%rbp),%rax
  movl   $0x120,(%rax)
  jmp    L37
L473:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D246(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L159
  mov    -0x20(%rbp),%rax
  movl   $0x120,(%rax)
  jmp    L37
L159:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D132(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L97
  mov    -0x20(%rbp),%rax
  movl   $0x118,(%rax)
  jmp    L37
L97:
  mov    -0x8(%rbp),%rax
  mov    $0x40,%edx
  lea    D16(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  jne    L37
  mov    -0x20(%rbp),%rax
  movl   $0x0,(%rax)
L37:
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,%eax
  cmp    %rax,-0x18(%rbp)
  jae    L62
  mov    $0x0,%eax
  call   <getpid@plt>
  mov    $0x33d,%edx
  mov    %eax,%esi
  lea    D133(%rip),%rax
  mov    %rax,%rdi
  call   <ksft_print_msg@plt>
  mov    $0xffffffff,%eax
  jmp    L6
L62:
  mov    -0x20(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x10(%rbp),%rax
  mov    %edx,%esi
  mov    %rax,%rdi
  call   <randomize_buffer@plt>
  mov    $0x0,%eax
L6:
  leave
  ret
```

tool_calls: name: parse_data
arguments: tag: D299
type_infered: string
name: parse_data
arguments: tag: D56
type_infered: string
name: parse_data
arguments: tag: D69
type_infered: string
name: parse_data
arguments: tag: D278
type_infered: string
name: parse_data
arguments: tag: D22
type_infered: string
name: parse_data
arguments: tag: D263
type_infered: string
name: parse_data
arguments: tag: D122
type_infered: string
name: parse_data
arguments: tag: D74
type_infered: string
name: parse_data
arguments: tag: D213
type_infered: string
name: parse_data
arguments: tag: D187
type_infered: string
name: parse_data
arguments: tag: D181
type_infered: string
name: parse_data
arguments: tag: D230
type_infered: string
name: parse_data
arguments: tag: D89
type_infered: string
name: parse_data
arguments: tag: D176
type_infered: string
name: parse_data
arguments: tag: D140
type_infered: string
name: parse_data
arguments: tag: D14
type_infered: string
name: parse_data
arguments: tag: D127
type_infered: string
name: parse_data
arguments: tag: D52
type_infered: string
name: parse_data
arguments: tag: D99
type_infered: string
name: parse_data
arguments: tag: D232
type_infered: string
name: parse_data
arguments: tag: D156
type_infered: string
name: parse_data
arguments: tag: D264
type_infered: string
name: parse_data
arguments: tag: D39
type_infered: string
name: parse_data
arguments: tag: D231
type_infered: string
name: parse_data
arguments: tag: D276
type_infered: string
name: parse_data
arguments: tag: D63
type_infered: string
name: parse_data
arguments: tag: D246
type_infered: string
name: parse_data
arguments: tag: D132
type_infered: string
name: parse_data
arguments: tag: D16
type_infered: string
name: parse_data
arguments: tag: D133
type_infered: string

tool: D299: digest_null

tool: D56: ecb(cipher_null)

tool: D69: cbc(des)

tool: D278: hmac(md5)

tool: D22: cmac(aes)

tool: D263: xcbc(aes)

tool: D122: cbc(cast5)

tool: D74: cbc(serpent)

tool: D213: hmac(sha1)

tool: D187: hmac(rmd160)

tool: D181: cbc(des3_ede)

tool: D230: hmac(sha256)

tool: D89: cbc(aes)

tool: D176: cbc(camellia)

tool: D140: cbc(twofish)

tool: D14: rfc3686(ctr(aes))

tool: D127: hmac(sha384)

tool: D52: cbc(blowfish)

tool: D99: hmac(sha512)

tool: D232: rfc4106(gcm(aes))-128

tool: D156: rfc4543(gcm(aes))-128

tool: D264: rfc4309(ccm(aes))-128

tool: D39: rfc4106(gcm(aes))-192

tool: D231: rfc4543(gcm(aes))-192

tool: D276: rfc4309(ccm(aes))-192

tool: D63: rfc4106(gcm(aes))-256

tool: D246: rfc4543(gcm(aes))-256

tool: D132: rfc4309(ccm(aes))-256

tool: D16: rfc7539(chacha20,poly1305)-128

tool: D133: %d[%u] Can't pack a key - too big for buffer


assistant: ```c
int xfrm_fill_key(char *name, char *buf, size_t buf_len, unsigned int *key_len) {
  if (strncmp(name, "digest_null", 64) == 0)
    *key_len = 0;
  else if (strncmp(name, "ecb(cipher_null)", 64) == 0)
    *key_len = 0;
  else if (strncmp(name, "cbc(des)", 64) == 0)
    *key_len = 64;
  else if (strncmp(name, "hmac(md5)", 64) == 0)
    *key_len = 128;
  else if (strncmp(name, "cmac(aes)", 64) == 0)
    *key_len = 128;
  else if (strncmp(name, "xcbc(aes)", 64) == 0)
    *key_len = 128;
  else if (strncmp(name, "cbc(cast5)", 64) == 0)
    *key_len = 128;
  else if (strncmp(name, "cbc(serpent)", 64) == 0)
    *key_len = 128;
  else if (strncmp(name, "hmac(sha1)", 64) == 0)
    *key_len = 160;
  else if (strncmp(name, "hmac(rmd160)", 64) == 0)
    *key_len = 160;
  else if (strncmp(name, "cbc(des3_ede)", 64) == 0)
    *key_len = 192;
  else if (strncmp(name, "hmac(sha256)", 64) == 0)
    *key_len = 256;
  else if (strncmp(name, "cbc(aes)", 64) == 0)
    *key_len = 256;
  else if (strncmp(name, "cbc(camellia)", 64) == 0)
    *key_len = 256;
  else if (strncmp(name, "cbc(twofish)", 64) == 0)
    *key_len = 256;
  else if (strncmp(name, "rfc3686(ctr(aes))", 64) == 0)
    *key_len = 288;
  else if (strncmp(name, "hmac(sha384)", 64) == 0)
    *key_len = 384;
  else if (strncmp(name, "cbc(blowfish)", 64) == 0)
    *key_len = 448;
  else if (strncmp(name, "hmac(sha512)", 64) == 0)
    *key_len = 512;
  else if (strncmp(name, "rfc4106(gcm(aes))-128", 64) == 0)
    *key_len = 160;
  else if (strncmp(name, "rfc4543(gcm(aes))-128", 64) == 0)
    *key_len = 160;
  else if (strncmp(name, "rfc4309(ccm(aes))-128", 64) == 0)
    *key_len = 152;
  else if (strncmp(name, "rfc4106(gcm(aes))-192", 64) == 0)
    *key_len = 224;
  else if (strncmp(name, "rfc4543(gcm(aes))-192", 64) == 0)
    *key_len = 224;
  else if (strncmp(name, "rfc4309(ccm(aes))-192", 64) == 0)
    *key_len = 216;
  else if (strncmp(name, "rfc4106(gcm(aes))-256", 64) == 0)
    *key_len = 288;
  else if (strncmp(name, "rfc4543(gcm(aes))-256", 64) == 0)
    *key_len = 288;
  else if (strncmp(name, "rfc4309(ccm(aes))-256", 64) == 0)
    *key_len = 280;
  else if (strncmp(name, "rfc7539(chacha20,poly1305)-128", 64) == 0)
    *key_len = 0;
  if (*key_len > buf_len) {
    ksft_print_msg("%d[%u] "
                   "Can't pack a key - too big for buffer"
                   "\n",
                   getpid(), 829);
    return -1;
  }
  randomize_buffer(buf, *key_len);
  return 0;
}
```