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

```asm
<majorityElement>:
  endbr64
  push   %r14
  mov    %rdx,%r14
  push   %r13
  mov    %esi,%r13d
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rdi,%rbx
  mov    $0x8,%edi
  call   <malloc@plt>
  mov    %rax,%r9
  test   %r13d,%r13d
  jle    L54
  lea    -0x1(%r13),%eax
  mov    %rbx,%rsi
  xor    %r8d,%r8d
  xor    %ecx,%ecx
  lea    0x4(%rbx,%rax,4),%rdi
  mov    %rbx,%rax
  jmp    L57
  nopl   0x0(%rax)
L136:
  cmp    %edx,%ebp
  je     L75
  test   %r8d,%r8d
  je     L114
  cmp    %edx,%r12d
  je     L18
  sub    $0x1,%ecx
  sub    $0x1,%r8d
L58:
  add    $0x4,%rax
  cmp    %rax,%rdi
  je     L133
L57:
  mov    (%rax),%edx
  test   %ecx,%ecx
  jne    L136
  test   %r8d,%r8d
  je     L11
  cmp    %edx,%r12d
  je     L18
L11:
  add    $0x4,%rax
  mov    %edx,%ebp
  mov    $0x1,%ecx
  cmp    %rax,%rdi
  jne    L57
L133:
  movl   $0x0,(%r14)
  test   %ecx,%ecx
  je     L151
  mov    %rbx,%rax
  xor    %edx,%edx
  cs nopw 0x0(%rax,%rax,1)
L13:
  xor    %ecx,%ecx
  cmp    %ebp,(%rax)
  sete   %cl
  add    $0x4,%rax
  add    %ecx,%edx
  cmp    %rax,%rdi
  jne    L13
  movslq %r13d,%rax
  mov    %r13d,%ecx
  imul   $0x55555556,%rax,%rax
  sar    $0x1f,%ecx
  shr    $0x20,%rax
  sub    %ecx,%eax
  cmp    %edx,%eax
  jl     L27
L151:
  xor    %eax,%eax
  test   %r8d,%r8d
  je     L19
  nopw   0x0(%rax,%rax,1)
L31:
  xor    %edx,%edx
  cmp    %r12d,(%rsi)
  sete   %dl
  add    $0x4,%rsi
  add    %edx,%eax
  cmp    %rsi,%rdi
  jne    L31
  movslq %r13d,%rdx
  sar    $0x1f,%r13d
  imul   $0x55555556,%rdx,%rdx
  shr    $0x20,%rdx
  sub    %r13d,%edx
  cmp    %eax,%edx
  jge    L19
  movslq (%r14),%rax
  lea    0x1(%rax),%edx
  mov    %edx,(%r14)
  mov    %r12d,(%r9,%rax,4)
L19:
  pop    %rbx
  mov    %r9,%rax
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
  nopl   (%rax)
L114:
  mov    %edx,%r12d
  mov    $0x1,%r8d
  jmp    L58
  cs nopw 0x0(%rax,%rax,1)
L75:
  add    $0x1,%ecx
  jmp    L58
  nopl   0x0(%rax,%rax,1)
L18:
  add    $0x1,%r8d
  mov    %edx,%r12d
  jmp    L58
  nopl   0x0(%rax)
L27:
  movl   $0x1,(%r14)
  mov    %ebp,(%r9)
  jmp    L151
  nop
L54:
  pop    %rbx
  mov    %r9,%rax
  pop    %rbp
  movl   $0x0,(%r14)
  pop    %r12
  pop    %r13
  pop    %r14
  ret
```

assistant: ```c
int *majorityElement(int *nums, int numsSize, int *returnSize) {
  int n1, n2, c1, c2;
  int *res = (int *)malloc(2 * sizeof(int));
  c1 = c2 = 0;
  for (int i = 0; i < numsSize; i++) {
    if (c1 > 0 && n1 == nums[i]) {
      c1++;
      continue;
    }
    if (c2 > 0 && n2 == nums[i]) {
      c2++;
      continue;
    }
    if (c1 == 0) {
      n1 = nums[i];
      c1 = 1;
      continue;
    }
    if (c2 == 0) {
      n2 = nums[i];
      c2 = 1;
      continue;
    }
    c1--;
    c2--;
  }
  *returnSize = 0;
  if (c1 > 0) {
    c1 = 0;
    for (int i = 0; i < numsSize; i++) {
      if (n1 == nums[i])
        c1++;
    }
    if (c1 > numsSize / 3) {
      res[(*returnSize)++] = n1;
    }
  }
  if (c2 > 0) {
    c2 = 0;
    for (int i = 0; i < numsSize; i++) {
      if (n2 == nums[i])
        c2++;
    }
    if (c2 > numsSize / 3) {
      res[(*returnSize)++] = n2;
    }
  }
  return res;
}
```