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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x360,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
L79:
  lea    -0x35c(%rbp),%rdx
  lea    -0x360(%rbp),%rax
  mov    %rax,%rsi
  lea    D50(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    -0x360(%rbp),%eax
  test   %eax,%eax
  jne    L40
  mov    -0x35c(%rbp),%eax
  test   %eax,%eax
  jne    L40
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L232
  jmp    L98
L40:
  lea    -0x340(%rbp),%rdx
  mov    $0x0,%eax
  mov    $0x32,%ecx
  mov    %rdx,%rdi
  rep stos %rax,%es:(%rdi)
  mov    %rdi,%rdx
  mov    %eax,(%rdx)
  add    $0x4,%rdx
  lea    -0x1a0(%rbp),%rdx
  mov    $0x0,%eax
  mov    $0x32,%ecx
  mov    %rdx,%rdi
  rep stos %rax,%es:(%rdi)
  mov    %rdi,%rdx
  mov    %eax,(%rdx)
  add    $0x4,%rdx
  movl   $0x0,-0x350(%rbp)
  movl   $0x0,-0x34c(%rbp)
  movq   $0x0,-0x348(%rbp)
  movl   $0x0,-0x354(%rbp)
  jmp    L62
L189:
  lea    -0x358(%rbp),%rax
  mov    %rax,%rsi
  lea    D56(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    -0x358(%rbp),%eax
  add    %eax,-0x350(%rbp)
  mov    -0x358(%rbp),%eax
  cltq
  movl   $0x1,-0x340(%rbp,%rax,4)
  addl   $0x1,-0x354(%rbp)
L62:
  mov    -0x360(%rbp),%eax
  cmp    %eax,-0x354(%rbp)
  jl     L189
  movl   $0x0,-0x354(%rbp)
  jmp    L90
L28:
  lea    -0x358(%rbp),%rax
  mov    %rax,%rsi
  lea    D56(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    -0x358(%rbp),%eax
  add    %eax,-0x34c(%rbp)
  mov    -0x358(%rbp),%eax
  cltq
  movl   $0x1,-0x1a0(%rbp,%rax,4)
  addl   $0x1,-0x354(%rbp)
L90:
  mov    -0x35c(%rbp),%eax
  cmp    %eax,-0x354(%rbp)
  jl     L28
  mov    -0x350(%rbp),%edx
  mov    -0x34c(%rbp),%eax
  add    %edx,%eax
  cltd
  shr    $0x1f,%edx
  add    %edx,%eax
  and    $0x1,%eax
  sub    %edx,%eax
  cmp    $0x1,%eax
  jne    L91
  lea    D14(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L79
L91:
  mov    -0x360(%rbp),%edx
  mov    -0x35c(%rbp),%eax
  cmp    %eax,%edx
  jge    L39
  movl   $0x1,-0x354(%rbp)
  jmp    L182
L168:
  mov    -0x354(%rbp),%eax
  cltq
  mov    -0x340(%rbp,%rax,4),%eax
  cmp    $0x1,%eax
  jne    L2
  mov    -0x34c(%rbp),%eax
  sub    -0x350(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  mov    %eax,%edx
  mov    -0x354(%rbp),%eax
  add    %edx,%eax
  cltq
  mov    -0x1a0(%rbp,%rax,4),%eax
  cmp    $0x1,%eax
  jne    L2
  mov    -0x354(%rbp),%eax
  mov    %eax,-0x348(%rbp)
  mov    -0x34c(%rbp),%eax
  sub    -0x350(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  mov    %eax,%edx
  mov    -0x354(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x344(%rbp)
  jmp    L97
L2:
  addl   $0x1,-0x354(%rbp)
L182:
  cmpl   $0x64,-0x354(%rbp)
  jle    L168
  jmp    L97
L39:
  movl   $0x1,-0x354(%rbp)
  jmp    L88
L158:
  mov    -0x354(%rbp),%eax
  cltq
  mov    -0x1a0(%rbp,%rax,4),%eax
  cmp    $0x1,%eax
  jne    L35
  mov    -0x350(%rbp),%eax
  sub    -0x34c(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  mov    %eax,%edx
  mov    -0x354(%rbp),%eax
  add    %edx,%eax
  cltq
  mov    -0x340(%rbp,%rax,4),%eax
  cmp    $0x1,%eax
  jne    L35
  mov    -0x350(%rbp),%eax
  sub    -0x34c(%rbp),%eax
  mov    %eax,%edx
  shr    $0x1f,%edx
  add    %edx,%eax
  sar    %eax
  mov    %eax,%edx
  mov    -0x354(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x348(%rbp)
  mov    -0x354(%rbp),%eax
  mov    %eax,-0x344(%rbp)
  jmp    L97
L35:
  addl   $0x1,-0x354(%rbp)
L88:
  cmpl   $0x64,-0x354(%rbp)
  jle    L158
L97:
  mov    -0x348(%rbp),%eax
  test   %eax,%eax
  jne    L199
  lea    D14(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L79
L199:
  mov    -0x344(%rbp),%edx
  mov    -0x348(%rbp),%eax
  mov    %eax,%esi
  lea    D48(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L79
L98:
  call   <__stack_chk_fail@plt>
L232:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D50
type: string
name: disassemble_data
arguments: tag: D56
type: string
name: disassemble_data
arguments: tag: D14
type: string
name: disassemble_data
arguments: tag: D48
type: string

tool: D50: %d %d

tool: D56: %d

tool: D14: -1

tool: D48: %d %d


assistant: ```c
int main(void) {
  int nt, nh, i, temp;
  while (1) {
    scanf("%d %d", &nt, &nh);
    if (nt == 0 && nh == 0)
      break;
    int ct[101] = {0}, ch[101] = {0}, st = 0, sh = 0, flag[2] = {0};
    for (i = 0; i < nt; i++) {
      scanf("%d", &temp);
      st += temp;
      ct[temp] = 1;
    }
    for (i = 0; i < nh; i++) {
      scanf("%d", &temp);
      sh += temp;
      ch[temp] = 1;
    }
    if ((st + sh) % 2 == 1) {
      printf("-1\n");
      continue;
    }
    if (nt < nh) {
      for (i = 1; i <= 100; i++) {
        if (ct[i] == 1 && ch[(sh - st) / 2 + i] == 1) {
          flag[0] = i, flag[1] = (sh - st) / 2 + i;
          break;
        }
      }
    } else {
      for (i = 1; i <= 100; i++) {
        if (ch[i] == 1 && ct[(st - sh) / 2 + i] == 1) {
          flag[0] = (st - sh) / 2 + i, flag[1] = i;
          break;
        }
      }
    }
    if (flag[0] == 0) {
      printf("-1\n");
    } else {
      printf("%d %d\n", flag[0], flag[1]);
    }
  }
  return 0;
}
```