user: 这段汇编代码用C语言表示是什么样的：

```asm
<TEM_DEC>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x90,%rsp
  mov    %rdi,-0x58(%rbp)
  mov    %esi,%eax
  mov    %rdx,-0x68(%rbp)
  mov    %rcx,-0x70(%rbp)
  mov    %r8,-0x78(%rbp)
  mov    %r9,-0x80(%rbp)
  mov    %al,-0x5c(%rbp)
  mov    0x10(%rbp),%rax
  mov    %rax,-0x88(%rbp)
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0x44(%rbp)
  jmp    L129
L137:
  mov    -0x44(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x58(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x44(%rbp),%eax
  cltq
  mov    %dl,-0x30(%rbp,%rax,1)
  addl   $0x1,-0x44(%rbp)
L129:
  cmpl   $0x17,-0x44(%rbp)
  jle    L137
  movzbl -0x5c(%rbp),%eax
  mov    %al,-0x18(%rbp)
  movb   $0x0,-0x17(%rbp)
  movb   $0x0,-0x16(%rbp)
  movl   $0x0,-0x48(%rbp)
  jmp    L80
L109:
  mov    -0x48(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  mov    -0x48(%rbp),%edx
  lea    0x1b(%rdx),%ecx
  movzbl (%rax),%edx
  movslq %ecx,%rax
  mov    %dl,-0x30(%rbp,%rax,1)
  addl   $0x1,-0x48(%rbp)
L80:
  cmpl   $0xc,-0x48(%rbp)
  jle    L109
  lea    -0x30(%rbp),%rax
  mov    $0x0,%esi
  mov    %rax,%rdi
  call   <minalpher_P@plt>
  movl   $0x0,-0x40(%rbp)
  jmp    L41
L72:
  mov    -0x40(%rbp),%eax
  cltq
  movzbl -0x30(%rbp,%rax,1),%edx
  mov    -0x40(%rbp),%eax
  movslq %eax,%rcx
  mov    -0x58(%rbp),%rax
  add    %rcx,%rax
  movzbl (%rax),%eax
  xor    %eax,%edx
  mov    -0x40(%rbp),%eax
  cltq
  mov    %dl,-0x30(%rbp,%rax,1)
  addl   $0x1,-0x40(%rbp)
L41:
  cmpl   $0x17,-0x40(%rbp)
  jle    L72
  movzbl -0x18(%rbp),%eax
  xor    -0x5c(%rbp),%al
  mov    %al,-0x18(%rbp)
  movzbl -0x17(%rbp),%eax
  mov    %al,-0x17(%rbp)
  movzbl -0x16(%rbp),%eax
  mov    %al,-0x16(%rbp)
  movl   $0x0,-0x48(%rbp)
  jmp    L123
L132:
  mov    -0x48(%rbp),%eax
  add    $0x1b,%eax
  cltq
  movzbl -0x30(%rbp,%rax,1),%ecx
  mov    -0x48(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x68(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%edx
  mov    -0x48(%rbp),%eax
  add    $0x1b,%eax
  xor    %ecx,%edx
  cltq
  mov    %dl,-0x30(%rbp,%rax,1)
  addl   $0x1,-0x48(%rbp)
L123:
  cmpl   $0xc,-0x48(%rbp)
  jle    L132
  movl   $0x0,-0x3c(%rbp)
  jmp    L145
L18:
  mov    -0x3c(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x80(%rbp),%rax
  add    %rdx,%rax
  mov    -0x3c(%rbp),%edx
  movslq %edx,%rcx
  mov    -0x88(%rbp),%rdx
  add    %rcx,%rdx
  movzbl (%rax),%eax
  mov    %al,(%rdx)
  addl   $0x1,-0x3c(%rbp)
L145:
  cmpl   $0x1f,-0x3c(%rbp)
  jle    L18
  mov    -0x78(%rbp),%rdx
  mov    -0x70(%rbp),%rcx
  lea    -0x30(%rbp),%rax
  mov    %rcx,%rsi
  mov    %rax,%rdi
  call   <TweakGen@plt>
  movl   $0x0,-0x38(%rbp)
  jmp    L69
L114:
  mov    -0x38(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%ecx
  mov    -0x38(%rbp),%eax
  cltq
  movzbl -0x30(%rbp,%rax,1),%edx
  mov    -0x38(%rbp),%eax
  movslq %eax,%rsi
  mov    -0x88(%rbp),%rax
  add    %rsi,%rax
  xor    %ecx,%edx
  mov    %dl,(%rax)
  addl   $0x1,-0x38(%rbp)
L69:
  cmpl   $0x1f,-0x38(%rbp)
  jle    L114
  mov    -0x88(%rbp),%rax
  mov    $0x1,%esi
  mov    %rax,%rdi
  call   <minalpher_P@plt>
  movl   $0x0,-0x34(%rbp)
  jmp    L64
L43:
  mov    -0x34(%rbp),%eax
  movslq %eax,%rdx
  mov    -0x88(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%ecx
  mov    -0x34(%rbp),%eax
  cltq
  movzbl -0x30(%rbp,%rax,1),%edx
  mov    -0x34(%rbp),%eax
  movslq %eax,%rsi
  mov    -0x88(%rbp),%rax
  add    %rsi,%rax
  xor    %ecx,%edx
  mov    %dl,(%rax)
  addl   $0x1,-0x34(%rbp)
L64:
  cmpl   $0x1f,-0x34(%rbp)
  jle    L43
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L128
  call   <__stack_chk_fail@plt>
L128:
  leave
  ret
```

assistant: ```c
void TEM_DEC(const unsigned char *_K, unsigned char _flag, const unsigned char *_N, unsigned long long _i, unsigned long long _j, unsigned char *_C, unsigned char *M_) {
  int d;
  unsigned char L[32];
  do {
    int u;
    for (u = 0; u < 24; u++)
      L[u] = _K[u];
  } while (0);
  L[24] = _flag;
  L[24 + 1] = 0x00;
  L[24 + 2] = 0x00;
  for (d = 0; d < 13; d++)
    L[d + 24 + 3] = _N[d];
  minalpher_P(L, 0);
  do {
    int u;
    for (u = 0; u < 24; u++)
      L[u] ^= _K[u];
  } while (0);
  L[24] ^= _flag;
  L[24 + 1] ^= 0x00;
  L[24 + 2] ^= 0x00;
  for (d = 0; d < 13; d++)
    L[d + 24 + 3] ^= _N[d];
  do {
    int u;
    for (u = 0; u < 32; u++)
      M_[u] = _C[u];
  } while (0);
  TweakGen(L, _i, _j);
  do {
    int u;
    for (u = 0; u < 32; u++)
      M_[u] ^= L[u];
  } while (0);
  minalpher_P(M_, 1);
  do {
    int u;
    for (u = 0; u < 32; u++)
      M_[u] ^= L[u];
  } while (0);
}
```