user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<tobin>:
  endbr64
  sub    $0x98,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x88(%rsp)
  xor    %eax,%eax
  test   %edi,%edi
  je     L276
  mov    %edi,%edx
  shr    $0x1f,%edx
  lea    (%rdi,%rdx,1),%eax
  and    $0x1,%eax
  sub    %edx,%eax
  mov    %edi,%edx
  shr    $0x1f,%edx
  mov    %eax,(%rsp)
  add    %edi,%edx
  mov    %edx,%ecx
  sar    %ecx
  je     L187
  shr    $0x1f,%edx
  lea    (%rcx,%rdx,1),%eax
  and    $0x1,%eax
  sub    %edx,%eax
  mov    %eax,0x4(%rsp)
  mov    %ecx,%eax
  shr    $0x1f,%eax
  add    %ecx,%eax
  mov    %eax,%ecx
  sar    %ecx
  je     L20
  shr    $0x1f,%eax
  lea    (%rcx,%rax,1),%edx
  and    $0x1,%edx
  sub    %eax,%edx
  mov    %ecx,%eax
  shr    $0x1f,%eax
  mov    %edx,0x8(%rsp)
  add    %ecx,%eax
  mov    %eax,%ecx
  sar    %ecx
  je     L5
  shr    $0x1f,%eax
  lea    (%rcx,%rax,1),%edx
  and    $0x1,%edx
  sub    %eax,%edx
  mov    %ecx,%eax
  shr    $0x1f,%eax
  mov    %edx,0xc(%rsp)
  add    %ecx,%eax
  mov    %eax,%ecx
  sar    %ecx
  je     L131
  shr    $0x1f,%eax
  lea    (%rcx,%rax,1),%edx
  and    $0x1,%edx
  sub    %eax,%edx
  mov    %ecx,%eax
  shr    $0x1f,%eax
  mov    %edx,0x10(%rsp)
  add    %ecx,%eax
  mov    %eax,%ecx
  sar    %ecx
  je     L433
  shr    $0x1f,%eax
  lea    (%rcx,%rax,1),%edx
  and    $0x1,%edx
  sub    %eax,%edx
  mov    %ecx,%eax
  shr    $0x1f,%eax
  mov    %edx,0x14(%rsp)
  add    %ecx,%eax
  mov    %eax,%ecx
  sar    %ecx
  je     L66
  shr    $0x1f,%eax
  lea    (%rcx,%rax,1),%edx
  and    $0x1,%edx
  sub    %eax,%edx
  mov    %ecx,%eax
  shr    $0x1f,%eax
  mov    %edx,0x18(%rsp)
  add    %ecx,%eax
  mov    %eax,%ecx
  sar    %ecx
  je     L244
  shr    $0x1f,%eax
  lea    (%rcx,%rax,1),%edx
  and    $0x1,%edx
  sub    %eax,%edx
  mov    %ecx,%eax
  shr    $0x1f,%eax
  mov    %edx,0x1c(%rsp)
  add    %ecx,%eax
  mov    %eax,%ecx
  sar    %ecx
  je     L17
  shr    $0x1f,%eax
  lea    (%rcx,%rax,1),%edx
  and    $0x1,%edx
  sub    %eax,%edx
  mov    %ecx,%eax
  shr    $0x1f,%eax
  mov    %edx,0x20(%rsp)
  add    %ecx,%eax
  sar    %eax
  je     L170
  mov    %eax,%ecx
  shr    $0x1f,%ecx
  lea    (%rax,%rcx,1),%edx
  add    %ecx,%eax
  and    $0x1,%edx
  sub    %ecx,%edx
  mov    %eax,%ecx
  sar    %ecx
  mov    %edx,0x24(%rsp)
  je     L160
  shr    $0x1f,%eax
  lea    (%rcx,%rax,1),%edx
  and    $0x1,%edx
  sub    %eax,%edx
  mov    %ecx,%eax
  shr    $0x1f,%eax
  mov    %edx,0x28(%rsp)
  add    %ecx,%eax
  mov    %eax,%ecx
  sar    %ecx
  je     L331
  shr    $0x1f,%eax
  lea    (%rcx,%rax,1),%edx
  and    $0x1,%edx
  sub    %eax,%edx
  mov    %ecx,%eax
  shr    $0x1f,%eax
  mov    %edx,0x2c(%rsp)
  add    %ecx,%eax
  mov    %eax,%ecx
  sar    %ecx
  je     L21
  shr    $0x1f,%eax
  lea    (%rcx,%rax,1),%edx
  and    $0x1,%edx
  sub    %eax,%edx
  mov    %ecx,%eax
  shr    $0x1f,%eax
  mov    %edx,0x30(%rsp)
  add    %ecx,%eax
  mov    %eax,%ecx
  sar    %ecx
  je     L12
  shr    $0x1f,%eax
  lea    (%rcx,%rax,1),%edx
  and    $0x1,%edx
  sub    %eax,%edx
  mov    %ecx,%eax
  shr    $0x1f,%eax
  mov    %edx,0x34(%rsp)
  add    %ecx,%eax
  mov    %eax,%ecx
  sar    %ecx
  je     L332
  shr    $0x1f,%eax
  lea    (%rcx,%rax,1),%edx
  and    $0x1,%edx
  sub    %eax,%edx
  mov    %ecx,%eax
  shr    $0x1f,%eax
  mov    %edx,0x38(%rsp)
  add    %ecx,%eax
  mov    %eax,%edx
  sar    %edx
  je     L123
  shr    $0x1f,%eax
  add    %eax,%edx
  and    $0x1,%edx
  sub    %eax,%edx
  mov    %edx,0x3c(%rsp)
  mov    $0xf,%edx
L144:
  movslq %edx,%rcx
  lea    0x1(%rdx),%edi
  lea    -0xc(%rsp,%rcx,4),%rcx
  mov    %edi,%eax
  movdqu (%rcx),%xmm1
  movdqu -0x10(%rcx),%xmm2
  shr    $0x2,%eax
  pshufd $0x1b,%xmm1,%xmm0
  movaps %xmm0,0x40(%rsp)
  pshufd $0x1b,%xmm2,%xmm0
  movaps %xmm0,0x50(%rsp)
  cmp    $0x2,%eax
  je     L498
  movdqu -0x20(%rcx),%xmm3
  pshufd $0x1b,%xmm3,%xmm0
  movaps %xmm0,0x60(%rsp)
  cmp    $0x4,%eax
  jne    L498
  movdqu -0x30(%rcx),%xmm0
  pshufd $0x1b,%xmm0,%xmm0
  movaps %xmm0,0x70(%rsp)
L412:
  movslq 0x40(%rsp),%rax
  lea    (%rax,%rax,4),%rcx
  movslq 0x44(%rsp),%rax
  lea    (%rax,%rcx,2),%rax
L15:
  lea    (%rax,%rax,4),%rcx
  movslq 0x48(%rsp),%rax
  lea    (%rax,%rcx,2),%rax
  cmp    $0x2,%edx
  je     L162
  lea    (%rax,%rax,4),%rcx
  movslq 0x4c(%rsp),%rax
  lea    (%rax,%rcx,2),%rax
  cmp    $0x3,%edx
  je     L162
  lea    (%rax,%rax,4),%rcx
  movslq 0x50(%rsp),%rax
  lea    (%rax,%rcx,2),%rax
  cmp    $0x4,%edx
  je     L162
  lea    (%rax,%rax,4),%rcx
  movslq 0x54(%rsp),%rax
  lea    (%rax,%rcx,2),%rax
  cmp    $0x5,%edx
  je     L162
  lea    (%rax,%rax,4),%rcx
  movslq 0x58(%rsp),%rax
  lea    (%rax,%rcx,2),%rax
  cmp    $0x6,%edx
  je     L162
  lea    (%rax,%rax,4),%rcx
  movslq 0x5c(%rsp),%rax
  lea    (%rax,%rcx,2),%rax
  cmp    $0x7,%edx
  je     L162
  lea    (%rax,%rax,4),%rcx
  movslq 0x60(%rsp),%rax
  lea    (%rax,%rcx,2),%rax
  cmp    $0x8,%edx
  je     L162
  lea    (%rax,%rax,4),%rcx
  movslq 0x64(%rsp),%rax
  lea    (%rax,%rcx,2),%rax
  cmp    $0x9,%edx
  je     L162
  lea    (%rax,%rax,4),%rcx
  movslq 0x68(%rsp),%rax
  lea    (%rax,%rcx,2),%rax
  cmp    $0xa,%edx
  je     L162
  lea    (%rax,%rax,4),%rcx
  movslq 0x6c(%rsp),%rax
  lea    (%rax,%rcx,2),%rax
  cmp    $0xb,%edx
  je     L162
  lea    (%rax,%rax,4),%rcx
  movslq 0x70(%rsp),%rax
  lea    (%rax,%rcx,2),%rax
  cmp    $0xc,%edx
  je     L162
  lea    (%rax,%rax,4),%rcx
  movslq 0x74(%rsp),%rax
  lea    (%rax,%rcx,2),%rax
  cmp    $0xd,%edx
  je     L162
  lea    (%rax,%rax,4),%rcx
  movslq 0x78(%rsp),%rax
  lea    (%rax,%rcx,2),%rax
  cmp    $0xf,%edx
  jne    L162
  lea    (%rax,%rax,4),%rdx
  movslq 0x7c(%rsp),%rax
  lea    (%rax,%rdx,2),%rax
  nopl   0x0(%rax,%rax,1)
L162:
  mov    0x88(%rsp),%rdx
  sub    %fs:0x28,%rdx
  jne    L349
  add    $0x98,%rsp
  ret
L433:
  mov    $0x4,%edx
L107:
  movslq %edx,%rcx
  lea    0x1(%rdx),%edi
  movdqu -0xc(%rsp,%rcx,4),%xmm0
  mov    %edi,%eax
  shr    $0x2,%eax
  pshufd $0x1b,%xmm0,%xmm0
  movaps %xmm0,0x40(%rsp)
L498:
  shl    $0x2,%eax
  mov    %edx,%esi
  sub    %eax,%esi
  cmp    %edi,%eax
  je     L412
  movslq %esi,%rdi
  movslq %eax,%rcx
  add    $0x1,%eax
  mov    (%rsp,%rdi,4),%edi
  mov    %edi,0x40(%rsp,%rcx,4)
  lea    -0x1(%rsi),%ecx
  test   %esi,%esi
  je     L412
L202:
  movslq %ecx,%rdi
  movslq %eax,%rsi
  add    $0x1,%eax
  mov    (%rsp,%rdi,4),%edi
  mov    %edi,0x40(%rsp,%rsi,4)
  lea    -0x1(%rcx),%esi
  test   %ecx,%ecx
  je     L502
  movslq %esi,%rsi
  cltq
  mov    (%rsp,%rsi,4),%ecx
  mov    %ecx,0x40(%rsp,%rax,4)
L502:
  movslq 0x40(%rsp),%rax
  lea    (%rax,%rax,4),%rcx
  movslq 0x44(%rsp),%rax
  lea    (%rax,%rcx,2),%rax
  cmp    $0x1,%edx
  jne    L15
  jmp    L162
  nopl   0x0(%rax)
L276:
  xor    %eax,%eax
  jmp    L162
L20:
  mov    $0x1,%edx
L457:
  movslq %edx,%rax
  lea    -0x1(%rdx),%ecx
  mov    (%rsp,%rax,4),%eax
  mov    %eax,0x40(%rsp)
  mov    $0x1,%eax
  jmp    L202
L5:
  mov    $0x2,%edx
  jmp    L457
L131:
  mov    $0x3,%edx
  jmp    L107
L66:
  mov    $0x5,%edx
  jmp    L107
L12:
  mov    $0xc,%edx
  jmp    L144
L244:
  mov    $0x6,%edx
  jmp    L107
L17:
  mov    $0x7,%edx
  jmp    L144
L170:
  mov    $0x8,%edx
  jmp    L144
L160:
  mov    $0x9,%edx
  jmp    L144
L331:
  mov    $0xa,%edx
  jmp    L144
L21:
  mov    $0xb,%edx
  jmp    L144
L332:
  mov    $0xd,%edx
  jmp    L144
L123:
  mov    $0xe,%edx
  jmp    L144
  nopl   (%rax)
L187:
  cltq
  jmp    L162
L349:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
unsigned long tobin(int intgr) {
  int bin[16], tmp[16];
  int i = 0, j, k;
  unsigned long binary = 0;
  while (intgr != 0) {
    bin[i] = intgr % 2;
    intgr = intgr / 2;
    i++;
  }
  i--;
  for (j = 0; i >= 0; i--, j++) {
    tmp[j] = bin[i];
  }
  j--;
  for (i = 0; i <= j; i++) {
    binary *= 10;
    binary += tmp[i];
  }
  return binary;
}
```