user: Translate the below assembly code into C programming language:

```asm
<ex5>:
  endbr64
  push   %r12
  lea    D84(%rip),%r12
  push   %rbp
  lea    D20(%rip),%rbp
  mov    %rbp,%rdi
  sub    $0x8,%rsp
  call   <print@plt>
  lea    D19(%rip),%rdi
  call   <print@plt>
  lea    D89(%rip),%rdi
  call   <print@plt>
  lea    D101(%rip),%rdi
  call   <print@plt>
  lea    D103(%rip),%rdi
  call   <print@plt>
  movss  D34(%rip),%xmm1
  movss  D12(%rip),%xmm0
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D51(%rip),%rdi
  call   <print@plt>
  lea    D58(%rip),%rdi
  call   <print@plt>
  movss  D108(%rip),%xmm1
  movss  D85(%rip),%xmm0
  mov    %r12,%rdi
  call   <printf@plt>
  add    $0x8,%rsp
  mov    %rbp,%rdi
  pop    %rbp
  pop    %r12
  jmp    1070 <print@plt>
```

tool_calls: name: disassemble_data
arguments: data_tag: D84
type: string
name: disassemble_data
arguments: data_tag: D20
type: string
name: disassemble_data
arguments: data_tag: D19
type: string
name: disassemble_data
arguments: data_tag: D89
type: string
name: disassemble_data
arguments: data_tag: D101
type: string
name: disassemble_data
arguments: data_tag: D103
type: string
name: disassemble_data
arguments: data_tag: D34
type: byte[4]
name: disassemble_data
arguments: data_tag: D12
type: byte[4]
name: disassemble_data
arguments: data_tag: D51
type: string
name: disassemble_data
arguments: data_tag: D58
type: string
name: disassemble_data
arguments: data_tag: D108
type: byte[4]
name: disassemble_data
arguments: data_tag: D85
type: f32

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


tool: D20: 
------------------------------


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

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

tool: D101: 
Primeiro algoritmo:

tool: D103: 	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: {"D34": [0x00,0x00,0xf0,0x41]}

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

tool: D51: 
Segundo algoritmo:

tool: D58: 	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: {"D108": [0x00,0x00,0x60,0x40]}

tool: D85: 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");
}
```