user: What would the C source look like for the assembly code provided here?

```asm
<ex9>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  lea    D97(%rip),%rax
  mov    %rax,%rdi
  call   <print@plt>
  lea    D28(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x18(%rbp),%rax
  mov    %rax,%rsi
  lea    D114(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  jmp    L41
L81:
  lea    D27(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x18(%rbp),%rax
  mov    %rax,%rsi
  lea    D114(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
L41:
  mov    -0x18(%rbp),%eax
  test   %eax,%eax
  jle    L81
  mov    -0x18(%rbp),%eax
  cmp    $0x5,%eax
  jg     L81
  lea    D44(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x14(%rbp),%rax
  mov    %rax,%rsi
  lea    D159(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  jmp    L6
L87:
  lea    D27(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x14(%rbp),%rax
  mov    %rax,%rsi
  lea    D159(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
L6:
  movss  -0x14(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  comiss %xmm1,%xmm0
  seta   %al
  xor    $0x1,%eax
  test   %al,%al
  jne    L87
  mov    -0x18(%rbp),%eax
  cmp    $0x1,%eax
  jne    L79
  movss  -0x14(%rbp),%xmm1
  movss  D136(%rip),%xmm0
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x10(%rbp)
  movss  -0x14(%rbp),%xmm0
  movss  -0x10(%rbp),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,-0xc(%rbp)
  pxor   %xmm0,%xmm0
  cvtss2sd -0xc(%rbp),%xmm0
  pxor   %xmm2,%xmm2
  cvtss2sd -0x10(%rbp),%xmm2
  movq   %xmm2,%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  lea    D5(%rip),%rax
  mov    %rax,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  jmp    L20
L79:
  mov    -0x18(%rbp),%eax
  cmp    $0x2,%eax
  jne    L23
  movss  -0x14(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D31(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x10(%rbp)
  movss  -0x14(%rbp),%xmm0
  movss  -0x10(%rbp),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,-0xc(%rbp)
  pxor   %xmm0,%xmm0
  cvtss2sd -0xc(%rbp),%xmm0
  pxor   %xmm3,%xmm3
  cvtss2sd -0x10(%rbp),%xmm3
  movq   %xmm3,%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  lea    D30(%rip),%rax
  mov    %rax,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  jmp    L20
L23:
  mov    -0x18(%rbp),%eax
  cmp    $0x3,%eax
  jne    L43
  movss  -0x14(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D25(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x10(%rbp)
  movss  -0x14(%rbp),%xmm0
  movss  -0x10(%rbp),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,-0xc(%rbp)
  pxor   %xmm0,%xmm0
  cvtss2sd -0xc(%rbp),%xmm0
  pxor   %xmm4,%xmm4
  cvtss2sd -0x10(%rbp),%xmm4
  movq   %xmm4,%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  lea    D11(%rip),%rax
  mov    %rax,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  jmp    L20
L43:
  mov    -0x18(%rbp),%eax
  cmp    $0x4,%eax
  jne    L103
  movss  -0x14(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  D62(%rip),%xmm0
  mulsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0x10(%rbp)
  movss  -0x14(%rbp),%xmm0
  movss  -0x10(%rbp),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,-0xc(%rbp)
  pxor   %xmm0,%xmm0
  cvtss2sd -0xc(%rbp),%xmm0
  pxor   %xmm5,%xmm5
  cvtss2sd -0x10(%rbp),%xmm5
  movq   %xmm5,%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  lea    D137(%rip),%rax
  mov    %rax,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  jmp    L20
L103:
  mov    -0x18(%rbp),%eax
  cmp    $0x5,%eax
  jne    L20
  movss  -0x14(%rbp),%xmm1
  pxor   %xmm0,%xmm0
  mulss  %xmm1,%xmm0
  movss  %xmm0,-0x10(%rbp)
  movss  -0x14(%rbp),%xmm0
  movss  -0x10(%rbp),%xmm1
  addss  %xmm1,%xmm0
  movss  %xmm0,-0xc(%rbp)
  pxor   %xmm0,%xmm0
  cvtss2sd -0xc(%rbp),%xmm0
  pxor   %xmm6,%xmm6
  cvtss2sd -0x10(%rbp),%xmm6
  movq   %xmm6,%rax
  movapd %xmm0,%xmm1
  movq   %rax,%xmm0
  lea    D145(%rip),%rax
  mov    %rax,%rdi
  mov    $0x2,%eax
  call   <printf@plt>
L20:
  lea    D97(%rip),%rax
  mov    %rax,%rdi
  call   <print@plt>
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L77
  call   <__stack_chk_fail@plt>
L77:
  leave
  ret
```

tool_calls: name: retrieve_data
arguments: tag: D97
type_guessed: string
name: retrieve_data
arguments: tag: D28
type_guessed: string
name: retrieve_data
arguments: tag: D114
type_guessed: string
name: retrieve_data
arguments: tag: D27
type_guessed: string
name: retrieve_data
arguments: tag: D44
type_guessed: string
name: retrieve_data
arguments: tag: D159
type_guessed: string
name: retrieve_data
arguments: tag: D136
type_guessed: byte[4]
name: retrieve_data
arguments: tag: D5
type_guessed: string
name: retrieve_data
arguments: tag: D31
type_guessed: byte[8]
name: retrieve_data
arguments: tag: D30
type_guessed: string
name: retrieve_data
arguments: tag: D25
type_guessed: byte[8]
name: retrieve_data
arguments: tag: D11
type_guessed: string
name: retrieve_data
arguments: tag: D62
type_guessed: byte[8]
name: retrieve_data
arguments: tag: D137
type_guessed: string
name: retrieve_data
arguments: tag: D145
type_guessed: string

tool: D97: 
------------------------------


tool: D28: Informe o codigo de cargo do funcionario: 

tool: D114: %d

tool: D27: Valor invalido, tente novamente: 

tool: D44: Informe o salario atual do funcionario: 

tool: D159: %f

tool: {"D136": [0x00,0x00,0x00,0x3f]}

tool: D5: 
Cargo: Escrituario
Aumento: R$%.2f
Novo salario: R$%.2f


tool: {"D31": [0x66,0x66,0x66,0x66,0x66,0x66,0xd6,0x3f]}

tool: D30: 
Cargo: Secretario
Aumento: R$%.2f
Novo salario: R$%.2f


tool: {"D25": [0x9a,0x99,0x99,0x99,0x99,0x99,0xc9,0x3f]}

tool: D11: 
Cargo: Caixa
Aumento: R$%.2f
Novo salario: R$%.2f


tool: {"D62": [0x9a,0x99,0x99,0x99,0x99,0x99,0xb9,0x3f]}

tool: D137: 
Cargo: Gerente
Aumento: R$%.2f
Novo salario: R$%.2f


tool: D145: 
Cargo: Diretor
Aumento: R$%.2f
Novo salario: R$%.2f


assistant: ```c
void ex9() {
  print("\n------------------------------\n");
  int cargo;
  float salario_atual;
  printf("Informe o codigo de cargo do funcionario: ");
  scanf("%d", &cargo);
  while (!(cargo > 0 && cargo < 6)) {
    printf("Valor invalido, tente novamente: ");
    scanf("%d", &cargo);
  }
  printf("Informe o salario atual do funcionario: ");
  scanf("%f", &salario_atual);
  while (!(salario_atual > 0)) {
    printf("Valor invalido, tente novamente: ");
    scanf("%f", &salario_atual);
  }
  float aumento, salario_novo;
  if (cargo == 1) {
    aumento = .5 * salario_atual;
    salario_novo = salario_atual + aumento;
    printf("\nCargo: Escrituario\nAumento: R$%.2f\nNovo salario: R$%.2f\n", aumento, salario_novo);
  } else if (cargo == 2) {
    aumento = .35 * salario_atual;
    salario_novo = salario_atual + aumento;
    printf("\nCargo: Secretario\nAumento: R$%.2f\nNovo salario: R$%.2f\n", aumento, salario_novo);
  } else if (cargo == 3) {
    aumento = .2 * salario_atual;
    salario_novo = salario_atual + aumento;
    printf("\nCargo: Caixa\nAumento: R$%.2f\nNovo salario: R$%.2f\n", aumento, salario_novo);
  } else if (cargo == 4) {
    aumento = .1 * salario_atual;
    salario_novo = salario_atual + aumento;
    printf("\nCargo: Gerente\nAumento: R$%.2f\nNovo salario: R$%.2f\n", aumento, salario_novo);
  } else if (cargo == 5) {
    aumento = .0 * salario_atual;
    salario_novo = salario_atual + aumento;
    printf("\nCargo: Diretor\nAumento: R$%.2f\nNovo salario: R$%.2f\n", aumento, salario_novo);
  }
  print("\n------------------------------\n");
}
```