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

```asm
<taylor_iter>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x48,%rsp
  movsd  %xmm0,-0x38(%rbp)
  movsd  %xmm1,-0x40(%rbp)
  movsd  %xmm2,-0x48(%rbp)
  movl   $0x1,-0x24(%rbp)
  movl   $0x8,-0x20(%rbp)
  jmp    L213
L251:
  mov    -0x38(%rbp),%rax
  movq   %rax,%xmm0
  call   <log@plt>
  movq   %xmm0,%rbx
  mov    -0x20(%rbp),%edx
  mov    -0x38(%rbp),%rax
  mov    %edx,%edi
  movq   %rax,%xmm0
  call   <taylor_log@plt>
  movq   %rbx,%xmm3
  subsd  %xmm0,%xmm3
  movq   %xmm3,%rax
  movq   %rax,%xmm0
  call   <my_abs@plt>
  movsd  -0x48(%rbp),%xmm1
  comisd %xmm0,%xmm1
  jb     L8
  movl   $0x0,-0x24(%rbp)
  jmp    L213
L8:
  mov    -0x20(%rbp),%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  mov    %eax,-0x20(%rbp)
L213:
  cmpl   $0x0,-0x24(%rbp)
  jne    L251
  cmpl   $0x1,-0x20(%rbp)
  jne    L316
  movl   $0x1,-0x1c(%rbp)
  jmp    L24
L316:
  mov    -0x20(%rbp),%eax
  mov    %eax,%edx
  mov    $0xcccccccd,%eax
  imul   %rdx,%rax
  shr    $0x20,%rax
  shr    $0x3,%eax
  mov    %eax,-0x1c(%rbp)
L24:
  mov    -0x1c(%rbp),%edx
  mov    -0x20(%rbp),%eax
  add    %edx,%eax
  shr    %eax
  mov    %eax,-0x18(%rbp)
  mov    -0x1c(%rbp),%eax
  add    %eax,-0x20(%rbp)
  movl   $0x1,-0x24(%rbp)
  movl   $0x1,-0x14(%rbp)
  cmpl   $0x1,-0x18(%rbp)
  jne    L179
  movl   $0x0,-0x24(%rbp)
  movl   $0x0,-0x2c(%rbp)
  jmp    L179
L124:
  mov    -0x38(%rbp),%rax
  movq   %rax,%xmm0
  call   <log@plt>
  movq   %xmm0,%rbx
  mov    -0x18(%rbp),%edx
  mov    -0x38(%rbp),%rax
  mov    %edx,%edi
  movq   %rax,%xmm0
  call   <taylor_log@plt>
  movq   %rbx,%xmm4
  subsd  %xmm0,%xmm4
  movq   %xmm4,%rax
  movq   %rax,%xmm0
  call   <my_abs@plt>
  movsd  -0x48(%rbp),%xmm1
  comisd %xmm0,%xmm1
  jb     L268
  movl   $0x1,-0x14(%rbp)
  jmp    L226
L268:
  movl   $0x0,-0x14(%rbp)
L226:
  cmpl   $0x0,-0x14(%rbp)
  je     L352
  mov    -0x38(%rbp),%rax
  movq   %rax,%xmm0
  call   <log@plt>
  movq   %xmm0,%rbx
  mov    -0x18(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x38(%rbp),%rax
  mov    %edx,%edi
  movq   %rax,%xmm0
  call   <taylor_log@plt>
  movq   %rbx,%xmm5
  subsd  %xmm0,%xmm5
  movq   %xmm5,%rax
  movq   %rax,%xmm0
  call   <my_abs@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm3
  comisd -0x48(%rbp),%xmm3
  jbe    L352
  movl   $0x0,-0x24(%rbp)
  mov    -0x18(%rbp),%eax
  mov    %eax,-0x2c(%rbp)
  jmp    L135
L352:
  cmpl   $0x0,-0x14(%rbp)
  je     L81
  mov    -0x18(%rbp),%eax
  mov    %eax,-0x20(%rbp)
  mov    -0x18(%rbp),%eax
  shr    %eax
  mov    %eax,-0x18(%rbp)
  jmp    L193
L81:
  mov    -0x20(%rbp),%edx
  mov    -0x18(%rbp),%eax
  add    %edx,%eax
  shr    %eax
  mov    %eax,-0x18(%rbp)
L193:
  cmpl   $0x0,-0x18(%rbp)
  jne    L179
  movl   $0x0,-0x24(%rbp)
  mov    -0x18(%rbp),%eax
  mov    %eax,-0x2c(%rbp)
L179:
  cmpl   $0x0,-0x24(%rbp)
  jne    L124
L135:
  movl   $0x1,-0x24(%rbp)
  movl   $0x1,-0x20(%rbp)
  jmp    L188
L144:
  mov    -0x40(%rbp),%rax
  movq   %rax,%xmm0
  call   <log@plt>
  movq   %xmm0,%rbx
  mov    -0x20(%rbp),%edx
  mov    -0x40(%rbp),%rax
  mov    %edx,%edi
  movq   %rax,%xmm0
  call   <taylor_log@plt>
  movq   %rbx,%xmm6
  subsd  %xmm0,%xmm6
  movq   %xmm6,%rax
  movq   %rax,%xmm0
  call   <my_abs@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm4
  comisd -0x48(%rbp),%xmm4
  jbe    L286
  movl   $0x0,-0x24(%rbp)
  jmp    L188
L286:
  mov    -0x20(%rbp),%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  add    %eax,%eax
  mov    %eax,-0x20(%rbp)
L188:
  cmpl   $0x0,-0x24(%rbp)
  jne    L144
  cmpl   $0x1,-0x20(%rbp)
  jne    L7
  movl   $0x1,-0x1c(%rbp)
  jmp    L338
L7:
  mov    -0x20(%rbp),%eax
  mov    %eax,%edx
  mov    $0xcccccccd,%eax
  imul   %rdx,%rax
  shr    $0x20,%rax
  shr    $0x3,%eax
  mov    %eax,-0x1c(%rbp)
L338:
  movl   $0x1,-0x24(%rbp)
  mov    -0x1c(%rbp),%edx
  mov    -0x20(%rbp),%eax
  add    %edx,%eax
  shr    %eax
  mov    %eax,-0x18(%rbp)
  mov    -0x1c(%rbp),%eax
  add    %eax,-0x20(%rbp)
  cmpl   $0x1,-0x18(%rbp)
  jne    L13
  movl   $0x0,-0x24(%rbp)
  movl   $0x0,-0x28(%rbp)
  jmp    L13
L143:
  mov    -0x40(%rbp),%rax
  movq   %rax,%xmm0
  call   <log@plt>
  movq   %xmm0,%rbx
  mov    -0x18(%rbp),%edx
  mov    -0x40(%rbp),%rax
  mov    %edx,%edi
  movq   %rax,%xmm0
  call   <taylor_log@plt>
  movq   %rbx,%xmm7
  subsd  %xmm0,%xmm7
  movq   %xmm7,%rax
  movq   %rax,%xmm0
  call   <my_abs@plt>
  movsd  -0x48(%rbp),%xmm1
  comisd %xmm0,%xmm1
  jb     L258
  movl   $0x1,-0x14(%rbp)
  jmp    L206
L258:
  movl   $0x0,-0x14(%rbp)
L206:
  cmpl   $0x0,-0x14(%rbp)
  je     L37
  mov    -0x40(%rbp),%rax
  movq   %rax,%xmm0
  call   <log@plt>
  movq   %xmm0,%rbx
  mov    -0x18(%rbp),%eax
  lea    -0x1(%rax),%edx
  mov    -0x40(%rbp),%rax
  mov    %edx,%edi
  movq   %rax,%xmm0
  call   <taylor_log@plt>
  movq   %rbx,%xmm2
  subsd  %xmm0,%xmm2
  movq   %xmm2,%rax
  movq   %rax,%xmm0
  call   <my_abs@plt>
  movq   %xmm0,%rax
  movq   %rax,%xmm5
  comisd -0x48(%rbp),%xmm5
  jbe    L37
  movl   $0x0,-0x24(%rbp)
  mov    -0x18(%rbp),%eax
  mov    %eax,-0x28(%rbp)
  jmp    L374
L37:
  cmpl   $0x0,-0x14(%rbp)
  je     L378
  mov    -0x18(%rbp),%eax
  mov    %eax,-0x20(%rbp)
  mov    -0x18(%rbp),%eax
  shr    %eax
  mov    %eax,-0x18(%rbp)
  jmp    L283
L378:
  mov    -0x20(%rbp),%edx
  mov    -0x18(%rbp),%eax
  add    %edx,%eax
  shr    %eax
  mov    %eax,-0x18(%rbp)
L283:
  cmpl   $0x0,-0x18(%rbp)
  jne    L13
  movl   $0x0,-0x24(%rbp)
  mov    -0x18(%rbp),%eax
  mov    %eax,-0x28(%rbp)
L13:
  cmpl   $0x0,-0x24(%rbp)
  jne    L143
L374:
  mov    -0x2c(%rbp),%eax
  cmp    -0x28(%rbp),%eax
  jae    L274
  mov    -0x28(%rbp),%eax
  mov    %eax,-0x18(%rbp)
  jmp    L295
L274:
  mov    -0x2c(%rbp),%eax
  mov    %eax,-0x18(%rbp)
L295:
  mov    -0x18(%rbp),%eax
  test   %rax,%rax
  js     L350
  pxor   %xmm6,%xmm6
  cvtsi2sd %rax,%xmm6
  movq   %xmm6,%rax
  jmp    L97
L350:
  mov    %rax,%rdx
  shr    %rdx
  and    $0x1,%eax
  or     %rax,%rdx
  pxor   %xmm0,%xmm0
  cvtsi2sd %rdx,%xmm0
  addsd  %xmm0,%xmm0
  movq   %xmm0,%rax
L97:
  movq   %rax,%xmm0
  lea    D17(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  mov    -0x18(%rbp),%edx
  mov    -0x38(%rbp),%rax
  mov    %edx,%edi
  movq   %rax,%xmm0
  call   <taylor_log@plt>
  movq   %xmm0,%rdx
  mov    -0x38(%rbp),%rax
  movq   %rdx,%xmm1
  movq   %rax,%xmm0
  lea    D15(%rip),%rax
  mov    %rax,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  mov    -0x18(%rbp),%edx
  mov    -0x40(%rbp),%rax
  mov    %edx,%edi
  movq   %rax,%xmm0
  call   <taylor_log@plt>
  movq   %xmm0,%rdx
  mov    -0x40(%rbp),%rax
  movq   %rdx,%xmm1
  movq   %rax,%xmm0
  lea    D15(%rip),%rax
  mov    %rax,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  nop
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: data_tag: D17
type_infered: string
name: retrieve_data
arguments: data_tag: D15
type_infered: string

tool: D17: taylor polynomial iterations = %d


tool: D15: taylor_log(%g) = %.12g


assistant: ```c
void taylor_iter(double min, double max, double eps) {
  unsigned int hodnota_min;
  unsigned int hodnota_max;
  int pravda = 1;
  unsigned int max_interval = 8;
  unsigned int min_interval;
  unsigned int stred;
  while (pravda) {
    if (my_abs(log(min) - taylor_log(min, max_interval)) <= eps)
      pravda = 0;
    else
      max_interval *= 10;
  }
  if (max_interval == 1)
    min_interval = 1;
  else
    min_interval = max_interval / 10;
  stred = (min_interval + max_interval) / 2;
  max_interval = max_interval + min_interval;
  pravda = 1;
  int pom_pravda = 1;
  if (stred - 1 == 0) {
    pravda = 0;
    hodnota_min = 0;
  }
  while (pravda) {
    if (my_abs(log(min) - taylor_log(min, stred)) <= eps)
      pom_pravda = 1;
    else
      pom_pravda = 0;
    if (pom_pravda && (my_abs(log(min) - taylor_log(min, stred - 1)) > eps)) {
      pravda = 0;
      hodnota_min = stred;
      break;
    }
    if (pom_pravda) {
      max_interval = stred;
      stred = stred / 2;
    } else {
      stred = (max_interval + stred) / 2;
    }
    if (stred == 0) {
      pravda = 0;
      hodnota_min = stred;
    }
  }
  pravda = 1;
  max_interval = 1;
  while (pravda) {
    if (my_abs(log(max) - taylor_log(max, max_interval)) > eps)
      pravda = 0;
    else
      max_interval *= 10;
  }
  if (max_interval == 1)
    min_interval = 1;
  else
    min_interval = max_interval / 10;
  pravda = 1;
  stred = (min_interval + max_interval) / 2;
  max_interval = max_interval + min_interval;
  if (stred - 1 == 0) {
    pravda = 0;
    hodnota_max = 0;
  }
  while (pravda) {
    if (my_abs(log(max) - taylor_log(max, stred)) <= eps)
      pom_pravda = 1;
    else
      pom_pravda = 0;
    if (pom_pravda && (my_abs(log(max) - taylor_log(max, stred - 1)) > eps)) {
      pravda = 0;
      hodnota_max = stred;
      break;
    }
    if (pom_pravda) {
      max_interval = stred;
      stred = stred / 2;
    } else {
      stred = (max_interval + stred) / 2;
    }
    if (stred == 0) {
      pravda = 0;
      hodnota_max = stred;
    }
  }
  if (hodnota_min < hodnota_max)
    stred = hodnota_max;
  else
    stred = hodnota_min;
  printf("taylor polynomial iterations = %d\n", stred);
  printf("taylor_log(%g) = %.12g\n", min, taylor_log(min, stred));
  printf("taylor_log(%g) = %.12g\n", max, taylor_log(max, stred));
  return;
}
```