user: Converte this assembly snippet into its equivalent C code:

```asm
<round_f_inverse>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x18(%rbp),%rax
  mov    0x10(%rax),%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  lea    0x10(%rax),%rdx
  mov    -0x4(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x18(%rbp),%rax
  mov    0x4(%rax),%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    -0x18(%rbp),%rax
  mov    0x14(%rax),%eax
  mov    %eax,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x14(%rax),%rdx
  mov    -0x4(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x18(%rbp),%rax
  mov    0x8(%rax),%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x18(%rbp),%rax
  lea    0x8(%rax),%rdx
  mov    -0x18(%rbp),%rax
  mov    0x18(%rax),%eax
  mov    %eax,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x18(%rax),%rdx
  mov    -0x4(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x18(%rbp),%rax
  mov    0xc(%rax),%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x18(%rbp),%rax
  lea    0xc(%rax),%rdx
  mov    -0x18(%rbp),%rax
  mov    0x1c(%rax),%eax
  mov    %eax,(%rdx)
  mov    -0x18(%rbp),%rax
  lea    0x1c(%rax),%rdx
  mov    -0x4(%rbp),%eax
  mov    %eax,(%rdx)
  mov    -0x18(%rbp),%rax
  mov    (%rax),%edx
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  xor    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  xor    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  xor    %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  shl    $0x8,%eax
  mov    %eax,%edx
  mov    -0x4(%rbp),%eax
  sar    $0x8,%eax
  or     %edx,%eax
  mov    %eax,-0x4(%rbp)
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  xor    -0x4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  xor    -0x4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x14,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  xor    -0x4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  xor    -0x4(%rbp),%eax
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x1c,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  lea    0x1c(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <speckey_inverse@plt>
  mov    -0x20(%rbp),%rax
  add    $0x7c,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x1c,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x78,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  lea    0x1c(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <speckey_inverse@plt>
  mov    -0x20(%rbp),%rax
  add    $0x74,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x1c,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x70,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  lea    0x1c(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <speckey_inverse@plt>
  mov    -0x20(%rbp),%rax
  add    $0x6c,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x1c,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x68,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  lea    0x1c(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <speckey_inverse@plt>
  mov    -0x20(%rbp),%rax
  add    $0x64,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x1c,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x60,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x18,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  lea    0x14(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <speckey_inverse@plt>
  mov    -0x20(%rbp),%rax
  add    $0x5c,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x14,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x58,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  lea    0x14(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <speckey_inverse@plt>
  mov    -0x20(%rbp),%rax
  add    $0x54,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x14,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x50,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  lea    0x14(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <speckey_inverse@plt>
  mov    -0x20(%rbp),%rax
  add    $0x4c,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x14,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x48,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  lea    0x14(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <speckey_inverse@plt>
  mov    -0x20(%rbp),%rax
  add    $0x44,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x14,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x20(%rbp),%rax
  add    $0x40,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%ecx
  mov    -0x18(%rbp),%rax
  add    $0x10,%rax
  xor    %ecx,%edx
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  lea    0xc(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <speckey_inverse@plt>
  mov    -0x20(%rbp),%rax
  add    $0x3c,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@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
  add    $0x38,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@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
  lea    0xc(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <speckey_inverse@plt>
  mov    -0x20(%rbp),%rax
  add    $0x34,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@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
  add    $0x30,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@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
  lea    0xc(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <speckey_inverse@plt>
  mov    -0x20(%rbp),%rax
  add    $0x2c,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@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
  add    $0x28,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@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
  lea    0xc(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <speckey_inverse@plt>
  mov    -0x20(%rbp),%rax
  add    $0x24,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@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
  add    $0x20,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@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
  lea    0x4(%rax),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <speckey_inverse@plt>
  mov    -0x20(%rbp),%rax
  add    $0x1c,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@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    -0x20(%rbp),%rax
  add    $0x18,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  xor    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <speckey_inverse@plt>
  mov    -0x20(%rbp),%rax
  add    $0x14,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@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    -0x20(%rbp),%rax
  add    $0x10,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  xor    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <speckey_inverse@plt>
  mov    -0x20(%rbp),%rax
  add    $0xc,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@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    -0x20(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  xor    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,(%rax)
  mov    -0x18(%rbp),%rax
  lea    0x4(%rax),%rdx
  mov    -0x18(%rbp),%rax
  mov    %rdx,%rsi
  mov    %rax,%rdi
  call   <speckey_inverse@plt>
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@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    -0x20(%rbp),%rax
  mov    (%rax),%eax
  mov    %eax,%edi
  call   <READ_ROUND_KEY_WORD@plt>
  mov    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    (%rax),%eax
  xor    %eax,%edx
  mov    -0x18(%rbp),%rax
  mov    %edx,(%rax)
  nop
  leave
  ret
```

assistant: ```c
void round_f_inverse(uint16_t *block, uint16_t *roundKeys) {
  uint16_t temp;
  temp = block[0];
  block[0] = block[4];
  block[4] = temp;
  temp = block[1];
  block[1] = block[5];
  block[5] = temp;
  temp = block[2];
  block[2] = block[6];
  block[6] = temp;
  temp = block[3];
  block[3] = block[7];
  block[7] = temp;
  temp = block[0] ^ block[1] ^ block[2] ^ block[3];
  temp = (((temp) << (8)) | ((temp) >> (16 - 8)));
  block[4] ^= block[2] ^ temp;
  block[5] ^= block[1] ^ temp;
  block[6] ^= block[0] ^ temp;
  block[7] ^= block[3] ^ temp;
  speckey_inverse(&block[6], &block[7]);
  block[7] ^= READ_ROUND_KEY_WORD(roundKeys[31]);
  block[6] ^= READ_ROUND_KEY_WORD(roundKeys[30]);
  speckey_inverse(&block[6], &block[7]);
  block[7] ^= READ_ROUND_KEY_WORD(roundKeys[29]);
  block[6] ^= READ_ROUND_KEY_WORD(roundKeys[28]);
  speckey_inverse(&block[6], &block[7]);
  block[7] ^= READ_ROUND_KEY_WORD(roundKeys[27]);
  block[6] ^= READ_ROUND_KEY_WORD(roundKeys[26]);
  speckey_inverse(&block[6], &block[7]);
  block[7] ^= READ_ROUND_KEY_WORD(roundKeys[25]);
  block[6] ^= READ_ROUND_KEY_WORD(roundKeys[24]);
  speckey_inverse(&block[4], &block[5]);
  block[5] ^= READ_ROUND_KEY_WORD(roundKeys[23]);
  block[4] ^= READ_ROUND_KEY_WORD(roundKeys[22]);
  speckey_inverse(&block[4], &block[5]);
  block[5] ^= READ_ROUND_KEY_WORD(roundKeys[21]);
  block[4] ^= READ_ROUND_KEY_WORD(roundKeys[20]);
  speckey_inverse(&block[4], &block[5]);
  block[5] ^= READ_ROUND_KEY_WORD(roundKeys[19]);
  block[4] ^= READ_ROUND_KEY_WORD(roundKeys[18]);
  speckey_inverse(&block[4], &block[5]);
  block[5] ^= READ_ROUND_KEY_WORD(roundKeys[17]);
  block[4] ^= READ_ROUND_KEY_WORD(roundKeys[16]);
  speckey_inverse(&block[2], &block[3]);
  block[3] ^= READ_ROUND_KEY_WORD(roundKeys[15]);
  block[2] ^= READ_ROUND_KEY_WORD(roundKeys[14]);
  speckey_inverse(&block[2], &block[3]);
  block[3] ^= READ_ROUND_KEY_WORD(roundKeys[13]);
  block[2] ^= READ_ROUND_KEY_WORD(roundKeys[12]);
  speckey_inverse(&block[2], &block[3]);
  block[3] ^= READ_ROUND_KEY_WORD(roundKeys[11]);
  block[2] ^= READ_ROUND_KEY_WORD(roundKeys[10]);
  speckey_inverse(&block[2], &block[3]);
  block[3] ^= READ_ROUND_KEY_WORD(roundKeys[9]);
  block[2] ^= READ_ROUND_KEY_WORD(roundKeys[8]);
  speckey_inverse(&block[0], &block[1]);
  block[1] ^= READ_ROUND_KEY_WORD(roundKeys[7]);
  block[0] ^= READ_ROUND_KEY_WORD(roundKeys[6]);
  speckey_inverse(&block[0], &block[1]);
  block[1] ^= READ_ROUND_KEY_WORD(roundKeys[5]);
  block[0] ^= READ_ROUND_KEY_WORD(roundKeys[4]);
  speckey_inverse(&block[0], &block[1]);
  block[1] ^= READ_ROUND_KEY_WORD(roundKeys[3]);
  block[0] ^= READ_ROUND_KEY_WORD(roundKeys[2]);
  speckey_inverse(&block[0], &block[1]);
  block[1] ^= READ_ROUND_KEY_WORD(roundKeys[1]);
  block[0] ^= READ_ROUND_KEY_WORD(roundKeys[0]);
}
```