user: 这段汇编代码用C语言表示是什么样的：

```asm
<gui_nicklist_add_to_infolist>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x20,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x18(%rsp)
  xor    %eax,%eax
  test   %rdi,%rdi
  je     L105
  mov    %rdi,%rbp
  mov    %rsi,%rbx
  mov    %rdx,%r12
  test   %rsi,%rsi
  je     L105
  test   %rdx,%rdx
  je     L135
  mov    $0x5,%edx
  lea    D1(%rip),%rsi
  mov    %r12,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L67
  mov    $0x6,%edx
  lea    D14(%rip),%rsi
  mov    %r12,%rdi
  call   <strncmp@plt>
  test   %rax,%rax
  je     L146
L135:
  movq   $0x0,0x8(%rsp)
  movq   $0x0,0x10(%rsp)
  lea    0x10(%rsp),%rdx
  lea    0x8(%rsp),%rsi
  mov    %rbx,%rdi
  call   <gui_nicklist_get_next_item@plt>
  lea    0x10(%rsp),%r12
  jmp    L127
L67:
  lea    0x5(%r12),%rdx
  mov    $0x0,%esi
  mov    %rbx,%rdi
  call   <gui_nicklist_search_nick@plt>
  mov    %rax,%rsi
  mov    %rax,0x10(%rsp)
  mov    $0x0,%eax
  test   %rsi,%rsi
  je     L156
  mov    %rbp,%rdi
  call   <gui_nicklist_add_nick_to_infolist@plt>
  jmp    L156
L146:
  lea    0x6(%r12),%rdx
  mov    $0x0,%esi
  mov    %rbx,%rdi
  call   <gui_nicklist_search_group@plt>
  mov    %rax,%rsi
  mov    %rax,0x8(%rsp)
  mov    $0x0,%eax
  test   %rsi,%rsi
  je     L156
  mov    %rbp,%rdi
  call   <gui_nicklist_add_group_to_infolist@plt>
  jmp    L156
L47:
  mov    0x10(%rsp),%rsi
  test   %rsi,%rsi
  je     L118
L35:
  mov    %rbp,%rdi
  call   <gui_nicklist_add_nick_to_infolist@plt>
L10:
  lea    0x8(%rsp),%rsi
  mov    %r12,%rdx
  mov    %rbx,%rdi
  call   <gui_nicklist_get_next_item@plt>
L127:
  mov    0x8(%rsp),%rax
  test   %rax,%rax
  je     L47
  mov    0x10(%rsp),%rsi
  test   %rsi,%rsi
  jne    L35
  mov    %rax,%rsi
  mov    %rbp,%rdi
  call   <gui_nicklist_add_group_to_infolist@plt>
  jmp    L10
L118:
  mov    $0x1,%eax
L156:
  mov    0x18(%rsp),%rdx
  sub    %fs:0x28,%rdx
  jne    L153
  add    $0x20,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L105:
  mov    $0x0,%eax
  jmp    L156
L153:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: label: D1
type_guessed: string
name: parse_data
arguments: label: D14
type_guessed: string

tool: D1: nick_

tool: D14: group_

assistant: ```c
int gui_nicklist_add_to_infolist(struct t_infolist *infolist, struct t_gui_buffer *buffer, const char *name) {
  struct t_gui_nick_group *ptr_group;
  struct t_gui_nick *ptr_nick;
  if (!infolist || !buffer)
    return 0;
  if (name && (strncmp(name, "nick_", 5) == 0)) {
    ptr_nick = gui_nicklist_search_nick(buffer, NULL, name + 5);
    if (!ptr_nick)
      return 0;
    return gui_nicklist_add_nick_to_infolist(infolist, ptr_nick);
  }
  if (name && (strncmp(name, "group_", 6) == 0)) {
    ptr_group = gui_nicklist_search_group(buffer, NULL, name + 6);
    if (!ptr_group)
      return 0;
    return gui_nicklist_add_group_to_infolist(infolist, ptr_group);
  }
  ptr_group = NULL;
  ptr_nick = NULL;
  gui_nicklist_get_next_item(buffer, &ptr_group, &ptr_nick);
  while (ptr_group || ptr_nick) {
    if (ptr_nick)
      gui_nicklist_add_nick_to_infolist(infolist, ptr_nick);
    else
      gui_nicklist_add_group_to_infolist(infolist, ptr_group);
    gui_nicklist_get_next_item(buffer, &ptr_group, &ptr_nick);
  }
  return 1;
}
```