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

```asm
<test_ber_convert>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    $0xc,%r8d
  lea    D63(%rip),%rax
  mov    %rax,%rcx
  mov    $0xc,%edx
  lea    D63(%rip),%rax
  mov    %rax,%rsi
  lea    D0(%rip),%rax
  mov    %rax,%rdi
  call   <do_ber_convert@plt>
  test   %rax,%rax
  je     L41
  mov    $0x1c,%r8d
  lea    D99(%rip),%rax
  mov    %rax,%rcx
  mov    $0x14,%edx
  lea    D87(%rip),%rax
  mov    %rax,%rsi
  lea    D14(%rip),%rax
  mov    %rax,%rdi
  call   <do_ber_convert@plt>
  test   %rax,%rax
  je     L41
  mov    $0x30,%r8d
  lea    D93(%rip),%rax
  mov    %rax,%rcx
  mov    $0x18,%edx
  lea    D89(%rip),%rax
  mov    %rax,%rsi
  lea    D94(%rip),%rax
  mov    %rax,%rdi
  call   <do_ber_convert@plt>
  test   %rax,%rax
  je     L41
  mov    $0x17c,%r8d
  lea    D40(%rip),%rax
  mov    %rax,%rcx
  mov    $0x154,%edx
  lea    D27(%rip),%rax
  mov    %rax,%rsi
  lea    D100(%rip),%rax
  mov    %rax,%rdi
  call   <do_ber_convert@plt>
  test   %rax,%rax
  je     L41
  mov    $0x1,%eax
  jmp    L12
L41:
  mov    $0x0,%eax
L12:
  pop    %rbp
  ret
```

tool_calls: name: read_data
arguments: tag: D63
type_infered: string
name: read_data
arguments: tag: D0
type_infered: string
name: read_data
arguments: tag: D99
type_infered: string
name: read_data
arguments: tag: D87
type_infered: string
name: read_data
arguments: tag: D14
type_infered: string
name: read_data
arguments: tag: D93
type_infered: string
name: read_data
arguments: tag: D89
type_infered: string
name: read_data
arguments: tag: D94
type_infered: string
name: read_data
arguments: tag: D40
type_infered: string
name: read_data
arguments: tag: D27
type_infered: string
name: read_data
arguments: tag: D100
type_infered: string

tool: D63: 

tool: D0: kSimpleBER

tool: D99: 0

tool: D87: 0

tool: D14: kIndefBER

tool: D93: $

tool: D89: 

tool: D94: kOctetStringBER

tool: D40: 0

tool: D27: 0

tool: D100: kNSSBER

assistant: ```c
int test_ber_convert(void) {
  static const uint8_t kSimpleBER[] = {0x01, 0x01, 0x00};
  static const uint8_t kIndefBER[] = {0x30, 0x80, 0x01, 0x01, 0x02, 0x00, 0x00};
  static const uint8_t kIndefDER[] = {0x30, 0x03, 0x01, 0x01, 0x02};
  static const uint8_t kOctetStringBER[] = {0x24, 0x80, 0x04, 0x02, 0, 1, 0x04, 0x02, 2, 3, 0x00, 0x00};
  static const uint8_t kOctetStringDER[] = {0x04, 0x04, 0, 1, 2, 3};
  static const uint8_t kNSSBER[] = {
      0x30, 0x80, 0x02, 0x01, 0x03, 0x30, 0x80, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x80, 0x24, 0x80, 0x04, 0x04, 0x01, 0x02, 0x03, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x39, 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05, 0x00, 0x04, 0x14, 0x84, 0x98, 0xfc, 0x66, 0x33, 0xee, 0xba, 0xe7, 0x90, 0xc1, 0xb6, 0xe8, 0x8f, 0xfe, 0x1d, 0xc5, 0xa5, 0x97, 0x93, 0x3e, 0x04, 0x10, 0x38, 0x62, 0xc6, 0x44, 0x12, 0xd5, 0x30, 0x00, 0xf8, 0xf2, 0x1b, 0xf0, 0x6e, 0x10, 0x9b, 0xb8, 0x02, 0x02, 0x07, 0xd0, 0x00, 0x00,
  };
  static const uint8_t kNSSDER[] = {
      0x30, 0x53, 0x02, 0x01, 0x03, 0x30, 0x13, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0xa0, 0x06, 0x04, 0x04, 0x01, 0x02, 0x03, 0x04, 0x30, 0x39, 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05, 0x00, 0x04, 0x14, 0x84, 0x98, 0xfc, 0x66, 0x33, 0xee, 0xba, 0xe7, 0x90, 0xc1, 0xb6, 0xe8, 0x8f, 0xfe, 0x1d, 0xc5, 0xa5, 0x97, 0x93, 0x3e, 0x04, 0x10, 0x38, 0x62, 0xc6, 0x44, 0x12, 0xd5, 0x30, 0x00, 0xf8, 0xf2, 0x1b, 0xf0, 0x6e, 0x10, 0x9b, 0xb8, 0x02, 0x02, 0x07, 0xd0,
  };
  return do_ber_convert("kSimpleBER", kSimpleBER, sizeof(kSimpleBER), kSimpleBER, sizeof(kSimpleBER)) && do_ber_convert("kIndefBER", kIndefDER, sizeof(kIndefDER), kIndefBER, sizeof(kIndefBER)) && do_ber_convert("kOctetStringBER", kOctetStringDER, sizeof(kOctetStringDER), kOctetStringBER, sizeof(kOctetStringBER)) && do_ber_convert("kNSSBER", kNSSDER, sizeof(kNSSDER), kNSSBER, sizeof(kNSSBER));
}
```