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

```asm
<ex9>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x10,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  lea    D30(%rip),%rdi
  call   <print@plt>
  lea    D204(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %rsp,%rsi
  lea    D6(%rip),%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    (%rsp),%eax
  sub    $0x1,%eax
  cmp    $0x4,%eax
  jbe    L138
  lea    D146(%rip),%r12
  mov    %rsp,%rbp
  lea    D6(%rip),%rbx
L118:
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  mov    (%rsp),%eax
  sub    $0x1,%eax
  cmp    $0x4,%eax
  ja     L118
L138:
  lea    D82(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    0x4(%rsp),%rsi
  lea    D147(%rip),%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  movss  0x4(%rsp),%xmm1
  comiss D111(%rip),%xmm1
  ja     L71
  lea    D146(%rip),%r12
  lea    0x4(%rsp),%rbp
  lea    D147(%rip),%rbx
L108:
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %rbp,%rsi
  mov    %rbx,%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  movss  0x4(%rsp),%xmm1
  pxor   %xmm2,%xmm2
  comiss %xmm2,%xmm1
  jbe    L108
L71:
  mov    (%rsp),%eax
  cmp    $0x1,%eax
  je     L58
  cmp    $0x2,%eax
  je     L134
  cmp    $0x3,%eax
  je     L149
  cmp    $0x4,%eax
  je     L74
  cmp    $0x5,%eax
  je     L13
L33:
  lea    D30(%rip),%rdi
  call   <print@plt>
  mov    0x8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L48
  add    $0x10,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L58:
  movaps %xmm1,%xmm0
  mulss  D150(%rip),%xmm0
  addss  %xmm0,%xmm1
  cvtss2sd %xmm0,%xmm0
  cvtss2sd %xmm1,%xmm1
  lea    D27(%rip),%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  jmp    L33
L134:
  pxor   %xmm0,%xmm0
  cvtss2sd %xmm1,%xmm0
  mulsd  D48(%rip),%xmm0
  cvtsd2ss %xmm0,%xmm0
  addss  %xmm0,%xmm1
  cvtss2sd %xmm0,%xmm0
  cvtss2sd %xmm1,%xmm1
  lea    D134(%rip),%rdi
  call   <printf@plt>
  jmp    L33
L149:
  pxor   %xmm0,%xmm0
  cvtss2sd %xmm1,%xmm0
  mulsd  D67(%rip),%xmm0
  cvtsd2ss %xmm0,%xmm0
  addss  %xmm0,%xmm1
  cvtss2sd %xmm0,%xmm0
  cvtss2sd %xmm1,%xmm1
  lea    D36(%rip),%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  jmp    L33
L74:
  pxor   %xmm0,%xmm0
  cvtss2sd %xmm1,%xmm0
  mulsd  D99(%rip),%xmm0
  cvtsd2ss %xmm0,%xmm0
  addss  %xmm0,%xmm1
  cvtss2sd %xmm0,%xmm0
  cvtss2sd %xmm1,%xmm1
  lea    D89(%rip),%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  jmp    L33
L13:
  movaps %xmm1,%xmm0
  mulss  D111(%rip),%xmm0
  addss  %xmm0,%xmm1
  cvtss2sd %xmm0,%xmm0
  cvtss2sd %xmm1,%xmm1
  lea    D62(%rip),%rdi
  mov    $0x2,%eax
  call   <printf@plt>
  jmp    L33
L48:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: data_label: D30
type_infered: string
name: unpack_data
arguments: data_label: D204
type_infered: string
name: unpack_data
arguments: data_label: D6
type_infered: string
name: unpack_data
arguments: data_label: D146
type_infered: string
name: unpack_data
arguments: data_label: D82
type_infered: string
name: unpack_data
arguments: data_label: D147
type_infered: string
name: unpack_data
arguments: data_label: D111
type_infered: byte[4]
name: unpack_data
arguments: data_label: D150
type_infered: byte[4]
name: unpack_data
arguments: data_label: D27
type_infered: string
name: unpack_data
arguments: data_label: D48
type_infered: byte[8]
name: unpack_data
arguments: data_label: D134
type_infered: string
name: unpack_data
arguments: data_label: D67
type_infered: byte[8]
name: unpack_data
arguments: data_label: D36
type_infered: string
name: unpack_data
arguments: data_label: D99
type_infered: byte[8]
name: unpack_data
arguments: data_label: D89
type_infered: string
name: unpack_data
arguments: data_label: D62
type_infered: string

tool: D30: 
------------------------------


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

tool: D6: %d

tool: D146: Valor invalido, tente novamente: 

tool: D82: Informe o salario atual do funcionario: 

tool: D147: %f

tool: {"D111": [0x00,0x00,0x00,0x00]}

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

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


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

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


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

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


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

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


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