user: Translate the below assembly code into C programming language:

```asm
<Deplacement>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x18(%rbp)
  mov    %rsi,-0x20(%rbp)
  mov    %edx,%eax
  mov    %al,-0x24(%rbp)
  movl   $0x0,-0x4(%rbp)
  cmpb   $0x47,-0x24(%rbp)
  jne    L54
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  sub    $0x1,%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  test   %eax,%eax
  je     L231
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  sub    $0x1,%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x3,%eax
  je     L231
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  sub    $0x1,%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x2,%eax
  je     L471
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  sub    $0x1,%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x6,%eax
  jne    L54
L471:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  sub    $0x2,%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  test   %eax,%eax
  je     L231
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  sub    $0x2,%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x3,%eax
  jne    L54
L231:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  sub    $0x1,%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x2,%eax
  je     L585
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  sub    $0x1,%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x6,%eax
  jne    L65
L585:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  sub    $0x2,%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x3,%eax
  jne    L348
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  sub    $0x2,%eax
  cltq
  movl   $0x6,(%rdx,%rax,4)
  jmp    L65
L348:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  sub    $0x2,%eax
  cltq
  movl   $0x2,(%rdx,%rax,4)
L65:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  sub    $0x1,%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x3,%eax
  je     L29
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  sub    $0x1,%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x6,%eax
  jne    L590
L29:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  sub    $0x1,%eax
  cltq
  movl   $0x5,(%rdx,%rax,4)
  jmp    L87
L590:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  sub    $0x1,%eax
  cltq
  movl   $0x4,(%rdx,%rax,4)
L87:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x5,%eax
  jne    L257
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  movl   $0x3,(%rdx,%rax,4)
  jmp    L522
L257:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  movl   $0x0,(%rdx,%rax,4)
L522:
  movl   $0x1,-0x4(%rbp)
L54:
  cmpb   $0x44,-0x24(%rbp)
  jne    L130
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  add    $0x1,%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  test   %eax,%eax
  je     L132
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  add    $0x1,%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x3,%eax
  je     L132
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  add    $0x1,%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x2,%eax
  je     L115
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  add    $0x1,%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x6,%eax
  jne    L130
L115:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  add    $0x2,%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  test   %eax,%eax
  je     L132
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  add    $0x2,%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x3,%eax
  jne    L130
L132:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  add    $0x1,%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x2,%eax
  je     L400
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  add    $0x1,%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x6,%eax
  jne    L620
L400:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  add    $0x2,%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x3,%eax
  jne    L126
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  add    $0x2,%eax
  cltq
  movl   $0x6,(%rdx,%rax,4)
  jmp    L620
L126:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  add    $0x2,%eax
  cltq
  movl   $0x2,(%rdx,%rax,4)
L620:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  add    $0x1,%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x3,%eax
  je     L623
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  add    $0x1,%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x6,%eax
  jne    L113
L623:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  add    $0x1,%eax
  cltq
  movl   $0x5,(%rdx,%rax,4)
  jmp    L34
L113:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  add    $0x1,%eax
  cltq
  movl   $0x4,(%rdx,%rax,4)
L34:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x5,%eax
  jne    L253
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  movl   $0x3,(%rdx,%rax,4)
  jmp    L490
L253:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  movl   $0x0,(%rdx,%rax,4)
L490:
  movl   $0x1,-0x4(%rbp)
L130:
  cmpb   $0x48,-0x24(%rbp)
  jne    L218
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    -0x64(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  test   %eax,%eax
  je     L172
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    -0x64(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x3,%eax
  je     L172
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    -0x64(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x2,%eax
  je     L440
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    -0x64(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x6,%eax
  jne    L218
L440:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    -0xc8(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  test   %eax,%eax
  je     L172
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    -0xc8(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x3,%eax
  jne    L218
L172:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    -0x64(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x2,%eax
  je     L92
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    -0x64(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x6,%eax
  jne    L627
L92:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    -0xc8(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x3,%eax
  jne    L164
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    -0xc8(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  movl   $0x6,(%rdx,%rax,4)
  jmp    L627
L164:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    -0xc8(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  movl   $0x2,(%rdx,%rax,4)
L627:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    -0x64(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x3,%eax
  je     L579
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    -0x64(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x6,%eax
  jne    L391
L579:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    -0x64(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  movl   $0x5,(%rdx,%rax,4)
  jmp    L491
L391:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    -0x64(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  movl   $0x4,(%rdx,%rax,4)
L491:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x5,%eax
  jne    L13
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  movl   $0x3,(%rdx,%rax,4)
  jmp    L554
L13:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  movl   $0x0,(%rdx,%rax,4)
L554:
  movl   $0x1,-0x4(%rbp)
L218:
  cmpb   $0x42,-0x24(%rbp)
  jne    L44
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  cltq
  lea    0x1(%rax),%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  test   %eax,%eax
  je     L482
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  cltq
  lea    0x1(%rax),%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x3,%eax
  je     L482
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  cltq
  lea    0x1(%rax),%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x2,%eax
  je     L96
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  cltq
  lea    0x1(%rax),%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x6,%eax
  jne    L44
L96:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    0xc8(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  test   %eax,%eax
  je     L482
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    0xc8(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x3,%eax
  jne    L44
L482:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  cltq
  lea    0x1(%rax),%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x2,%eax
  je     L639
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  cltq
  lea    0x1(%rax),%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x6,%eax
  jne    L580
L639:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    0xc8(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x3,%eax
  jne    L587
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    0xc8(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  movl   $0x6,(%rdx,%rax,4)
  jmp    L580
L587:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    0xc8(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  movl   $0x2,(%rdx,%rax,4)
L580:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  cltq
  lea    0x1(%rax),%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x3,%eax
  je     L167
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  cltq
  lea    0x1(%rax),%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x6,%eax
  jne    L233
L167:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  cltq
  lea    0x1(%rax),%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  movl   $0x5,(%rdx,%rax,4)
  jmp    L419
L233:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  cltq
  lea    0x1(%rax),%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  movl   $0x4,(%rdx,%rax,4)
L419:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  mov    (%rdx,%rax,4),%eax
  cmp    $0x5,%eax
  jne    L168
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  movl   $0x3,(%rdx,%rax,4)
  jmp    L221
L168:
  mov    -0x20(%rbp),%rax
  add    $0x4,%rax
  mov    (%rax),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  shl    $0x2,%rax
  add    %rdx,%rax
  lea    0x0(,%rax,4),%rdx
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rax,%rdx
  mov    -0x20(%rbp),%rax
  mov    (%rax),%eax
  cltq
  movl   $0x0,(%rdx,%rax,4)
L221:
  movl   $0x1,-0x4(%rbp)
L44:
  mov    -0x4(%rbp),%eax
  pop    %rbp
  ret
```

assistant: ```c
int Deplacement(int (*m)[25], int *pos, char direction) {
  int retour = 0;
  if (direction == 'G') {
    if (((m[pos[1]][pos[0] - 1] == 0) || (m[pos[1]][pos[0] - 1] == 3)) || (((m[pos[1]][pos[0] - 1] == 2) || (m[pos[1]][pos[0] - 1] == 6)) && ((m[pos[1]][pos[0] - 2] == 0) || (m[pos[1]][pos[0] - 2] == 3)))) {
      if ((m[pos[1]][pos[0] - 1] == 2) || (m[pos[1]][pos[0] - 1] == 6)) {
        if (m[pos[1]][pos[0] - 2] == 3)
          m[pos[1]][pos[0] - 2] = 6;
        else
          m[pos[1]][pos[0] - 2] = 2;
      }
      if ((m[pos[1]][pos[0] - 1] == 3) || (m[pos[1]][pos[0] - 1] == 6))
        m[pos[1]][pos[0] - 1] = 5;
      else
        m[pos[1]][pos[0] - 1] = 4;
      if (m[pos[1]][pos[0]] == 5)
        m[pos[1]][pos[0]] = 3;
      else
        m[pos[1]][pos[0]] = 0;
      retour = 1;
    }
  }
  if (direction == 'D') {
    if (((m[pos[1]][pos[0] + 1] == 0) || (m[pos[1]][pos[0] + 1] == 3)) || (((m[pos[1]][pos[0] + 1] == 2) || (m[pos[1]][pos[0] + 1] == 6)) && ((m[pos[1]][pos[0] + 2] == 0) || (m[pos[1]][pos[0] + 2] == 3)))) {
      if ((m[pos[1]][pos[0] + 1] == 2) || (m[pos[1]][pos[0] + 1] == 6)) {
        if (m[pos[1]][pos[0] + 2] == 3)
          m[pos[1]][pos[0] + 2] = 6;
        else
          m[pos[1]][pos[0] + 2] = 2;
      }
      if ((m[pos[1]][pos[0] + 1] == 3) || (m[pos[1]][pos[0] + 1] == 6))
        m[pos[1]][pos[0] + 1] = 5;
      else
        m[pos[1]][pos[0] + 1] = 4;
      if (m[pos[1]][pos[0]] == 5)
        m[pos[1]][pos[0]] = 3;
      else
        m[pos[1]][pos[0]] = 0;
      retour = 1;
    }
  }
  if (direction == 'H') {
    if (((m[pos[1] - 1][pos[0]] == 0) || (m[pos[1] - 1][pos[0]] == 3)) || (((m[pos[1] - 1][pos[0]] == 2) || (m[pos[1] - 1][pos[0]] == 6)) && ((m[pos[1] - 2][pos[0]] == 0) || (m[pos[1] - 2][pos[0]] == 3)))) {
      if ((m[pos[1] - 1][pos[0]] == 2) || (m[pos[1] - 1][pos[0]] == 6)) {
        if (m[pos[1] - 2][pos[0]] == 3)
          m[pos[1] - 2][pos[0]] = 6;
        else
          m[pos[1] - 2][pos[0]] = 2;
      }
      if ((m[pos[1] - 1][pos[0]] == 3) || (m[pos[1] - 1][pos[0]] == 6))
        m[pos[1] - 1][pos[0]] = 5;
      else
        m[pos[1] - 1][pos[0]] = 4;
      if (m[pos[1]][pos[0]] == 5)
        m[pos[1]][pos[0]] = 3;
      else
        m[pos[1]][pos[0]] = 0;
      retour = 1;
    }
  }
  if (direction == 'B') {
    if (((m[pos[1] + 1][pos[0]] == 0) || (m[pos[1] + 1][pos[0]] == 3)) || (((m[pos[1] + 1][pos[0]] == 2) || (m[pos[1] + 1][pos[0]] == 6)) && ((m[pos[1] + 2][pos[0]] == 0) || (m[pos[1] + 2][pos[0]] == 3)))) {
      if ((m[pos[1] + 1][pos[0]] == 2) || (m[pos[1] + 1][pos[0]] == 6)) {
        if (m[pos[1] + 2][pos[0]] == 3)
          m[pos[1] + 2][pos[0]] = 6;
        else
          m[pos[1] + 2][pos[0]] = 2;
      }
      if ((m[pos[1] + 1][pos[0]] == 3) || (m[pos[1] + 1][pos[0]] == 6))
        m[pos[1] + 1][pos[0]] = 5;
      else
        m[pos[1] + 1][pos[0]] = 4;
      if (m[pos[1]][pos[0]] == 5)
        m[pos[1]][pos[0]] = 3;
      else
        m[pos[1]][pos[0]] = 0;
      retour = 1;
    }
  }
  return retour;
}
```