user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<ex5>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  lea    D35(%rip),%rbx
  mov    %rbx,%rdi
  call   <print@plt>
  lea    D65(%rip),%rdi
  call   <print@plt>
  lea    D0(%rip),%rdi
  call   <print@plt>
  lea    D109(%rip),%rdi
  call   <print@plt>
  lea    D29(%rip),%rdi
  call   <print@plt>
  movss  D66(%rip),%xmm1
  movss  D104(%rip),%xmm0
  lea    D6(%rip),%rbp
  mov    %rbp,%rdi
  call   <printf@plt>
  lea    D79(%rip),%rdi
  call   <print@plt>
  lea    D1(%rip),%rdi
  call   <print@plt>
  movss  D46(%rip),%xmm1
  movss  D92(%rip),%xmm0
  mov    %rbp,%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <print@plt>
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
```

tool_calls: name: parse_data
arguments: data_label: D35
datatype: string
name: parse_data
arguments: data_label: D65
datatype: string
name: parse_data
arguments: data_label: D0
datatype: string
name: parse_data
arguments: data_label: D109
datatype: string
name: parse_data
arguments: data_label: D29
datatype: string
name: parse_data
arguments: data_label: D66
datatype: byte[4]
name: parse_data
arguments: data_label: D104
datatype: byte[4]
name: parse_data
arguments: data_label: D6
datatype: string
name: parse_data
arguments: data_label: D79
datatype: string
name: parse_data
arguments: data_label: D1
datatype: string
name: parse_data
arguments: data_label: D46
datatype: byte[4]
name: parse_data
arguments: data_label: D92
datatype: f32

tool: D35: 
------------------------------


tool: D65: 5. Seguindo atraves dos trechos de algoritmos abaixo, determine o valor final de X e de Y.

tool: D0: Em ambos os casos, considere os valores iniciais: X = 1.0 e Y = 1.0

tool: D109: 
Primeiro algoritmo:

tool: D29: 	A = X + 5.0
	B = Y + 3.0
	X = A + B
	Y = X + A
	B = Y / 4.0 + X
	A = B / 2. + Y
	X = X + A + B - Y
	Y = Y + B

tool: {"D66": [0x00,0x00,0xf0,0x41]}

tool: {"D104": [0x00,0x00,0xf8,0x41]}

tool: D6: Valores finais:
	x:%.2f
	y:%.2f


tool: D79: 
Segundo algoritmo:

tool: D1: 	X = X + Y
	X = X*2
	A = X + Y
	B = A - 5.0
	Y = A
	B = B / Y + 2.0
	X = (Y + A) / B
	Y = Y / A + X /B

tool: {"D46": [0x00,0x00,0x60,0x40]}

tool: D92: 5

assistant: ```c
void ex5() {
  print("\n------------------------------\n");
  print("5. Seguindo atraves dos trechos de algoritmos abaixo, determine o valor final de X e de Y.");
  print("Em ambos os casos, considere os valores iniciais: X = 1.0 e Y = 1.0");
  float x = 1, y = 1, a, b;
  print("\nPrimeiro algoritmo:");
  print("\tA = X + 5.0\n\tB = Y + 3.0\n\tX = A + B\n\tY = X + A\n\tB = Y / 4.0 + X\n\tA = B / 2. + Y\n\tX = X + A + B - Y\n\tY = Y + B");
  a = x + 5;
  b = y + 3;
  x = a + b;
  y = x + a;
  b = y / 4.0 + x;
  a = b / 2. + y;
  x = x + a + b - y;
  y = y + b;
  printf("Valores finais:\n\tx:%.2f\n\ty:%.2f\n", x, y);
  x = 1, y = 1, a = 0, b = 0;
  print("\nSegundo algoritmo:");
  print("\tX = X + Y\n\tX = X*2\n\tA = X + Y\n\tB = A - 5.0\n\tY = A\n\tB = B / Y + 2.0\n\tX = (Y + A) / B\n\tY = Y / A + X /B");
  x = x + y;
  x = x * 2;
  a = x + y;
  b = a - 5.0;
  y = a;
  b = b / y + 2.0;
  x = (y + a) / b;
  y = y / a + x / b;
  printf("Valores finais:\n\tx:%.2f\n\ty:%.2f\n", x, y);
  print("\n------------------------------\n");
}
```