user: What is the c source code of the assembly code below:

```asm
<GetConsensusDetailed>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %esi,%r10d
  mov    %edx,%esi
  mov    %r9d,%eax
  mov    0x58(%rsp),%r11
  mov    0x60(%rsp),%r9
  mov    0x68(%rsp),%rbp
  mov    0x90(%rsp),%r12
  mov    0x98(%rsp),%rbx
  movb   $0x4e,(%r11)
  mov    0xa8(%rsp),%rdx
  movl   $0x0,(%rdx)
  mov    0xa0(%rsp),%rdx
  movl   $0x0,(%rdx)
  movl   $0x0,(%rbx)
  movl   $0x0,(%r12)
  mov    0x88(%rsp),%rdx
  movl   $0x0,(%rdx)
  mov    0x80(%rsp),%rdx
  movl   $0x0,(%rdx)
  mov    0x78(%rsp),%rdx
  movl   $0x0,(%rdx)
  mov    0x70(%rsp),%rdx
  movl   $0x0,(%rdx)
  movl   $0x0,0x0(%rbp)
  lea    (%rdi,%r10,1),%edx
  add    %esi,%edx
  add    %ecx,%edx
  cmp    0x50(%rsp),%edx
  jl     L196
  cmp    %ecx,%esi
  mov    %ecx,%r13d
  cmovge %esi,%r13d
  cmp    %r10d,%r13d
  cmovl  %r10d,%r13d
  cmp    %edi,%r13d
  mov    %edi,%r14d
  cmovge %r13d,%r14d
  jle    L99
  movzbl (%r11),%r15d
  mov    $0x0,%r13d
L21:
  mov    %r15b,(%r11)
  cmp    0x38(%rsp),%r13d
  jge    L23
  cmp    %r14d,%r10d
  je     L107
L23:
  cmp    0x40(%rsp),%r13d
  jge    L104
  cmp    %r14d,%esi
  je     L93
L104:
  cmp    0x48(%rsp),%r13d
  jge    L196
  cmp    %r14d,%ecx
  je     L142
L196:
  mov    %edx,(%r9)
  test   %edx,%edx
  jle    L4
  cmpl   $0x1,0xb0(%rsp)
  je     L141
  test   %edi,%edi
  jle    L137
  cltd
  idiv   %edi
  sub    $0x21,%eax
  mov    %eax,(%r12)
  pxor   %xmm0,%xmm0
  cvtsi2ss %edi,%xmm0
  movss  %xmm0,0x0(%rbp)
L137:
  test   %r10d,%r10d
  jle    L171
  mov    0x38(%rsp),%eax
  cltd
  idiv   %r10d
  sub    $0x21,%eax
  mov    %eax,(%rbx)
  pxor   %xmm0,%xmm0
  cvtsi2ss %r10d,%xmm0
  mov    0x70(%rsp),%rax
  movss  %xmm0,(%rax)
L171:
  test   %esi,%esi
  jle    L232
  mov    0x40(%rsp),%eax
  cltd
  idiv   %esi
  sub    $0x21,%eax
  mov    0xa0(%rsp),%rbx
  mov    %eax,(%rbx)
  pxor   %xmm0,%xmm0
  cvtsi2ss %esi,%xmm0
  mov    0x78(%rsp),%rax
  movss  %xmm0,(%rax)
L232:
  test   %ecx,%ecx
  jle    L132
  mov    0x48(%rsp),%eax
  cltd
  idiv   %ecx
  sub    $0x21,%eax
  mov    0xa8(%rsp),%rbx
  mov    %eax,(%rbx)
  pxor   %xmm0,%xmm0
  cvtsi2ss %ecx,%xmm0
  mov    0x80(%rsp),%rax
  movss  %xmm0,(%rax)
L132:
  test   %r8d,%r8d
  jle    L4
  pxor   %xmm0,%xmm0
  cvtsi2ss %r8d,%xmm0
  mov    0x88(%rsp),%rax
  movss  %xmm0,(%rax)
L4:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L99:
  mov    %eax,%r13d
  mov    $0x41,%r15d
  jmp    L21
L107:
  movb   $0x54,(%r11)
  mov    0x38(%rsp),%r13d
  jmp    L23
L93:
  movb   $0x47,(%r11)
  mov    0x40(%rsp),%r13d
  jmp    L104
L142:
  movb   $0x43,(%r11)
  jmp    L196
L141:
  test   %edi,%edi
  jle    L208
  cltd
  idiv   %edi
  sub    $0x21,%eax
  mov    %eax,(%r12)
  imul   $0x64,%edi,%eax
  cltd
  idivl  (%r9)
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  movss  %xmm0,0x0(%rbp)
L208:
  test   %r10d,%r10d
  jle    L143
  mov    0x38(%rsp),%eax
  cltd
  idiv   %r10d
  sub    $0x21,%eax
  mov    %eax,(%rbx)
  imul   $0x64,%r10d,%eax
  cltd
  idivl  (%r9)
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mov    0x70(%rsp),%rax
  movss  %xmm0,(%rax)
L143:
  test   %esi,%esi
  jle    L55
  mov    0x40(%rsp),%eax
  cltd
  idiv   %esi
  sub    $0x21,%eax
  mov    0xa0(%rsp),%rbx
  mov    %eax,(%rbx)
  imul   $0x64,%esi,%eax
  cltd
  idivl  (%r9)
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mov    0x78(%rsp),%rax
  movss  %xmm0,(%rax)
L55:
  test   %ecx,%ecx
  jle    L109
  mov    0x48(%rsp),%eax
  cltd
  idiv   %ecx
  sub    $0x21,%eax
  mov    0xa8(%rsp),%rbx
  mov    %eax,(%rbx)
  imul   $0x64,%ecx,%eax
  cltd
  idivl  (%r9)
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mov    0x80(%rsp),%rax
  movss  %xmm0,(%rax)
L109:
  test   %r8d,%r8d
  jle    L4
  imul   $0x64,%r8d,%eax
  cltd
  idivl  (%r9)
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  mov    0x88(%rsp),%rax
  movss  %xmm0,(%rax)
  jmp    L4
```

assistant: ```c
void GetConsensusDetailed(int A, int T, int G, int C, int N, int Aq, int Tq, int Gq, int Cq, int depth, char *consensus, int *coverage, float *af, float *tf, float *gf, float *cf, float *nf, int *aq, int *tq, int *gq, int *cq, int freq) {
  int max, Qual = 0;
  *consensus = 'N';
  *af = *tf = *gf = *cf = *nf = *aq = *tq = *gq = *cq = 0;
  if (A + T + G + C >= depth) {
    max = ((((A) > (T) ? (A) : (T))) > (((G) > (C) ? (G) : (C))) ? (((A) > (T) ? (A) : (T))) : (((G) > (C) ? (G) : (C))));
    if (max == A) {
      *consensus = 'A';
      Qual = Aq;
    }
    if (max == T) {
      if (Tq > Qual) {
        *consensus = 'T';
        Qual = Tq;
      }
    }
    if (max == G) {
      if (Gq > Qual) {
        *consensus = 'G';
        Qual = Gq;
      }
    }
    if (max == C) {
      if (Cq > Qual) {
        *consensus = 'C';
        Qual = Cq;
      }
    }
  }
  *coverage = A + T + G + C;
  if (*coverage > 0) {
    if (freq == 1) {
      if (A > 0) {
        *aq = Aq / A;
        *aq -= 33;
        *af = A * 100 / *coverage;
      }
      if (T > 0) {
        *tq = Tq / T;
        *tq -= 33;
        *tf = T * 100 / *coverage;
      }
      if (G > 0) {
        *gq = Gq / G;
        *gq -= 33;
        *gf = G * 100 / *coverage;
      }
      if (C > 0) {
        *cq = Cq / C;
        *cq -= 33;
        *cf = C * 100 / *coverage;
      }
      if (N > 0) {
        *nf = N * 100 / *coverage;
      }
    } else {
      if (A > 0) {
        *aq = Aq / A;
        *aq -= 33;
        *af = A;
      }
      if (T > 0) {
        *tq = Tq / T;
        *tq -= 33;
        *tf = T;
      }
      if (G > 0) {
        *gq = Gq / G;
        *gq -= 33;
        *gf = G;
      }
      if (C > 0) {
        *cq = Cq / C;
        *cq -= 33;
        *cf = C;
      }
      if (N > 0) {
        *nf = N;
      }
    }
  }
}
```