user: Converte this assembly snippet into its equivalent C code:

```asm
<graphMain>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x40,%rsp
  movss  %xmm0,-0x34(%rbp)
  movss  %xmm1,-0x38(%rbp)
  movss  %xmm2,-0x3c(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movss  D84(%rip),%xmm0
  movss  %xmm0,-0x18(%rbp)
  movss  D134(%rip),%xmm0
  movss  %xmm0,-0x14(%rbp)
  movss  -0x14(%rbp),%xmm0
  movss  %xmm0,-0x10(%rbp)
  movss  -0x18(%rbp),%xmm0
  movss  %xmm0,-0xc(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x2c(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x28(%rbp)
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x24(%rbp)
  movss  D52(%rip),%xmm0
  movss  %xmm0,-0x20(%rbp)
  movss  D52(%rip),%xmm0
  movss  %xmm0,-0x1c(%rbp)
  movb   $0x0,-0x2d(%rbp)
  jmp    L17
L16:
  lea    -0x2d(%rbp),%rax
  mov    %rax,%rdi
  call   <sysGetChar@plt>
  movzbl -0x2d(%rbp),%eax
  cmp    $0xa,%al
  jne    L75
  mov    $0x0,%eax
  call   <sysClear@plt>
  mov    $0xff,%ecx
  mov    $0xff,%edx
  mov    $0x0,%esi
  lea    D113(%rip),%rax
  mov    %rax,%rdi
  call   <sysPrintString@plt>
  movss  D52(%rip),%xmm0
  movss  %xmm0,-0x24(%rbp)
L75:
  movzbl -0x2d(%rbp),%eax
  cmp    $0x2b,%al
  jne    L107
  movss  -0x1c(%rbp),%xmm0
  movss  D45(%rip),%xmm1
  divss  %xmm1,%xmm0
  movss  %xmm0,-0x1c(%rbp)
  movss  D52(%rip),%xmm0
  movss  %xmm0,-0x20(%rbp)
L107:
  movzbl -0x2d(%rbp),%eax
  cmp    $0x2d,%al
  jne    L88
  movss  -0x1c(%rbp),%xmm1
  movss  D45(%rip),%xmm0
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x1c(%rbp)
  movss  D52(%rip),%xmm0
  movss  %xmm0,-0x20(%rbp)
L88:
  movzbl -0x2d(%rbp),%eax
  cmp    $0xf,%al
  jne    L94
  movss  -0x1c(%rbp),%xmm1
  movss  D81(%rip),%xmm0
  mulss  %xmm1,%xmm0
  movss  -0x28(%rbp),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x28(%rbp)
  movss  D52(%rip),%xmm0
  movss  %xmm0,-0x20(%rbp)
L94:
  movzbl -0x2d(%rbp),%eax
  cmp    $0xe,%al
  jne    L93
  movss  -0x1c(%rbp),%xmm1
  movss  D81(%rip),%xmm0
  mulss  %xmm0,%xmm1
  movss  -0x28(%rbp),%xmm0
  subss  %xmm1,%xmm0
  movss  %xmm0,-0x28(%rbp)
  movss  D52(%rip),%xmm0
  movss  %xmm0,-0x20(%rbp)
L93:
  movzbl -0x2d(%rbp),%eax
  cmp    $0xd,%al
  jne    L95
  movss  -0x1c(%rbp),%xmm1
  movss  D81(%rip),%xmm0
  mulss  %xmm0,%xmm1
  movss  -0x2c(%rbp),%xmm0
  subss  %xmm1,%xmm0
  movss  %xmm0,-0x2c(%rbp)
  movss  D52(%rip),%xmm0
  movss  %xmm0,-0x20(%rbp)
L95:
  movzbl -0x2d(%rbp),%eax
  cmp    $0xc,%al
  jne    L27
  movss  -0x1c(%rbp),%xmm1
  movss  D81(%rip),%xmm0
  mulss  %xmm1,%xmm0
  movss  -0x2c(%rbp),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,-0x2c(%rbp)
  movss  D52(%rip),%xmm0
  movss  %xmm0,-0x20(%rbp)
L27:
  pxor   %xmm0,%xmm0
  ucomiss -0x20(%rbp),%xmm0
  jp     L0
  pxor   %xmm0,%xmm0
  ucomiss -0x20(%rbp),%xmm0
  je     L17
L0:
  pxor   %xmm0,%xmm0
  movss  %xmm0,-0x20(%rbp)
  movss  -0xc(%rbp),%xmm0
  mulss  -0x1c(%rbp),%xmm0
  movaps %xmm0,%xmm3
  addss  -0x28(%rbp),%xmm3
  movss  -0x10(%rbp),%xmm0
  mulss  -0x1c(%rbp),%xmm0
  movaps %xmm0,%xmm2
  addss  -0x28(%rbp),%xmm2
  movss  -0x18(%rbp),%xmm0
  mulss  -0x1c(%rbp),%xmm0
  movaps %xmm0,%xmm1
  addss  -0x2c(%rbp),%xmm1
  movss  -0x14(%rbp),%xmm0
  mulss  -0x1c(%rbp),%xmm0
  addss  -0x2c(%rbp),%xmm0
  movd   %xmm0,%eax
  movss  -0x3c(%rbp),%xmm5
  movss  -0x38(%rbp),%xmm4
  movss  -0x34(%rbp),%xmm0
  movaps %xmm5,%xmm6
  movaps %xmm4,%xmm5
  movaps %xmm0,%xmm4
  movd   %eax,%xmm0
  call   <plotWrapper@plt>
L17:
  pxor   %xmm0,%xmm0
  ucomiss -0x24(%rbp),%xmm0
  jp     L53
  pxor   %xmm0,%xmm0
  ucomiss -0x24(%rbp),%xmm0
  je     L16
L53:
  mov    $0x0,%eax
  mov    -0x8(%rbp),%rdx
  sub    %fs:0x28,%rdx
  je     L31
  call   <__stack_chk_fail@plt>
L31:
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: data_tag: D84
type_guessed: f32
name: disassemble_data
arguments: data_tag: D134
type_guessed: byte[4]
name: disassemble_data
arguments: data_tag: D52
type_guessed: f32
name: disassemble_data
arguments: data_tag: D113
type_guessed: string
name: disassemble_data
arguments: data_tag: D45
type_guessed: f32
name: disassemble_data
arguments: data_tag: D81
type_guessed: byte[4]

tool: D84: 10

tool: {"D134": [0x00,0x00,0x20,0xc1]}

tool: D52: 1

tool: D113: Exited plot Successfully


tool: D45: 1.5

tool: {"D81": [0x00,0x00,0xa0,0x40]}

assistant: ```c
int graphMain(float a, float b, float c) {
  float x_r = 10;
  float x_l = -10;
  float y_d = x_l;
  float y_u = x_r;
  float x_offset = 0, y_offset = 0, ready_to_exit = 0, draw = 1;
  float factor = 1;
  char ch = 0;
  while (!ready_to_exit) {
    sysGetChar(&ch);
    if (ch == '\n') {
      sysClear();
      sysPrintString("Exited plot Successfully\n", 0, 255, 255);
      ready_to_exit = 1;
    }
    if (ch == '+') {
      factor /= 1.5;
      draw = 1;
    }
    if (ch == '-') {
      factor *= 1.5;
      draw = 1;
    }
    if (ch == 15) {
      y_offset += (5 * factor);
      draw = 1;
    }
    if (ch == 14) {
      y_offset -= (5 * factor);
      draw = 1;
    }
    if (ch == 13) {
      x_offset -= (5 * factor);
      draw = 1;
    }
    if (ch == 12) {
      x_offset += (5 * factor);
      draw = 1;
    }
    if (draw) {
      draw = 0;
      plotWrapper((x_l * factor) + x_offset, (x_r * factor) + x_offset, (y_d * factor) + y_offset, (y_u * factor) + y_offset, a, b, c);
    }
  }
  return 0;
}
```