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

```asm
<process_map>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %esi,-0x1c(%rbp)
  mov    %edx,-0x20(%rbp)
  mov    -0x1c(%rbp),%edx
  mov    %edx,%eax
  shl    $0x2,%eax
  add    %edx,%eax
  shl    $0x4,%eax
  mov    %eax,%edx
  mov    -0x20(%rbp),%eax
  add    %edx,%eax
  movslq %eax,%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  mov    %al,-0x1(%rbp)
  cmpl   $0x0,-0x20(%rbp)
  jle    L60
  movsbl -0x1(%rbp),%edx
  mov    -0x20(%rbp),%eax
  lea    -0x1(%rax),%edi
  mov    -0x1c(%rbp),%esi
  mov    -0x18(%rbp),%rax
  mov    $0x60,%r8d
  mov    %edx,%ecx
  mov    %edi,%edx
  mov    %rax,%rdi
  call   <seek_exit@plt>
  test   %eax,%eax
  jne    L34
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <clear_flags@plt>
  movsbl -0x1(%rbp),%edx
  mov    -0x20(%rbp),%eax
  lea    -0x1(%rax),%edi
  mov    -0x1c(%rbp),%esi
  mov    -0x18(%rbp),%rax
  mov    %edx,%ecx
  mov    %edi,%edx
  mov    %rax,%rdi
  call   <mark_area_disabled@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <flag_visited_as_disabled@plt>
  jmp    L60
L34:
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <clear_flags@plt>
L60:
  cmpl   $0x4e,-0x20(%rbp)
  jg     L3
  movsbl -0x1(%rbp),%edx
  mov    -0x20(%rbp),%eax
  lea    0x1(%rax),%edi
  mov    -0x1c(%rbp),%esi
  mov    -0x18(%rbp),%rax
  mov    $0x40,%r8d
  mov    %edx,%ecx
  mov    %edi,%edx
  mov    %rax,%rdi
  call   <seek_exit@plt>
  test   %eax,%eax
  jne    L91
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <clear_flags@plt>
  movsbl -0x1(%rbp),%edx
  mov    -0x20(%rbp),%eax
  lea    0x1(%rax),%edi
  mov    -0x1c(%rbp),%esi
  mov    -0x18(%rbp),%rax
  mov    %edx,%ecx
  mov    %edi,%edx
  mov    %rax,%rdi
  call   <mark_area_disabled@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <flag_visited_as_disabled@plt>
  jmp    L3
L91:
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <clear_flags@plt>
L3:
  cmpl   $0x0,-0x1c(%rbp)
  jle    L112
  movsbl -0x1(%rbp),%ecx
  mov    -0x1c(%rbp),%eax
  lea    -0x1(%rax),%esi
  mov    -0x20(%rbp),%edx
  mov    -0x18(%rbp),%rax
  mov    $0x20,%r8d
  mov    %rax,%rdi
  call   <seek_exit@plt>
  test   %eax,%eax
  jne    L25
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <clear_flags@plt>
  movsbl -0x1(%rbp),%ecx
  mov    -0x1c(%rbp),%eax
  lea    -0x1(%rax),%esi
  mov    -0x20(%rbp),%edx
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <mark_area_disabled@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <flag_visited_as_disabled@plt>
  jmp    L112
L25:
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <clear_flags@plt>
L112:
  cmpl   $0x14,-0x1c(%rbp)
  jg     L59
  movsbl -0x1(%rbp),%ecx
  mov    -0x1c(%rbp),%eax
  lea    0x1(%rax),%esi
  mov    -0x20(%rbp),%edx
  mov    -0x18(%rbp),%rax
  mov    $0x0,%r8d
  mov    %rax,%rdi
  call   <seek_exit@plt>
  test   %eax,%eax
  jne    L114
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <clear_flags@plt>
  movsbl -0x1(%rbp),%ecx
  mov    -0x1c(%rbp),%eax
  lea    0x1(%rax),%esi
  mov    -0x20(%rbp),%edx
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <mark_area_disabled@plt>
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <flag_visited_as_disabled@plt>
  jmp    L59
L114:
  mov    -0x18(%rbp),%rax
  mov    %rax,%rdi
  call   <clear_flags@plt>
L59:
  nop
  leave
  ret
```

assistant: ```c
void process_map(char *map, int start_y, int start_x) {
  char player = map[start_y * 80 + start_x];
  {
    if ((3) <= 2)
      printf("Processing map from %d, %d, player %d\n", start_x, start_y, player);
  };
  if (start_x > 0)
    if (!seek_exit(map, start_y, start_x - 1, player, (3 << 5))) {
      clear_flags(map);
      mark_area_disabled(map, start_y, start_x - 1, player);
      flag_visited_as_disabled(map);
    } else
      clear_flags(map);
  if (start_x < 80 - 1)
    if (!seek_exit(map, start_y, start_x + 1, player, (2 << 5))) {
      clear_flags(map);
      mark_area_disabled(map, start_y, start_x + 1, player);
      flag_visited_as_disabled(map);
    } else
      clear_flags(map);
  if (start_y > 0)
    if (!seek_exit(map, start_y - 1, start_x, player, (1 << 5))) {
      clear_flags(map);
      mark_area_disabled(map, start_y - 1, start_x, player);
      flag_visited_as_disabled(map);
    } else
      clear_flags(map);
  if (start_y < 22 - 1)
    if (!seek_exit(map, start_y + 1, start_x, player, (0 << 5))) {
      clear_flags(map);
      mark_area_disabled(map, start_y + 1, start_x, player);
      flag_visited_as_disabled(map);
    } else
      clear_flags(map);
}
```