user: Translate the below assembly code into C programming language:

```asm
<parse_global>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xc0,%rsp
  mov    %rdi,-0xb8(%rbp)
  mov    -0xb8(%rbp),%rax
  lea    D207(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <parse@plt>
  mov    %rax,-0xa8(%rbp)
  mov    -0xb8(%rbp),%rax
  lea    D36(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <parse@plt>
  mov    %rax,-0xa0(%rbp)
  mov    -0xb8(%rbp),%rax
  lea    D175(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <parse@plt>
  mov    %rax,-0x98(%rbp)
  mov    -0xb8(%rbp),%rax
  lea    D122(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <parse@plt>
  mov    %rax,-0x90(%rbp)
  mov    -0xb8(%rbp),%rax
  lea    D172(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <parse@plt>
  mov    %rax,-0x88(%rbp)
  mov    -0xb8(%rbp),%rax
  lea    D125(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <parse@plt>
  mov    %rax,-0x80(%rbp)
  mov    -0xb8(%rbp),%rax
  lea    D141(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <parse@plt>
  mov    %rax,-0x78(%rbp)
  mov    -0xb8(%rbp),%rax
  lea    D170(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <parse@plt>
  mov    %rax,-0x70(%rbp)
  mov    -0xb8(%rbp),%rax
  lea    D204(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <parse@plt>
  mov    %rax,-0x68(%rbp)
  mov    -0xb8(%rbp),%rax
  lea    D0(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <parse@plt>
  mov    %rax,-0x60(%rbp)
  mov    -0xb8(%rbp),%rax
  lea    D24(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <parse@plt>
  mov    %rax,-0x58(%rbp)
  mov    -0xb8(%rbp),%rax
  lea    D4(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <parse@plt>
  mov    %rax,-0x50(%rbp)
  mov    -0xb8(%rbp),%rax
  lea    D72(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <parse@plt>
  mov    %rax,-0x48(%rbp)
  mov    -0xb8(%rbp),%rax
  lea    D202(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <parse@plt>
  mov    %rax,-0x40(%rbp)
  mov    -0xb8(%rbp),%rax
  lea    D171(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <parse@plt>
  mov    %rax,-0x38(%rbp)
  mov    -0xb8(%rbp),%rax
  lea    D126(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <parse@plt>
  mov    %rax,-0x30(%rbp)
  mov    -0xb8(%rbp),%rax
  lea    D142(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <parse@plt>
  mov    %rax,-0x28(%rbp)
  mov    -0xb8(%rbp),%rax
  lea    D239(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <parse@plt>
  mov    %rax,-0x20(%rbp)
  mov    -0xb8(%rbp),%rax
  lea    D66(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <parse@plt>
  mov    %rax,-0x18(%rbp)
  mov    -0xb8(%rbp),%rax
  lea    D27(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <parse@plt>
  mov    %rax,-0x10(%rbp)
  mov    -0xb8(%rbp),%rax
  lea    D235(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <parse@plt>
  mov    %rax,-0x8(%rbp)
  mov    -0x80(%rbp),%rcx
  mov    -0xa0(%rbp),%rdx
  mov    -0xa8(%rbp),%rax
  mov    %rax,%rsi
  lea    D83(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    -0x20(%rbp),%rdi
  mov    -0x8(%rbp),%rsi
  mov    -0x10(%rbp),%rcx
  mov    -0x28(%rbp),%rdx
  mov    -0x30(%rbp),%rax
  sub    $0x8,%rsp
  push   -0x18(%rbp)
  mov    %rdi,%r9
  mov    %rsi,%r8
  mov    %rax,%rsi
  lea    D92(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  add    $0x10,%rsp
  mov    -0x70(%rbp),%rdi
  mov    -0x78(%rbp),%rsi
  mov    -0x88(%rbp),%rcx
  mov    -0x90(%rbp),%rdx
  mov    -0x98(%rbp),%rax
  sub    $0x8,%rsp
  push   -0x38(%rbp)
  push   -0x40(%rbp)
  push   -0x48(%rbp)
  push   -0x50(%rbp)
  push   -0x58(%rbp)
  push   -0x60(%rbp)
  push   -0x68(%rbp)
  mov    %rdi,%r9
  mov    %rsi,%r8
  mov    %rax,%rsi
  lea    D193(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  add    $0x40,%rsp
  nop
  leave
  ret
```

tool_calls: name: read_data
arguments: label: D207
type: string
name: read_data
arguments: label: D36
type: string
name: read_data
arguments: label: D175
type: string
name: read_data
arguments: label: D122
type: string
name: read_data
arguments: label: D172
type: string
name: read_data
arguments: label: D125
type: string
name: read_data
arguments: label: D141
type: string
name: read_data
arguments: label: D170
type: string
name: read_data
arguments: label: D204
type: string
name: read_data
arguments: label: D0
type: string
name: read_data
arguments: label: D24
type: string
name: read_data
arguments: label: D4
type: string
name: read_data
arguments: label: D72
type: string
name: read_data
arguments: label: D202
type: string
name: read_data
arguments: label: D171
type: string
name: read_data
arguments: label: D126
type: string
name: read_data
arguments: label: D142
type: string
name: read_data
arguments: label: D239
type: string
name: read_data
arguments: label: D66
type: string
name: read_data
arguments: label: D27
type: string
name: read_data
arguments: label: D235
type: string
name: read_data
arguments: label: D83
type: string
name: read_data
arguments: label: D92
type: string
name: read_data
arguments: label: D193
type: string

tool: D207: Tt

tool: D36: Te

tool: D175: Cf

tool: D122: Af

tool: D172: Pf

tool: D125: Ta

tool: D141: Lm

tool: D170: Et

tool: D204: Ea

tool: D0: Rt

tool: D24: Ra

tool: D4: Rx

tool: D72: Fp

tool: D202: Ec

tool: D171: Em

tool: D126: Oc

tool: D142: Om

tool: D239: Nc

tool: D66: Nm

tool: D27: Pc

tool: D235: Pm

tool: D83: total tmem ops=%llu (errors=%llu) -- tmem pages avail=%llu


tool: D92: datastructs: objs=%llu (max=%llu) pgps=%llu (max=%llu) nodes=%llu (max=%llu)


tool: D193: misc: failed_copies=%llu alloc_failed=%llu alloc_page_failed=%llu low_mem=%llu evicted=%llu/%llu relinq=%llu/%llu, max_evicts_per_relinq=%llu, flush_pools=%llu, eph_count=%llu, eph_max=%llu


assistant: ```c
void parse_global(char *s) {
  unsigned long long total_ops = parse(s, "Tt");
  unsigned long long errored_ops = parse(s, "Te");
  unsigned long long failed_copies = parse(s, "Cf");
  unsigned long long alloc_failed = parse(s, "Af");
  unsigned long long alloc_page_failed = parse(s, "Pf");
  unsigned long long avail_pages = parse(s, "Ta");
  unsigned long long low_on_memory = parse(s, "Lm");
  unsigned long long evicted_pgs = parse(s, "Et");
  unsigned long long evict_attempts = parse(s, "Ea");
  unsigned long long relinq_pgs = parse(s, "Rt");
  unsigned long long relinq_attempts = parse(s, "Ra");
  unsigned long long max_evicts_per_relinq = parse(s, "Rx");
  unsigned long long total_flush_pool = parse(s, "Fp");
  unsigned long long global_eph_count = parse(s, "Ec");
  unsigned long long global_eph_max = parse(s, "Em");
  unsigned long long obj_count = parse(s, "Oc");
  unsigned long long obj_max = parse(s, "Om");
  unsigned long long rtree_node_count = parse(s, "Nc");
  unsigned long long rtree_node_max = parse(s, "Nm");
  unsigned long long pgp_count = parse(s, "Pc");
  unsigned long long pgp_max = parse(s, "Pm");
  printf("total tmem ops=%llu (errors=%llu) -- tmem pages avail=%llu\n", total_ops, errored_ops, avail_pages);
  printf("datastructs: objs=%llu (max=%llu) pgps=%llu (max=%llu) "
         "nodes=%llu (max=%llu)\n",
         obj_count, obj_max, pgp_count, pgp_max, rtree_node_count, rtree_node_max);
  printf("misc: failed_copies=%llu alloc_failed=%llu alloc_page_failed=%llu "
         "low_mem=%llu evicted=%llu/%llu relinq=%llu/%llu, "
         "max_evicts_per_relinq=%llu, flush_pools=%llu, "
         "eph_count=%llu, eph_max=%llu\n",
         failed_copies, alloc_failed, alloc_page_failed, low_on_memory, evicted_pgs, evict_attempts, relinq_pgs, relinq_attempts, max_evicts_per_relinq, total_flush_pool, global_eph_count, global_eph_max);
}
```