user: 请将以下的汇编代码转换成C语言代码：

```asm
<aes_expandEncKey>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x18,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    -0x18(%rbp),%rax
  add    $0x74,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <rj_sbox@plt>
  mov    %eax,%edx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  xor    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  xor    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x78,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <rj_sbox@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x7c,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <rj_sbox@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x70,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <rj_sbox@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0xc,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  lea    (%rax,%rax,1),%ecx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  sar    $0x7,%eax
  and    $0x1,%eax
  mov    %eax,%edx
  mov    %edx,%eax
  add    %eax,%eax
  add    %edx,%eax
  lea    0x0(,%rax,8),%edx
  add    %edx,%eax
  xor    %eax,%ecx
  mov    %ecx,%edx
  mov    -0x20(%rbp),%rax
  mov    %edx,(%rax)
  mov    $0x4,%ebx
  jmp    L37
L22:
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  movslq %ebx,%rax
  shl    $0x2,%rax
  lea    -0x10(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rsi
  mov    -0x18(%rbp),%rax
  add    %rsi,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  movslq %ebx,%rax
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  movslq %ebx,%rax
  shl    $0x2,%rax
  lea    -0xc(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  movslq %ebx,%rax
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rsi
  mov    -0x18(%rbp),%rax
  add    %rsi,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  movslq %ebx,%rax
  add    $0x2,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  movslq %ebx,%rax
  shl    $0x2,%rax
  lea    -0x8(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  movslq %ebx,%rax
  add    $0x2,%rax
  lea    0x0(,%rax,4),%rsi
  mov    -0x18(%rbp),%rax
  add    %rsi,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  movslq %ebx,%rax
  add    $0x3,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  movslq %ebx,%rax
  shl    $0x2,%rax
  lea    -0x4(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  movslq %ebx,%rax
  add    $0x3,%rax
  lea    0x0(,%rax,4),%rsi
  mov    -0x18(%rbp),%rax
  add    %rsi,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  add    $0x4,%ebx
L37:
  cmp    $0xf,%ebx
  jle    L22
  mov    -0x18(%rbp),%rax
  add    $0x30,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <rj_sbox@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x40,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x40,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x34,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <rj_sbox@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x44,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x44,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x38,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <rj_sbox@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x48,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x48,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x3c,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <rj_sbox@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x4c,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x4c,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    $0x14,%ebx
  jmp    L0
L30:
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  movslq %ebx,%rax
  shl    $0x2,%rax
  lea    -0x10(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  movslq %ebx,%rax
  lea    0x0(,%rax,4),%rsi
  mov    -0x18(%rbp),%rax
  add    %rsi,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  movslq %ebx,%rax
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  movslq %ebx,%rax
  shl    $0x2,%rax
  lea    -0xc(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  movslq %ebx,%rax
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rsi
  mov    -0x18(%rbp),%rax
  add    %rsi,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  movslq %ebx,%rax
  add    $0x2,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  movslq %ebx,%rax
  shl    $0x2,%rax
  lea    -0x8(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  movslq %ebx,%rax
  add    $0x2,%rax
  lea    0x0(,%rax,4),%rsi
  mov    -0x18(%rbp),%rax
  add    %rsi,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  movslq %ebx,%rax
  add    $0x3,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%ecx
  movslq %ebx,%rax
  shl    $0x2,%rax
  lea    -0x4(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%edx
  movslq %ebx,%rax
  add    $0x3,%rax
  lea    0x0(,%rax,4),%rsi
  mov    -0x18(%rbp),%rax
  add    %rsi,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  add    $0x4,%ebx
L0:
  cmp    $0x1f,%ebx
  jle    L30
  nop
  nop
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

assistant: ```c
void aes_expandEncKey(uint8_t *k, uint8_t *rc) {
  register uint8_t i;
  k[0] ^= rj_sbox(k[29]) ^ (*rc);
  k[1] ^= rj_sbox(k[30]);
  k[2] ^= rj_sbox(k[31]);
  k[3] ^= rj_sbox(k[28]);
  *rc = (((*rc) << 1) ^ ((((*rc) >> 7) & 1) * 0x1b));
  for (i = 4; i < 16; i += 4)
    k[i] ^= k[i - 4], k[i + 1] ^= k[i - 3], k[i + 2] ^= k[i - 2], k[i + 3] ^= k[i - 1];
  k[16] ^= rj_sbox(k[12]);
  k[17] ^= rj_sbox(k[13]);
  k[18] ^= rj_sbox(k[14]);
  k[19] ^= rj_sbox(k[15]);
  for (i = 20; i < 32; i += 4)
    k[i] ^= k[i - 4], k[i + 1] ^= k[i - 3], k[i + 2] ^= k[i - 2], k[i + 3] ^= k[i - 1];
}
```