user: 请将以下的汇编代码转换成C语言代码:

```asm
<SIM_power_bitline_tag_delay>:
  endbr64
  push   %r14
  mov    %r9d,%r14d
  push   %r13
  mov    %esi,%r13d
  mov    $0x1,%esi
  push   %r12
  mov    %edi,%r12d
  mov    $0x1,%edi
  push   %rbp
  mov    %r8d,%ebp
  push   %rbx
  mov    %edx,%ebx
  sub    $0x20,%rsp
  mov    D92(%rip),%rax
  movsd  %xmm0,0x10(%rsp)
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <SIM_power_draincap@plt>
  mov    %ebx,%ecx
  pxor   %xmm0,%xmm0
  pxor   %xmm2,%xmm2
  imul   %r13d,%ecx
  mov    $0x1,%esi
  xor    %edi,%edi
  cvtsi2sd %eax,%xmm0
  mulsd  D247(%rip),%xmm0
  mov    %r12d,%eax
  cltd
  addsd  D60(%rip),%xmm0
  imul   %ebp,%ecx
  imul   %r14d,%ebp
  imul   %r14d,%ecx
  idiv   %ecx
  cvtsi2sd %eax,%xmm2
  mulsd  %xmm2,%xmm0
  movsd  %xmm2,0x18(%rsp)
  movsd  %xmm0,(%rsp)
  cmp    $0x1,%ebp
  je     L40
  mov    D228(%rip),%rax
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <SIM_power_draincap@plt>
  pxor   %xmm0,%xmm0
  movsd  (%rsp),%xmm4
  mov    $0x1,%esi
  add    %eax,%eax
  mov    $0x1,%edi
  cvtsi2sd %eax,%xmm0
  mov    D228(%rip),%rax
  addsd  %xmm0,%xmm4
  movq   %rax,%xmm0
  mov    $0x1,%eax
  movsd  %xmm4,(%rsp)
  call   <SIM_power_draincap@plt>
  pxor   %xmm0,%xmm0
  mov    $0x1,%esi
  mov    $0x1,%edi
  cvtsi2sd %eax,%xmm0
  addsd  (%rsp),%xmm0
  mov    D228(%rip),%rax
  movsd  %xmm0,(%rsp)
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <SIM_power_draincap@plt>
  movsd  D24(%rip),%xmm1
  movsd  D210(%rip),%xmm0
  imul   %eax,%ebp
  mov    $0x2,%eax
  call   <SIM_power_gatecap@plt>
  pxor   %xmm7,%xmm7
  mov    $0x1,%esi
  mov    $0x1,%edi
  lea    0x0(%rbp,%rax,2),%eax
  cvtsi2sd %eax,%xmm7
  mov    D228(%rip),%rax
  movq   %rax,%xmm0
  mov    $0x1,%eax
  movsd  %xmm7,0x8(%rsp)
  call   <SIM_power_transreson@plt>
  movsd  0x18(%rsp),%xmm2
  pxor   %xmm0,%xmm0
  movsd  D247(%rip),%xmm1
  mulsd  D168(%rip),%xmm2
  cvtsi2sd %eax,%xmm0
  mulsd  %xmm2,%xmm1
  addsd  %xmm0,%xmm1
L47:
  mov    $0x1,%esi
  mov    D92(%rip),%rax
  mov    $0x1,%edi
  movsd  %xmm1,0x18(%rsp)
  movq   %rax,%xmm0
  mov    $0x1,%eax
  call   <SIM_power_transreson@plt>
  mov    $0x1,%esi
  mov    $0x1,%edi
  movsd  D171(%rip),%xmm0
  mov    %eax,%ebx
  mov    $0x1,%eax
  call   <SIM_power_transreson@plt>
  pxor   %xmm0,%xmm0
  movsd  0x18(%rsp),%xmm1
  movsd  D295(%rip),%xmm2
  add    %eax,%ebx
  divsd  0x10(%rsp),%xmm2
  cvtsi2sd %ebx,%xmm0
  addsd  %xmm0,%xmm1
  mulsd  (%rsp),%xmm0
  mulsd  0x8(%rsp),%xmm1
  addsd  %xmm0,%xmm1
  movsd  D174(%rip),%xmm0
  mulsd  D107(%rip),%xmm1
  divsd  %xmm2,%xmm0
  comisd %xmm1,%xmm0
  jae    L11
  movapd %xmm2,%xmm3
  movsd  D222(%rip),%xmm0
  addsd  %xmm2,%xmm3
  divsd  %xmm3,%xmm0
  addsd  %xmm1,%xmm0
  movsd  D208(%rip),%xmm1
  divsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
L46:
  mov    0x50(%rsp),%rax
  movapd %xmm0,%xmm1
  divsd  D75(%rip),%xmm1
  movsd  %xmm1,(%rax)
  add    $0x20,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
  nopl   0x0(%rax)
L40:
  movsd  D228(%rip),%xmm0
  mov    $0x1,%eax
  call   <SIM_power_draincap@plt>
  pxor   %xmm0,%xmm0
  movsd  (%rsp),%xmm6
  movsd  D24(%rip),%xmm1
  add    %eax,%eax
  cvtsi2sd %eax,%xmm0
  mov    $0x2,%eax
  addsd  %xmm0,%xmm6
  movsd  D210(%rip),%xmm0
  movsd  %xmm6,(%rsp)
  call   <SIM_power_gatecap@plt>
  movsd  0x18(%rsp),%xmm2
  pxor   %xmm7,%xmm7
  movsd  D247(%rip),%xmm1
  mulsd  D168(%rip),%xmm2
  add    %eax,%eax
  cvtsi2sd %eax,%xmm7
  mulsd  %xmm2,%xmm1
  movsd  %xmm7,0x8(%rsp)
  jmp    L47
  nopl   0x0(%rax,%rax,1)
L11:
  movsd  D141(%rip),%xmm0
  movsd  D304(%rip),%xmm3
  mulsd  D202(%rip),%xmm1
  divsd  %xmm2,%xmm0
  mulsd  D251(%rip),%xmm1
  mulsd  %xmm3,%xmm0
  mulsd  %xmm3,%xmm0
  addsd  %xmm0,%xmm1
  movsd  D150(%rip),%xmm0
  mulsd  %xmm2,%xmm0
  mulsd  %xmm0,%xmm1
  movsd  D203(%rip),%xmm0
  subsd  %xmm1,%xmm0
  pxor   %xmm1,%xmm1
  ucomisd %xmm0,%xmm1
  ja     L28
  sqrtsd %xmm0,%xmm0
L7:
  subsd  D162(%rip),%xmm0
  addsd  %xmm2,%xmm2
  divsd  %xmm2,%xmm0
  jmp    L46
L28:
  movsd  %xmm2,(%rsp)
  call   <sqrt@plt>
  movsd  (%rsp),%xmm2
  jmp    L7
```

tool_calls: name: disassemble_data
arguments: data_label: D92
type: byte[8]
name: disassemble_data
arguments: data_label: D247
type: f64
name: disassemble_data
arguments: data_label: D60
type: byte[8]
name: disassemble_data
arguments: data_label: D228
type: byte[8]
name: disassemble_data
arguments: data_label: D24
type: f64
name: disassemble_data
arguments: data_label: D210
type: byte[8]
name: disassemble_data
arguments: data_label: D168
type: byte[8]
name: disassemble_data
arguments: data_label: D171
type: byte[8]
name: disassemble_data
arguments: data_label: D295
type: byte[8]
name: disassemble_data
arguments: data_label: D174
type: byte[8]
name: disassemble_data
arguments: data_label: D107
type: byte[8]
name: disassemble_data
arguments: data_label: D222
type: byte[8]
name: disassemble_data
arguments: data_label: D208
type: byte[8]
name: disassemble_data
arguments: data_label: D75
type: byte[8]
name: disassemble_data
arguments: data_label: D141
type: byte[8]
name: disassemble_data
arguments: data_label: D304
type: byte[8]
name: disassemble_data
arguments: data_label: D202
type: byte[8]
name: disassemble_data
arguments: data_label: D251
type: byte[8]
name: disassemble_data
arguments: data_label: D150
type: f64
name: disassemble_data
arguments: data_label: D203
type: byte[8]
name: disassemble_data
arguments: data_label: D162
type: byte[8]

tool: {"D92": [0xe1,0x7a,0x14,0xae,0x47,0xe1,0xca,0x3f]}

tool: D247: 0.5

tool: {"D60": [0x9b,0x26,0x15,0x69,0xb1,0x20,0xfa,0x3c]}

tool: {"D228": [0x00,0x00,0x00,0x00,0x00,0x00,0xec,0x3f]}

tool: D24: 10

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

tool: {"D168": [0x49,0x0c,0x02,0x2b,0x87,0x16,0xd9,0x3f]}

tool: {"D171": [0xe1,0x7a,0x14,0xae,0x47,0xe1,0xda,0x3f]}

tool: {"D295": [0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xfc,0x3f]}

tool: {"D174": [0x9d,0x5e,0x29,0xcb,0x10,0xc7,0xe4,0x3f]}

tool: {"D107": [0x00,0x33,0x78,0x0e,0x9b,0x82,0x9f,0x3f]}

tool: {"D222": [0x7e,0x1d,0x38,0x67,0x44,0x69,0x02,0x40]}

tool: {"D208": [0xcc,0xcc,0xcc,0xcc,0xcc,0xcc,0xec,0x3f]}

tool: {"D75": [0x91,0xdb,0x34,0x11,0x62,0x69,0xd2,0x3f]}

tool: {"D141": [0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x3f]}

tool: {"D304": [0xdc,0xe0,0x0b,0x93,0xa9,0x82,0xd9,0x3f]}

tool: {"D202": [0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xc0]}

tool: {"D251": [0x9d,0x5e,0x29,0xcb,0x10,0xc7,0xf4,0x3f]}

tool: D150: 4

tool: {"D203": [0xac,0xeb,0x0f,0x7b,0x3e,0x56,0xe4,0x3f]}

tool: {"D162": [0xdc,0xe0,0x0b,0x93,0xa9,0x82,0xe9,0x3f]}

assistant: ```c
double SIM_power_bitline_tag_delay(C, A, B, Ntwl, Ntbl, Ntspd, inrisetime, outrisetime)
int C, A, B, Ntwl, Ntbl, Ntspd;
double inrisetime, *outrisetime;
{
  double Tbit, Cline, Ccolmux, Rlineb, r1, r2, c1, c2, a, b, c;
  double m, tstep;
  double Cbitrow;
  int rows, cols;
  Cbitrow = SIM_power_draincap((2.4 * 0.0875), 1, 1) / 2.0;
  rows = C / (B * A * Ntbl * Ntspd);
  cols = 8 * B * A * Ntspd / Ntwl;
  if (Ntbl * Ntspd == 1) {
    Cline = rows * (Cbitrow + (4.4e-15 * ((172.2157) * (0.0875 * 0.0875)))) + 2 * SIM_power_draincap((10.0 * 0.0875), 0, 1);
    Ccolmux = 2 * SIM_power_gatecap((4.0 * 0.0875), 10.0);
    Rlineb = (0.320 * ((160.0000) * (0.0875 * 0.0875))) * rows / 2.0;
    r1 = Rlineb;
  } else {
    Cline = rows * (Cbitrow + (4.4e-15 * ((172.2157) * (0.0875 * 0.0875)))) + 2 * SIM_power_draincap((10.0 * 0.0875), 0, 1) + SIM_power_draincap((10.0 * 0.0875), 1, 1);
    Ccolmux = Ntspd * Ntbl * (SIM_power_draincap((10.0 * 0.0875), 1, 1)) + 2 * SIM_power_gatecap((4.0 * 0.0875), 10.0);
    Rlineb = (0.320 * ((160.0000) * (0.0875 * 0.0875))) * rows / 2.0;
    r1 = Rlineb + SIM_power_transreson((10.0 * 0.0875), 1, 1);
  }
  r2 = SIM_power_transreson((2.4 * 0.0875), 1, 1) + SIM_power_transreson((2.4 * 0.0875) * 2, 1, 1);
  c1 = Ccolmux;
  c2 = Cline;
  tstep = (r2 * c2 + (r1 + r2) * c1) * log(((3.3 * 0.75)) / ((3.3 * 0.75) - (0.10 * 0.75)));
  m = (5 * 0.36) / inrisetime;
  if (tstep <= (0.5 * ((5 * 0.36) - (1.09 * 0.46)) / m)) {
    a = m;
    b = 2 * (((5 * 0.36) * 0.5) - (1.09 * 0.46));
    c = -2 * tstep * ((5 * 0.36) - (1.09 * 0.46)) + 1 / m * (((5 * 0.36) * 0.5) - (1.09 * 0.46)) * (((5 * 0.36) * 0.5) - (1.09 * 0.46));
    Tbit = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);
  } else {
    Tbit = tstep + ((5 * 0.36) + (1.09 * 0.46)) / (2 * m) - ((5 * 0.36) * 0.5) / m;
  }
  *outrisetime = Tbit / (log(((3.3 * 0.75) - (0.10 * 0.75)) / (5 * 0.36)));
  return (Tbit);
}
```