user: Demonstrate the C code that generates the assembly output below:

```asm
<driveCalcMecPolarDegrees>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x28,%rsp
  mov    %edi,%r15d
  movss  %xmm0,0x4(%rsp)
  movss  %xmm1,(%rsp)
  cmp    $0x168,%edi
  ja     L32
  mov    %rsi,%r14
  mov    %rdx,%r13
  mov    %rcx,%r12
  mov    %r8,%rbp
  mov    %r9,%rbx
  call   <abs@plt>
  comiss D7(%rip),%xmm0
  jbe    L25
L32:
  movss  (%rsp),%xmm1
  movss  0x4(%rsp),%xmm0
  mov    %r15d,%esi
  lea    D22(%rip),%rdi
  call   <writeDebugStream@plt>
L17:
  add    $0x28,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L25:
  movss  (%rsp),%xmm0
  call   <abs@plt>
  comiss D7(%rip),%xmm0
  ja     L32
  pxor   %xmm0,%xmm0
  cvtsi2ss %r15d,%xmm0
  pxor   %xmm4,%xmm4
  cvtss2sd %xmm0,%xmm4
  movsd  D43(%rip),%xmm0
  movsd  %xmm4,0x8(%rsp)
  subsd  %xmm4,%xmm0
  call   <cosDegrees@plt>
  movss  %xmm0,0x10(%rsp)
  movsd  D43(%rip),%xmm6
  addsd  0x8(%rsp),%xmm6
  movapd %xmm6,%xmm0
  call   <cosDegrees@plt>
  movss  %xmm0,0x8(%rsp)
  movss  0x4(%rsp),%xmm2
  movss  0x10(%rsp),%xmm5
  mulss  %xmm5,%xmm2
  movss  %xmm2,0x14(%rsp)
  movaps %xmm5,%xmm0
  call   <abs@plt>
  mulss  (%rsp),%xmm0
  movaps %xmm0,%xmm1
  addss  0x14(%rsp),%xmm1
  movss  %xmm1,0x18(%rsp)
  movss  0x4(%rsp),%xmm3
  movss  0x8(%rsp),%xmm6
  mulss  %xmm6,%xmm3
  movss  %xmm3,0x4(%rsp)
  movaps %xmm6,%xmm0
  call   <abs@plt>
  mulss  (%rsp),%xmm0
  movaps %xmm0,%xmm8
  addss  0x4(%rsp),%xmm8
  movss  %xmm8,0x1c(%rsp)
  movss  0x8(%rsp),%xmm0
  call   <abs@plt>
  mulss  (%rsp),%xmm0
  movss  0x4(%rsp),%xmm3
  subss  %xmm0,%xmm3
  movss  %xmm3,0x4(%rsp)
  movss  0x10(%rsp),%xmm0
  call   <abs@plt>
  mulss  (%rsp),%xmm0
  movss  0x14(%rsp),%xmm4
  subss  %xmm0,%xmm4
  movss  %xmm4,(%rsp)
  movss  0x18(%rsp),%xmm0
  call   <sgn@plt>
  movss  %xmm0,0x14(%rsp)
  movss  0x10(%rsp),%xmm1
  movss  0x18(%rsp),%xmm0
  call   <helpFindMinAbsFloat@plt>
  movaps %xmm0,%xmm2
  mulss  0x14(%rsp),%xmm2
  movss  %xmm2,0x18(%rsp)
  movss  0x1c(%rsp),%xmm0
  call   <sgn@plt>
  movss  %xmm0,0x14(%rsp)
  movss  0x8(%rsp),%xmm1
  movss  0x1c(%rsp),%xmm0
  call   <helpFindMinAbsFloat@plt>
  movaps %xmm0,%xmm7
  mulss  0x14(%rsp),%xmm7
  movss  %xmm7,0x1c(%rsp)
  movss  0x4(%rsp),%xmm0
  call   <sgn@plt>
  movss  %xmm0,0x14(%rsp)
  movss  0x8(%rsp),%xmm1
  movss  0x4(%rsp),%xmm0
  call   <helpFindMinAbsFloat@plt>
  movaps %xmm0,%xmm3
  mulss  0x14(%rsp),%xmm3
  movss  %xmm3,0x14(%rsp)
  movss  (%rsp),%xmm0
  call   <sgn@plt>
  movss  %xmm0,0x4(%rsp)
  movss  0x10(%rsp),%xmm1
  movss  (%rsp),%xmm0
  call   <helpFindMinAbsFloat@plt>
  movaps %xmm0,%xmm5
  mulss  0x4(%rsp),%xmm5
  movss  %xmm5,0x4(%rsp)
  movss  0x8(%rsp),%xmm1
  movss  0x10(%rsp),%xmm0
  call   <helpFindMaxAbsFloat@plt>
  movaps %xmm0,%xmm1
  pxor   %xmm0,%xmm0
  cvtsi2ss %r14,%xmm0
  divss  %xmm1,%xmm0
  cvttss2si %xmm0,%rax
  pxor   %xmm7,%xmm7
  cvtsi2ss %rax,%xmm7
  movss  0x18(%rsp),%xmm0
  movss  %xmm7,(%rsp)
  mulss  %xmm7,%xmm0
  call   <round@plt>
  mov    %rax,0x0(%r13)
  movss  0x1c(%rsp),%xmm0
  mulss  (%rsp),%xmm0
  call   <round@plt>
  mov    %rax,(%r12)
  movss  0x14(%rsp),%xmm3
  mulss  (%rsp),%xmm3
  movaps %xmm3,%xmm0
  call   <round@plt>
  mov    %rax,0x0(%rbp)
  movss  (%rsp),%xmm0
  mulss  0x4(%rsp),%xmm0
  call   <round@plt>
  mov    %rax,(%rbx)
  jmp    L17
```

tool_calls: name: disassemble_data
arguments: tag: D7
type: f32
name: disassemble_data
arguments: tag: D22
type: string
name: disassemble_data
arguments: tag: D43
type: f64

tool: D7: 1

tool: D22: Drive parameters do not fit constraints! Ang: %d, Pow: %f, Rot: %f

tool: D43: 45

assistant: ```c
void driveCalcMecPolarDegrees(int angle, float powerRatio, float rotationRatio, long maxRefVal, long *mecFL, long *mecBL, long *mecFR, long *mecBR) {
  if (angle > 360 || angle < 0 || abs(powerRatio) > 1.0 || abs(rotationRatio) > 1.0) {
    writeDebugStream("Drive parameters do not fit constraints! Ang: %d, Pow: %f, Rot: %f", angle, powerRatio, rotationRatio);
  } else {
    float maxPowFLBR = cosDegrees(45.0 - (float)angle);
    float maxPowFRBL = cosDegrees(45.0 + (float)angle);
    float powFL = (powerRatio * maxPowFLBR) + (rotationRatio * abs(maxPowFLBR));
    float powBL = (powerRatio * maxPowFRBL) + (rotationRatio * abs(maxPowFRBL));
    float powFR = (powerRatio * maxPowFRBL) - (rotationRatio * abs(maxPowFRBL));
    float powBR = (powerRatio * maxPowFLBR) - (rotationRatio * abs(maxPowFLBR));
    powFL = sgn(powFL) * helpFindMinAbsFloat(powFL, maxPowFLBR);
    powBL = sgn(powBL) * helpFindMinAbsFloat(powBL, maxPowFRBL);
    powFR = sgn(powFR) * helpFindMinAbsFloat(powFR, maxPowFRBL);
    powBR = sgn(powBR) * helpFindMinAbsFloat(powBR, maxPowFLBR);
    float absHighestPow = helpFindMaxAbsFloat(maxPowFLBR, maxPowFRBL);
    long multiplier = maxRefVal / absHighestPow;
    *mecFL = round(powFL * multiplier);
    *mecBL = round(powBL * multiplier);
    *mecFR = round(powFR * multiplier);
    *mecBR = round(powBR * multiplier);
  }
}
```