user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<test_long>:
  endbr64
  push   %rbp
  lea    D20(%rip),%rdi
  sub    $0x10,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  lea    0x4(%rsp),%rbp
  mov    %rbp,%rsi
  call   <str_long@plt>
  mov    0x4(%rsp),%ecx
  test   %ecx,%ecx
  jne    L190
  cmp    $0x3039,%rax
  je     L135
L190:
  mov    $0x61,%edi
  call   <fail_test@plt>
L135:
  mov    %rbp,%rsi
  lea    D9(%rip),%rdi
  call   <str_long@plt>
  mov    0x4(%rsp),%edx
  test   %edx,%edx
  jne    L45
  movabs $0x7fffffffffffffff,%rdx
  cmp    %rdx,%rax
  je     L204
L45:
  mov    $0x65,%edi
  call   <fail_test@plt>
L204:
  mov    %rbp,%rsi
  lea    D40(%rip),%rdi
  call   <str_long@plt>
  mov    0x4(%rsp),%r11d
  test   %r11d,%r11d
  jne    L19
  cmp    $0x7,%rax
  je     L186
L19:
  mov    $0x69,%edi
  call   <fail_test@plt>
L186:
  mov    %rbp,%rsi
  lea    D46(%rip),%rdi
  call   <str_long@plt>
  mov    0x4(%rsp),%r10d
  test   %r10d,%r10d
  jne    L214
  cmp    $0xfffffffffffffff9,%rax
  je     L180
L214:
  mov    $0x6d,%edi
  call   <fail_test@plt>
L180:
  mov    %rbp,%rsi
  lea    D34(%rip),%rdi
  call   <str_long@plt>
  mov    0x4(%rsp),%r9d
  test   %r9d,%r9d
  jne    L77
  test   %rax,%rax
  jne    L77
L1:
  mov    %rbp,%rsi
  lea    D15(%rip),%rdi
  call   <str_long@plt>
  mov    0x4(%rsp),%r8d
  test   %r8d,%r8d
  je     L197
L7:
  lea    D107(%rip),%rdi
  mov    %rbp,%rsi
  call   <str_long@plt>
  mov    0x4(%rsp),%edi
  test   %edi,%edi
  je     L126
L106:
  mov    %rbp,%rsi
  lea    D26(%rip),%rdi
  call   <str_long@plt>
  mov    0x4(%rsp),%esi
  test   %esi,%esi
  je     L142
L161:
  mov    %rbp,%rsi
  lea    D0(%rip),%rdi
  call   <str_long@plt>
  mov    0x4(%rsp),%ecx
  test   %ecx,%ecx
  je     L82
L48:
  mov    %rbp,%rsi
  lea    D12(%rip),%rdi
  call   <str_long@plt>
  mov    0x4(%rsp),%edx
  test   %edx,%edx
  je     L137
L29:
  mov    %rbp,%rsi
  lea    D83(%rip),%rdi
  call   <str_long@plt>
  mov    0x4(%rsp),%eax
  test   %eax,%eax
  je     L57
L89:
  mov    0x8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L154
  add    $0x10,%rsp
  pop    %rbp
  ret
  nopl   (%rax)
L77:
  mov    $0x71,%edi
  call   <fail_test@plt>
  jmp    L1
  nopw   0x0(%rax,%rax,1)
L197:
  mov    $0x75,%edi
  call   <fail_test@plt>
  jmp    L7
  nop
L57:
  mov    $0x89,%edi
  call   <fail_test@plt>
  jmp    L89
  nopl   0x0(%rax)
L137:
  mov    $0x85,%edi
  call   <fail_test@plt>
  jmp    L29
  nopl   0x0(%rax)
L82:
  mov    $0x81,%edi
  call   <fail_test@plt>
  jmp    L48
  nop
L142:
  mov    $0x7d,%edi
  call   <fail_test@plt>
  jmp    L161
  nop
L126:
  mov    $0x79,%edi
  call   <fail_test@plt>
  jmp    L106
L154:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: read_data
arguments: data_tag: D20
type: string
name: read_data
arguments: data_tag: D9
type: string
name: read_data
arguments: data_tag: D40
type: string
name: read_data
arguments: data_tag: D46
type: string
name: read_data
arguments: data_tag: D34
type: string
name: read_data
arguments: data_tag: D15
type: string
name: read_data
arguments: data_tag: D107
type: string
name: read_data
arguments: data_tag: D26
type: string
name: read_data
arguments: data_tag: D0
type: string
name: read_data
arguments: data_tag: D12
type: string
name: read_data
arguments: data_tag: D83
type: string

tool: D20: 12345

tool: D9: +9223372036854775807

tool: D40: 7

tool: D46: -7

tool: D34: 0

tool: D15: 32asdfa32

tool: 

tool: D26: .

tool: D0:  

tool: D12: 9223372036854775808

tool: D83: -9223372036854775809

assistant: ```c
void test_long() {
  int error;
  long long res = str_long("12345", &error);
  if (error || res != 12345)
    fail_test(97);
  ;
  res = str_long("+9223372036854775807", &error);
  if (error || res != 9223372036854775807LL)
    fail_test(101);
  ;
  res = str_long("7", &error);
  if (error || res != 7LL)
    fail_test(105);
  ;
  res = str_long("-7", &error);
  if (error || res != -7LL)
    fail_test(109);
  ;
  res = str_long("0", &error);
  if (error || res != 0LL)
    fail_test(113);
  ;
  res = str_long("32asdfa32", &error);
  if (!error)
    fail_test(117);
  ;
  res = str_long("", &error);
  if (!error)
    fail_test(121);
  ;
  res = str_long(".", &error);
  if (!error)
    fail_test(125);
  ;
  res = str_long(" ", &error);
  if (!error)
    fail_test(129);
  ;
  res = str_long("9223372036854775808", &error);
  if (!error)
    fail_test(133);
  ;
  res = str_long("-9223372036854775809", &error);
  if (!error)
    fail_test(137);
  ;
}
```