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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  jmp    L228
L194:
  mov    -0x18(%rbp),%eax
  test   %eax,%eax
  jne    L239
  mov    -0x14(%rbp),%eax
  test   %eax,%eax
  jne    L239
  mov    -0x10(%rbp),%eax
  test   %eax,%eax
  je     L192
L239:
  mov    -0x18(%rbp),%edx
  mov    -0x14(%rbp),%eax
  cmp    %eax,%edx
  jg     L249
  mov    -0x18(%rbp),%eax
  mov    %eax,-0xc(%rbp)
  mov    -0x14(%rbp),%eax
  mov    %eax,-0x18(%rbp)
  mov    -0xc(%rbp),%eax
  mov    %eax,-0x14(%rbp)
  jmp    L27
L249:
  mov    -0x18(%rbp),%edx
  mov    -0x10(%rbp),%eax
  cmp    %eax,%edx
  jg     L141
  mov    -0x10(%rbp),%eax
  mov    %eax,-0xc(%rbp)
  mov    -0x10(%rbp),%eax
  mov    %eax,-0x18(%rbp)
  mov    -0xc(%rbp),%eax
  mov    %eax,-0x10(%rbp)
  jmp    L27
L141:
  mov    -0x14(%rbp),%edx
  mov    -0x10(%rbp),%eax
  cmp    %eax,%edx
  jg     L27
  mov    -0x14(%rbp),%eax
  mov    %eax,-0xc(%rbp)
  mov    -0x10(%rbp),%eax
  mov    %eax,-0x14(%rbp)
  mov    -0xc(%rbp),%eax
  mov    %eax,-0x10(%rbp)
L27:
  mov    -0x18(%rbp),%edx
  mov    -0x14(%rbp),%eax
  add    %eax,%edx
  mov    -0x10(%rbp),%eax
  cmp    %eax,%edx
  jle    L7
  mov    -0x18(%rbp),%edx
  mov    -0x10(%rbp),%eax
  add    %eax,%edx
  mov    -0x14(%rbp),%eax
  cmp    %eax,%edx
  jle    L7
  mov    -0x14(%rbp),%edx
  mov    -0x10(%rbp),%eax
  add    %eax,%edx
  mov    -0x18(%rbp),%eax
  cmp    %eax,%edx
  jg     L171
L7:
  lea    D52(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L228
L171:
  mov    -0x18(%rbp),%edx
  mov    -0x18(%rbp),%eax
  mov    %edx,%ecx
  imul   %eax,%ecx
  mov    -0x14(%rbp),%edx
  mov    -0x14(%rbp),%eax
  imul   %edx,%eax
  add    %eax,%ecx
  mov    -0x10(%rbp),%edx
  mov    -0x10(%rbp),%eax
  imul   %edx,%eax
  cmp    %eax,%ecx
  je     L46
  mov    -0x14(%rbp),%edx
  mov    -0x14(%rbp),%eax
  mov    %edx,%ecx
  imul   %eax,%ecx
  mov    -0x10(%rbp),%edx
  mov    -0x10(%rbp),%eax
  imul   %edx,%eax
  add    %eax,%ecx
  mov    -0x18(%rbp),%edx
  mov    -0x18(%rbp),%eax
  imul   %edx,%eax
  cmp    %eax,%ecx
  je     L46
  mov    -0x18(%rbp),%edx
  mov    -0x18(%rbp),%eax
  mov    %edx,%ecx
  imul   %eax,%ecx
  mov    -0x10(%rbp),%edx
  mov    -0x10(%rbp),%eax
  imul   %edx,%eax
  add    %eax,%ecx
  mov    -0x14(%rbp),%edx
  mov    -0x14(%rbp),%eax
  imul   %edx,%eax
  cmp    %eax,%ecx
  jne    L213
L46:
  lea    D3(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L228
L213:
  mov    -0x18(%rbp),%edx
  mov    -0x14(%rbp),%eax
  cmp    %eax,%edx
  jne    L254
  mov    -0x14(%rbp),%edx
  mov    -0x10(%rbp),%eax
  cmp    %eax,%edx
  jne    L254
  mov    -0x10(%rbp),%edx
  mov    -0x18(%rbp),%eax
  cmp    %eax,%edx
  jne    L254
  lea    D44(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L228
L254:
  mov    -0x18(%rbp),%edx
  mov    -0x14(%rbp),%eax
  cmp    %eax,%edx
  je     L172
  mov    -0x14(%rbp),%edx
  mov    -0x10(%rbp),%eax
  cmp    %eax,%edx
  je     L172
  mov    -0x10(%rbp),%edx
  mov    -0x18(%rbp),%eax
  cmp    %eax,%edx
  jne    L146
L172:
  lea    D41(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L228
L146:
  lea    D4(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
L228:
  lea    -0x10(%rbp),%rcx
  lea    -0x14(%rbp),%rdx
  lea    -0x18(%rbp),%rax
  mov    %rax,%rsi
  lea    D50(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  test   %rax,%rax
  jne    L194
L192:
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L100
  call   <__stack_chk_fail@plt>
L100:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_label: D52
type: string
name: disassemble_data
arguments: data_label: D3
type: string
name: disassemble_data
arguments: data_label: D44
type: string
name: disassemble_data
arguments: data_label: D41
type: string
name: disassemble_data
arguments: data_label: D4
type: string
name: disassemble_data
arguments: data_label: D50
type: string

tool: D52: not a triangle


tool: D3: a right triangle


tool: D44: a equileteral triangle


tool: D41: a isosceles triangle


tool: D4: a triangle


tool: D50: %d%d%d

assistant: ```c
int main() {
  int a, b, c, x, y;
  while (scanf("%d%d%d", &a, &b, &c)) {
    if (a == 0 && b == 0 && c == 0)
      break;
    else {
      if (a <= b)
        x = a, a = b, b = x;
      else if (a <= c)
        x = c, a = c, c = x;
      else if (b <= c)
        x = b, b = c, c = x;
      if (a + b <= c || a + c <= b || b + c <= a)
        printf("not a triangle\n");
      else if (a * a + b * b == c * c || b * b + c * c == a * a || a * a + c * c == b * b)
        printf("a right triangle\n");
      else if (a == b && b == c && c == a)
        printf("a equileteral triangle\n");
      else if (a == b || b == c || c == a)
        printf("a isosceles triangle\n");
      else
        printf("a triangle\n");
    }
  }
  return 0;
}
```