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

```asm
<sqrti>:
  endbr64
  mov    %edi,%eax
  cmp    $0x3fffffff,%edi
  jle    L118
  sub    $0x40000000,%eax
  mov    $0x11000000,%ecx
  mov    $0xa000,%edi
  mov    $0x15000000,%r10d
  mov    $0xa000,%r9d
  mov    $0x24000000,%esi
  mov    $0x8000,%edx
  mov    $0x8000,%r8d
L105:
  cmp    %esi,%eax
  jl     L163
  sub    %esi,%eax
  mov    %r10d,%ecx
  mov    %r9d,%edx
  mov    %edi,%r8d
L163:
  cmp    %ecx,%eax
  jl     L4
  or     $0x1000,%r8d
  sub    %ecx,%eax
  mov    %r8d,%edx
L4:
  lea    0x400(%rdx),%ecx
  shl    $0xc,%ecx
  cmp    %ecx,%eax
  jl     L92
  or     $0x800,%r8d
  sub    %ecx,%eax
  mov    %r8d,%edx
L92:
  lea    0x200(%rdx),%ecx
  shl    $0xb,%ecx
  cmp    %ecx,%eax
  jl     L83
  or     $0x400,%r8d
  sub    %ecx,%eax
  mov    %r8d,%edx
L83:
  lea    0x100(%rdx),%ecx
  shl    $0xa,%ecx
  cmp    %ecx,%eax
  jl     L132
  or     $0x200,%r8d
  sub    %ecx,%eax
  mov    %r8d,%edx
L132:
  lea    0x80(%rdx),%ecx
  shl    $0x9,%ecx
  cmp    %ecx,%eax
  jl     L38
  or     $0x100,%r8d
  sub    %ecx,%eax
  mov    %r8d,%edx
L38:
  lea    0x40(%rdx),%ecx
  shl    $0x8,%ecx
  cmp    %ecx,%eax
  jl     L36
  or     $0x80,%r8b
  sub    %ecx,%eax
  mov    %r8d,%edx
L36:
  lea    0x20(%rdx),%ecx
  shl    $0x7,%ecx
  cmp    %ecx,%eax
  jl     L19
  or     $0x40,%r8d
  sub    %ecx,%eax
  mov    %r8d,%edx
L19:
  lea    0x10(%rdx),%ecx
  shl    $0x6,%ecx
  cmp    %ecx,%eax
  jl     L63
  or     $0x20,%r8d
  sub    %ecx,%eax
  mov    %r8d,%edx
L63:
  lea    0x8(%rdx),%ecx
  shl    $0x5,%ecx
  cmp    %ecx,%eax
  jl     L91
  or     $0x10,%r8d
  sub    %ecx,%eax
  mov    %r8d,%edx
L91:
  lea    0x4(%rdx),%ecx
  shl    $0x4,%ecx
  cmp    %ecx,%eax
  jl     L156
  or     $0x8,%r8d
  sub    %ecx,%eax
  mov    %r8d,%edx
L156:
  lea    0x10(,%rdx,8),%ecx
  cmp    %ecx,%eax
  jl     L89
  or     $0x4,%r8d
  sub    %ecx,%eax
  mov    %r8d,%edx
L89:
  lea    0x4(,%rdx,4),%edx
  cmp    %edx,%eax
  jl     L42
  sub    %edx,%eax
  or     $0x2,%r8d
L42:
  lea    (%r8,%r8,1),%ecx
  mov    %r8d,%edx
  or     $0x1,%edx
  cmp    %eax,%ecx
  cmovl  %edx,%r8d
  mov    %r8d,%eax
  ret
  nopl   0x0(%rax,%rax,1)
L118:
  cmp    $0xfffffff,%edi
  jle    L136
  sub    $0x10000000,%eax
  mov    $0x9000000,%ecx
  mov    $0x6000,%edi
  mov    $0xd000000,%r10d
  mov    $0x6000,%r9d
  mov    $0x14000000,%esi
  mov    $0x4000,%edx
  mov    $0x4000,%r8d
  jmp    L105
L136:
  mov    $0x1000000,%ecx
  mov    $0x5000000,%r10d
  xor    %edx,%edx
  xor    %r8d,%r8d
  mov    $0x2000,%r9d
  mov    $0x2000,%edi
  mov    $0x4000000,%esi
  jmp    L105
```

assistant: ```c
uint32_t sqrti(uint32_t n) {
  uint32_t s, t;
  s = 0;
  if (n >= 1 << 30) {
    n -= 1 << 30;
    s = 1 << 15;
  }
  t = s + (1UL << (14 - 1));
  t <<= 14 + 1;
  if (n >= t) {
    n -= t;
    s |= 1UL << 14;
  };
  t = s + (1UL << (13 - 1));
  t <<= 13 + 1;
  if (n >= t) {
    n -= t;
    s |= 1UL << 13;
  };
  t = s + (1UL << (12 - 1));
  t <<= 12 + 1;
  if (n >= t) {
    n -= t;
    s |= 1UL << 12;
  };
  t = s + (1UL << (11 - 1));
  t <<= 11 + 1;
  if (n >= t) {
    n -= t;
    s |= 1UL << 11;
  };
  t = s + (1UL << (10 - 1));
  t <<= 10 + 1;
  if (n >= t) {
    n -= t;
    s |= 1UL << 10;
  };
  t = s + (1UL << (9 - 1));
  t <<= 9 + 1;
  if (n >= t) {
    n -= t;
    s |= 1UL << 9;
  };
  t = s + (1UL << (8 - 1));
  t <<= 8 + 1;
  if (n >= t) {
    n -= t;
    s |= 1UL << 8;
  };
  t = s + (1UL << (7 - 1));
  t <<= 7 + 1;
  if (n >= t) {
    n -= t;
    s |= 1UL << 7;
  };
  t = s + (1UL << (6 - 1));
  t <<= 6 + 1;
  if (n >= t) {
    n -= t;
    s |= 1UL << 6;
  };
  t = s + (1UL << (5 - 1));
  t <<= 5 + 1;
  if (n >= t) {
    n -= t;
    s |= 1UL << 5;
  };
  t = s + (1UL << (4 - 1));
  t <<= 4 + 1;
  if (n >= t) {
    n -= t;
    s |= 1UL << 4;
  };
  t = s + (1UL << (3 - 1));
  t <<= 3 + 1;
  if (n >= t) {
    n -= t;
    s |= 1UL << 3;
  };
  t = s + (1UL << (2 - 1));
  t <<= 2 + 1;
  if (n >= t) {
    n -= t;
    s |= 1UL << 2;
  };
  t = s + (1UL << (1 - 1));
  t <<= 1 + 1;
  if (n >= t) {
    n -= t;
    s |= 1UL << 1;
  };
  if (n > s << 1)
    s |= 1;
  return s;
}
```