user: Please show me the C implementation that matches the assembly code listed below:

```asm
<update_cov_rangefinder>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  movss  %xmm0,-0x4(%rbp)
  movss  %xmm1,-0x8(%rbp)
  movss  %xmm2,-0xc(%rbp)
  movss  %xmm3,-0x10(%rbp)
  movss  %xmm4,-0x14(%rbp)
  movss  %xmm5,-0x18(%rbp)
  movss  %xmm6,-0x1c(%rbp)
  movss  %xmm7,-0x20(%rbp)
  mov    %rdi,-0x28(%rbp)
  movss  -0x4(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0xe8(%rbp),%xmm0
  addss  -0x20(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  movss  %xmm0,(%rax)
  movss  -0x4(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0xf0(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x4,%rax
  addss  0x10(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x4(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0xf8(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x8,%rax
  addss  0x18(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x4(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0x100(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0xc,%rax
  addss  0x20(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x4(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0x108(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x10,%rax
  addss  0x28(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x4(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0x110(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x14,%rax
  addss  0x30(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x4(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0x118(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x18,%rax
  addss  0x38(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x8(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0xe8(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x1c,%rax
  addss  0x40(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x8(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0xf0(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x20,%rax
  addss  0x48(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x8(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0xf8(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x24,%rax
  addss  0x50(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x8(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0x100(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x28,%rax
  addss  0x58(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x8(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0x108(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x2c,%rax
  addss  0x60(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x8(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0x110(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x30,%rax
  addss  0x68(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x8(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0x118(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x34,%rax
  addss  0x70(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0xc(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0xe8(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x38,%rax
  addss  0x78(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0xc(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0xf0(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x3c,%rax
  addss  0x80(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0xc(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0xf8(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x40,%rax
  addss  0x88(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0xc(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0x100(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x44,%rax
  addss  0x90(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0xc(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0x108(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x48,%rax
  addss  0x98(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0xc(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0x110(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x4c,%rax
  addss  0xa0(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0xc(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0x118(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x50,%rax
  addss  0xa8(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x10(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0xe8(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x54,%rax
  addss  0xb0(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x10(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0xf0(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x58,%rax
  addss  0xb8(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x10(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0xf8(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x5c,%rax
  addss  0xc0(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x10(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0x100(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x60,%rax
  addss  0xc8(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x10(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0x108(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x64,%rax
  addss  0xd0(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x10(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0x110(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x68,%rax
  addss  0xd8(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x10(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0x118(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x6c,%rax
  addss  0xe0(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  D110(%rip),%xmm0
  subss  -0x14(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x70,%rax
  mulss  0xe8(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  D110(%rip),%xmm0
  subss  -0x14(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x74,%rax
  mulss  0xf0(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  D110(%rip),%xmm0
  subss  -0x14(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x78,%rax
  mulss  0xf8(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  D110(%rip),%xmm0
  subss  -0x14(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x7c,%rax
  mulss  0x100(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  D110(%rip),%xmm0
  subss  -0x14(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  sub    $0xffffffffffffff80,%rax
  mulss  0x108(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  D110(%rip),%xmm0
  subss  -0x14(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x84,%rax
  mulss  0x110(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  D110(%rip),%xmm0
  subss  -0x14(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x88,%rax
  mulss  0x118(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x18(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0xe8(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x8c,%rax
  addss  0x120(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x18(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0xf0(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x90,%rax
  addss  0x128(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x18(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0xf8(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x94,%rax
  addss  0x130(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x18(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0x100(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x98,%rax
  addss  0x138(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x18(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0x108(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0x9c,%rax
  addss  0x140(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x18(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0x110(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0xa0,%rax
  addss  0x148(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x18(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0x118(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0xa4,%rax
  addss  0x150(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x1c(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0xe8(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0xa8,%rax
  addss  0x158(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x1c(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0xf0(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0xac,%rax
  addss  0x160(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x1c(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0xf8(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0xb0,%rax
  addss  0x168(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x1c(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0x100(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0xb4,%rax
  addss  0x170(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x1c(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0x108(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0xb8,%rax
  addss  0x178(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x1c(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0x110(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0xbc,%rax
  addss  0x180(%rbp),%xmm0
  movss  %xmm0,(%rax)
  movss  -0x1c(%rbp),%xmm0
  movss  D314(%rip),%xmm1
  xorps  %xmm1,%xmm0
  mulss  0x118(%rbp),%xmm0
  mov    -0x28(%rbp),%rax
  add    $0xc0,%rax
  addss  0x188(%rbp),%xmm0
  movss  %xmm0,(%rax)
  nop
  pop    %rbp
  ret
```

tool_calls: name: retrieve_data
arguments: label: D314
datatype: byte[4]
name: retrieve_data
arguments: label: D110
datatype: byte[4]

tool: {"D314": [0x00,0x00,0x00,0x80]}

tool: {"D110": [0x00,0x00,0x80,0x3f]}

assistant: ```c
void update_cov_rangefinder(float g11, float g21, float g31, float g41, float g51, float g61, float g71, float p11, float p12, float p13, float p14, float p15, float p16, float p17, float p21, float p22, float p23, float p24, float p25, float p26, float p27, float p31, float p32, float p33, float p34, float p35, float p36, float p37, float p41, float p42, float p43, float p44, float p45, float p46, float p47, float p51, float p52, float p53, float p54, float p55, float p56, float p57, float p61, float p62, float p63, float p64, float p65, float p66, float p67, float p71, float p72, float p73, float p74, float p75, float p76, float p77, float *out_4405977212521852574) {
  out_4405977212521852574[0] = -g11 * p51 + p11;
  out_4405977212521852574[1] = -g11 * p52 + p12;
  out_4405977212521852574[2] = -g11 * p53 + p13;
  out_4405977212521852574[3] = -g11 * p54 + p14;
  out_4405977212521852574[4] = -g11 * p55 + p15;
  out_4405977212521852574[5] = -g11 * p56 + p16;
  out_4405977212521852574[6] = -g11 * p57 + p17;
  out_4405977212521852574[7] = -g21 * p51 + p21;
  out_4405977212521852574[8] = -g21 * p52 + p22;
  out_4405977212521852574[9] = -g21 * p53 + p23;
  out_4405977212521852574[10] = -g21 * p54 + p24;
  out_4405977212521852574[11] = -g21 * p55 + p25;
  out_4405977212521852574[12] = -g21 * p56 + p26;
  out_4405977212521852574[13] = -g21 * p57 + p27;
  out_4405977212521852574[14] = -g31 * p51 + p31;
  out_4405977212521852574[15] = -g31 * p52 + p32;
  out_4405977212521852574[16] = -g31 * p53 + p33;
  out_4405977212521852574[17] = -g31 * p54 + p34;
  out_4405977212521852574[18] = -g31 * p55 + p35;
  out_4405977212521852574[19] = -g31 * p56 + p36;
  out_4405977212521852574[20] = -g31 * p57 + p37;
  out_4405977212521852574[21] = -g41 * p51 + p41;
  out_4405977212521852574[22] = -g41 * p52 + p42;
  out_4405977212521852574[23] = -g41 * p53 + p43;
  out_4405977212521852574[24] = -g41 * p54 + p44;
  out_4405977212521852574[25] = -g41 * p55 + p45;
  out_4405977212521852574[26] = -g41 * p56 + p46;
  out_4405977212521852574[27] = -g41 * p57 + p47;
  out_4405977212521852574[28] = p51 * (-g51 + 1);
  out_4405977212521852574[29] = p52 * (-g51 + 1);
  out_4405977212521852574[30] = p53 * (-g51 + 1);
  out_4405977212521852574[31] = p54 * (-g51 + 1);
  out_4405977212521852574[32] = p55 * (-g51 + 1);
  out_4405977212521852574[33] = p56 * (-g51 + 1);
  out_4405977212521852574[34] = p57 * (-g51 + 1);
  out_4405977212521852574[35] = -g61 * p51 + p61;
  out_4405977212521852574[36] = -g61 * p52 + p62;
  out_4405977212521852574[37] = -g61 * p53 + p63;
  out_4405977212521852574[38] = -g61 * p54 + p64;
  out_4405977212521852574[39] = -g61 * p55 + p65;
  out_4405977212521852574[40] = -g61 * p56 + p66;
  out_4405977212521852574[41] = -g61 * p57 + p67;
  out_4405977212521852574[42] = -g71 * p51 + p71;
  out_4405977212521852574[43] = -g71 * p52 + p72;
  out_4405977212521852574[44] = -g71 * p53 + p73;
  out_4405977212521852574[45] = -g71 * p54 + p74;
  out_4405977212521852574[46] = -g71 * p55 + p75;
  out_4405977212521852574[47] = -g71 * p56 + p76;
  out_4405977212521852574[48] = -g71 * p57 + p77;
}
```