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

```asm
<practice_2>:
  endbr64
  sub    $0x28,%rsp
  lea    D129(%rip),%rdi
  movsd  %xmm2,0x8(%rsp)
  mov    %fs:0x28,%rax
  mov    %rax,0x18(%rsp)
  xor    %eax,%eax
  call   <printf@plt>
  lea    0x10(%rsp),%rsi
  lea    D28(%rip),%rdi
  call   <scanf@plt>
  movsd  0x10(%rsp),%xmm0
  movsd  D36(%rip),%xmm1
  movsd  0x8(%rsp),%xmm2
  comisd %xmm0,%xmm1
  jb     L110
  movsd  D14(%rip),%xmm2
  mulsd  %xmm0,%xmm2
L16:
  lea    D126(%rip),%rdi
  movapd %xmm2,%xmm0
  mov    $0x1,%eax
  call   <printf@plt>
  mov    $0xa,%edi
  call   <putchar@plt>
  mov    0x18(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L101
  add    $0x28,%rsp
  ret
  nopl   0x0(%rax)
L110:
  movsd  D75(%rip),%xmm3
  comisd %xmm0,%xmm3
  jb     L2
  subsd  %xmm1,%xmm0
  mulsd  D86(%rip),%xmm0
  movsd  D121(%rip),%xmm2
  addsd  %xmm0,%xmm2
  jmp    L16
  nopl   0x0(%rax,%rax,1)
L2:
  movsd  D33(%rip),%xmm1
  comisd %xmm0,%xmm1
  jae    L25
  movsd  D73(%rip),%xmm3
  comisd %xmm0,%xmm3
  jb     L35
  subsd  %xmm1,%xmm0
  mulsd  D58(%rip),%xmm0
  movsd  D147(%rip),%xmm2
  addsd  %xmm0,%xmm2
  jmp    L16
  nopl   0x0(%rax)
L25:
  subsd  %xmm3,%xmm0
  mulsd  D168(%rip),%xmm0
  movsd  D134(%rip),%xmm2
  addsd  %xmm0,%xmm2
  jmp    L16
  nopl   (%rax)
L35:
  movsd  D4(%rip),%xmm1
  comisd %xmm0,%xmm1
  jae    L75
  comisd %xmm1,%xmm0
  jbe    L16
  subsd  %xmm1,%xmm0
  mulsd  D56(%rip),%xmm0
  addsd  D62(%rip),%xmm0
  movapd %xmm0,%xmm2
  jmp    L16
  nopl   (%rax)
L75:
  subsd  %xmm3,%xmm0
  mulsd  D97(%rip),%xmm0
  movsd  D67(%rip),%xmm2
  addsd  %xmm0,%xmm2
  jmp    L16
L101:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: tag: D129
type: string
name: disassemble_data
arguments: tag: D28
type: string
name: disassemble_data
arguments: tag: D36
type: byte[8]
name: disassemble_data
arguments: tag: D14
type: f64
name: disassemble_data
arguments: tag: D126
type: string
name: disassemble_data
arguments: tag: D75
type: byte[8]
name: disassemble_data
arguments: tag: D86
type: f64
name: disassemble_data
arguments: tag: D121
type: byte[8]
name: disassemble_data
arguments: tag: D33
type: byte[8]
name: disassemble_data
arguments: tag: D73
type: byte[8]
name: disassemble_data
arguments: tag: D58
type: f64
name: disassemble_data
arguments: tag: D147
type: byte[8]
name: disassemble_data
arguments: tag: D168
type: f64
name: disassemble_data
arguments: tag: D134
type: byte[8]
name: disassemble_data
arguments: tag: D4
type: byte[8]
name: disassemble_data
arguments: tag: D56
type: f64
name: disassemble_data
arguments: tag: D62
type: byte[8]
name: disassemble_data
arguments: tag: D97
type: f64
name: disassemble_data
arguments: tag: D67
type: byte[8]

tool: D129: Net income:

tool: D28: %lf

tool: {"D36": [0x00,0x00,0x00,0x00,0x00,0x6a,0xf8,0x40]}

tool: D14: 0.1

tool: D126: royalties: bonus=%lf

tool: {"D75": [0x00,0x00,0x00,0x00,0x00,0x6a,0x08,0x41]}

tool: D86: 0.075

tool: {"D121": [0x00,0x00,0x00,0x00,0x00,0x88,0xc3,0x40]}

tool: {"D33": [0x00,0x00,0x00,0x00,0x00,0x6a,0x18,0x41]}

tool: {"D73": [0x00,0x00,0x00,0x00,0x80,0x4f,0x22,0x41]}

tool: D58: 0.03

tool: {"D147": [0x00,0x00,0x00,0x00,0x00,0xdb,0xda,0x40]}

tool: D168: 0.05

tool: {"D134": [0x00,0x00,0x00,0x00,0x00,0x17,0xd1,0x40]}

tool: {"D4": [0x00,0x00,0x00,0x00,0x80,0x84,0x2e,0x41]}

tool: D56: 0.01

tool: {"D62": [0x00,0x00,0x00,0x00,0x80,0x49,0xe3,0x40]}

tool: D97: 0.015

tool: {"D67": [0x00,0x00,0x00,0x00,0x80,0x5b,0xe0,0x40]}

assistant: ```c
void practice_2(void) {
  double i;
  double bonus1, bonus2, bonus4, bonus6, bonus10, bonus;
  printf("Net income:");
  scanf("%lf", &i);
  bonus1 = 100000 * 0.1;
  bonus2 = bonus1 + 100000 * 0.075;
  bonus4 = bonus2 + 200000 * 0.05;
  bonus6 = bonus4 + 200000 * 0.03;
  bonus10 = bonus6 + 400000 * 0.015;
  if (i <= 100000) {
    bonus = i * 0.1;
  } else if (i <= 200000) {
    bonus = bonus1 + (i - 100000) * 0.075;
  } else if (i <= 400000) {
    bonus = bonus2 + (i - 200000) * 0.05;
  } else if (i <= 600000) {
    bonus = bonus4 + (i - 400000) * 0.03;
  } else if (i <= 1000000) {
    bonus = bonus6 + (i - 600000) * 0.015;
  } else if (i > 1000000) {
    bonus = bonus10 + (i - 1000000) * 0.01;
  }
  printf("royalties: bonus=%lf", bonus);
  printf("\n");
}
```