user: 请将以下的汇编代码转换成C语言代码：

```asm
<main>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x118,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x108(%rsp)
  xor    %eax,%eax
  lea    0xf0(%rsp),%rbx
  mov    %rbx,%rsi
  lea    D28(%rip),%rdi
  call   <scanf@plt>
  lea    0x1c(%rsp),%rsi
  lea    D26(%rip),%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    %rbx,%rdi
  call   <strlen@plt>
  lea    -0x1(%rax),%edx
  test   %edx,%edx
  jle    L355
  movslq %edx,%rdx
L430:
  movzbl 0xf0(%rsp,%rdx,1),%ecx
  mov    %cl,0xf0(%rsp,%rdx,2)
  sub    $0x1,%rdx
  test   %edx,%edx
  jg     L430
  lea    -0x1(%rax),%ecx
  mov    $0x1,%r13d
  mov    $0x0,%edx
L191:
  add    %r13d,%r13d
  add    $0x1,%edx
  cmp    %ecx,%edx
  jne    L191
L263:
  lea    (%rax,%rax,1),%ebx
  lea    -0x1(%rbx),%r15d
  cmp    $0x3,%ebx
  jle    L205
  lea    0xf1(%rsp),%rax
  lea    -0x4(%rbx),%edx
  shr    %edx
  mov    %edx,%edx
  lea    0xf3(%rsp,%rdx,2),%rdx
L446:
  movb   $0x2b,(%rax)
  add    $0x2,%rax
  cmp    %rdx,%rax
  jne    L446
L205:
  test   %r15d,%r15d
  jle    L71
  lea    0xf0(%rsp),%rax
  lea    -0x2(%rbx),%edx
  shr    %edx
  mov    %edx,%edx
  lea    0xf2(%rsp,%rdx,2),%rdx
L347:
  subb   $0x30,(%rax)
  add    $0x2,%rax
  cmp    %rdx,%rax
  jne    L347
L71:
  cmp    $0x1,%r13d
  jle    L405
  lea    -0x3(%rbx),%eax
  shr    %eax
  mov    %eax,%eax
  lea    0xf4(%rsp,%rax,2),%rbp
  movl   $0x0,0xc(%rsp)
  mov    $0x1,%r12d
  lea    -0x3(%rbx),%r14d
  movslq %r14d,%r14
  lea    -0x5(%rbx),%eax
  cltq
  mov    %rax,(%rsp)
  jmp    L148
L355:
  mov    $0x1,%r13d
  jmp    L263
L459:
  movsbl (%rax),%ecx
  sub    %ecx,%edx
L108:
  add    $0x2,%rax
  cmp    %rbp,%rax
  je     L325
L330:
  cmpb   $0x2b,-0x1(%rax)
  jne    L459
  movsbl (%rax),%ecx
  add    %ecx,%edx
  jmp    L108
L325:
  cmp    %edx,0x1c(%rsp)
  je     L287
L279:
  cmpb   $0x2b,0xf0(%rsp,%r14,1)
  sete   %al
  lea    0x2b(%rax,%rax,1),%eax
  mov    %al,0xf0(%rsp,%r14,1)
  mov    %r12d,%eax
  test   $0x1,%r12b
  jne    L429
  mov    (%rsp),%rsi
  cmpb   $0x2b,0xf0(%rsp,%rsi,1)
  je     L13
  mov    (%rsp),%rsi
  movb   $0x2b,0xf0(%rsp,%rsi,1)
L429:
  test   $0x3,%al
  jne    L470
  lea    -0x7(%rbx),%edx
  movslq %edx,%rcx
  cmpb   $0x2b,0xf0(%rsp,%rcx,1)
  je     L196
  movslq %edx,%rdx
  movb   $0x2b,0xf0(%rsp,%rdx,1)
L470:
  test   $0x7,%al
  jne    L208
  lea    -0x9(%rbx),%edx
  movslq %edx,%rcx
  cmpb   $0x2b,0xf0(%rsp,%rcx,1)
  je     L266
  movslq %edx,%rdx
  movb   $0x2b,0xf0(%rsp,%rdx,1)
L208:
  test   $0xf,%al
  jne    L283
  lea    -0xb(%rbx),%edx
  movslq %edx,%rcx
  cmpb   $0x2b,0xf0(%rsp,%rcx,1)
  je     L406
  movslq %edx,%rdx
  movb   $0x2b,0xf0(%rsp,%rdx,1)
L283:
  test   $0x1f,%al
  jne    L369
  lea    -0xd(%rbx),%edx
  movslq %edx,%rcx
  cmpb   $0x2b,0xf0(%rsp,%rcx,1)
  je     L380
  movslq %edx,%rdx
  movb   $0x2b,0xf0(%rsp,%rdx,1)
L369:
  test   $0x3f,%al
  jne    L84
  lea    -0xf(%rbx),%edx
  movslq %edx,%rcx
  cmpb   $0x2b,0xf0(%rsp,%rcx,1)
  je     L231
  movslq %edx,%rdx
  movb   $0x2b,0xf0(%rsp,%rdx,1)
L84:
  test   $0x7f,%al
  jne    L488
  lea    -0x11(%rbx),%edx
  movslq %edx,%rcx
  cmpb   $0x2b,0xf0(%rsp,%rcx,1)
  je     L351
  movslq %edx,%rdx
  movb   $0x2b,0xf0(%rsp,%rdx,1)
L488:
  test   %al,%al
  jne    L95
  lea    -0x13(%rbx),%eax
  movslq %eax,%rdx
  cmpb   $0x2b,0xf0(%rsp,%rdx,1)
  je     L271
  cltq
  movb   $0x2b,0xf0(%rsp,%rax,1)
L95:
  add    $0x1,%r12d
  cmp    %r13d,%r12d
  je     L321
L148:
  movsbl 0xf0(%rsp),%edx
  cmp    $0x1,%r15d
  jle    L325
  lea    0xf2(%rsp),%rax
  jmp    L330
L287:
  lea    0xf0(%rsp),%rsi
  movslq 0xc(%rsp),%rax
  lea    (%rax,%rax,4),%rax
  lea    0x20(%rsp,%rax,4),%rdi
  call   <strcpy@plt>
  addl   $0x1,0xc(%rsp)
  jmp    L279
L13:
  movb   $0x2d,0xf0(%rsp,%rsi,1)
  jmp    L429
L196:
  movb   $0x2d,0xf0(%rsp,%rcx,1)
  jmp    L470
L266:
  movb   $0x2d,0xf0(%rsp,%rcx,1)
  jmp    L208
L406:
  movb   $0x2d,0xf0(%rsp,%rcx,1)
  jmp    L283
L380:
  movb   $0x2d,0xf0(%rsp,%rcx,1)
  jmp    L369
L231:
  movb   $0x2d,0xf0(%rsp,%rcx,1)
  jmp    L84
L351:
  movb   $0x2d,0xf0(%rsp,%rcx,1)
  jmp    L488
L271:
  movb   $0x2d,0xf0(%rsp,%rdx,1)
  jmp    L95
L321:
  cmpl   $0x0,0xc(%rsp)
  je     L405
  mov    0xc(%rsp),%esi
  mov    %esi,%eax
  sub    $0x1,%eax
  js     L416
  cltq
  lea    (%rax,%rax,4),%rax
  shl    $0x2,%rax
  lea    0x20(%rsp,%rax,1),%r13
  lea    0xc(%rsp,%rax,1),%rdx
  lea    -0x1(%rsi),%eax
  lea    (%rax,%rax,4),%rax
  shl    $0x2,%rax
  sub    %rax,%rdx
  mov    %rdx,(%rsp)
  sub    $0x1,%ebx
  lea    D26(%rip),%r14
  jmp    L182
L405:
  lea    D37(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L416:
  mov    0x108(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L236
  mov    $0x0,%eax
  add    $0x118,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L18:
  movsbl (%r12),%esi
  mov    %r14,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L134:
  add    $0x1,%ebp
  add    $0x1,%r12
  cmp    %ebp,%ebx
  je     L485
L212:
  test   $0x1,%bpl
  je     L18
  movsbl (%r12),%edi
  call   <putchar@plt>
  jmp    L134
L485:
  mov    0x1c(%rsp),%esi
  lea    D1(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  sub    $0x14,%r13
  cmp    (%rsp),%r13
  je     L416
L182:
  mov    %r13,%r12
  mov    $0x0,%ebp
  test   %r15d,%r15d
  jg     L212
  jmp    L485
L236:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: label: D28
type_guessed: string
name: unpack_data
arguments: label: D26
type_guessed: string
name: unpack_data
arguments: label: D37
type_guessed: string
name: unpack_data
arguments: label: D1
type_guessed: string

tool: D28: %s

tool: D26: %d

tool: D37: -1

tool: D1: =%d


assistant: ```c
int main() {
  char s[20], s1[10][20];
  int i, sum, a, n, j, st = 1, k;
  scanf("%s", s);
  scanf("%d", &a);
  n = strlen(s);
  for (i = n - 1; i > 0; i--)
    s[i + i] = s[i];
  for (i = 0; i < n - 1; i++)
    st = st * 2;
  n = n + n - 1;
  for (i = 1; i < n - 1; i = i + 2)
    s[i] = '+';
  for (i = 0; i < n; i = i + 2)
    s[i] = s[i] - '0';
  for (i = 1, k = 0; i < st; i++) {
    sum = s[0];
    for (j = 1; j < n; j = j + 2)
      if (s[j] == '+')
        sum = sum + s[j + 1];
      else
        sum = sum - s[j + 1];
    if (sum == a) {
      strcpy(s1[k], s);
      k++;
    }
    if (s[n - 2] == '+')
      s[n - 2] = '-';
    else
      s[n - 2] = '+';
    if (i % 2 == 0) {
      if (s[n - 4] == '+')
        s[n - 4] = '-';
      else
        s[n - 4] = '+';
    }
    if (i % 4 == 0) {
      if (s[n - 6] == '+')
        s[n - 6] = '-';
      else
        s[n - 6] = '+';
    }
    if (i % 8 == 0) {
      if (s[n - 8] == '+')
        s[n - 8] = '-';
      else
        s[n - 8] = '+';
    }
    if (i % 16 == 0) {
      if (s[n - 10] == '+')
        s[n - 10] = '-';
      else
        s[n - 10] = '+';
    }
    if (i % 32 == 0) {
      if (s[n - 12] == '+')
        s[n - 12] = '-';
      else
        s[n - 12] = '+';
    }
    if (i % 64 == 0) {
      if (s[n - 14] == '+')
        s[n - 14] = '-';
      else
        s[n - 14] = '+';
    }
    if (i % 128 == 0) {
      if (s[n - 16] == '+')
        s[n - 16] = '-';
      else
        s[n - 16] = '+';
    }
    if (i % 256 == 0) {
      if (s[n - 18] == '+')
        s[n - 18] = '-';
      else
        s[n - 18] = '+';
    }
  }
  if (k == 0)
    printf("-1");
  for (i = k - 1; i >= 0; i--) {
    for (j = 0; j < n; j++)
      if (j % 2 != 0)
        printf("%c", s1[i][j]);
      else
        printf("%d", s1[i][j]);
    printf("=%d\n", a);
  }
  return 0;
}
```