user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<pls_give_me_a_name>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %esi,-0x1c(%rbp)
  mov    %edx,-0x20(%rbp)
  mov    %ecx,%eax
  mov    %al,-0x24(%rbp)
  mov    $0x4,%esi
  mov    $0x0,%edi
  call   <randomInt@plt>
  mov    %eax,-0x8(%rbp)
  cmpl   $0x3,-0x8(%rbp)
  je     L93
  cmpl   $0x3,-0x8(%rbp)
  jg     L105
  cmpl   $0x2,-0x8(%rbp)
  je     L42
  cmpl   $0x2,-0x8(%rbp)
  jg     L105
  cmpl   $0x0,-0x8(%rbp)
  je     L37
  cmpl   $0x1,-0x8(%rbp)
  je     L90
  jmp    L105
L45:
  nop
L37:
  mov    -0x1c(%rbp),%eax
  sub    $0x2,%eax
  mov    %eax,%esi
  mov    $0x1,%edi
  call   <randomInt@plt>
  mov    %eax,-0x4(%rbp)
  mov    -0x18(%rbp),%rax
  add    $0x8,%rax
  mov    (%rax),%rdx
  mov    -0x4(%rbp),%eax
  cltq
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x31,%al
  jne    L45
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x4(%rbp),%eax
  cltq
  add    %rax,%rdx
  movzbl -0x24(%rbp),%eax
  mov    %al,(%rdx)
  jmp    L105
L73:
  nop
L90:
  mov    -0x1c(%rbp),%eax
  sub    $0x2,%eax
  mov    %eax,%esi
  mov    $0x1,%edi
  call   <randomInt@plt>
  mov    %eax,-0x4(%rbp)
  mov    -0x20(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x10(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x4(%rbp),%eax
  cltq
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x31,%al
  jne    L73
  mov    -0x20(%rbp),%eax
  cltq
  shl    $0x3,%rax
  lea    -0x8(%rax),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x4(%rbp),%eax
  cltq
  add    %rax,%rdx
  movzbl -0x24(%rbp),%eax
  mov    %al,(%rdx)
  jmp    L105
L98:
  nop
L42:
  mov    -0x20(%rbp),%eax
  sub    $0x2,%eax
  mov    %eax,%esi
  mov    $0x1,%edi
  call   <randomInt@plt>
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  add    $0x1,%rax
  movzbl (%rax),%eax
  cmp    $0x31,%al
  jne    L98
  mov    -0x4(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  movzbl -0x24(%rbp),%edx
  mov    %dl,(%rax)
  jmp    L105
L68:
  nop
L93:
  mov    -0x20(%rbp),%eax
  sub    $0x2,%eax
  mov    %eax,%esi
  mov    $0x1,%edi
  call   <randomInt@plt>
  mov    %eax,-0x4(%rbp)
  mov    -0x4(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x1c(%rbp),%eax
  cltq
  sub    $0x2,%rax
  add    %rdx,%rax
  movzbl (%rax),%eax
  cmp    $0x31,%al
  jne    L68
  mov    -0x4(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x1c(%rbp),%eax
  cltq
  sub    $0x1,%rax
  add    %rax,%rdx
  movzbl -0x24(%rbp),%eax
  mov    %al,(%rdx)
  nop
L105:
  nop
  leave
  ret
```

assistant: ```c
void pls_give_me_a_name(char **map, int m, int n, char c) {
  int entry = randomInt(0, 4);
  int coordTmp;
  switch (entry) {
  case 0:
    do {
      coordTmp = randomInt(1, m - 2);
    } while (map[1][coordTmp] != '1');
    map[0][coordTmp] = c;
    break;
  case 1:
    do {
      coordTmp = randomInt(1, m - 2);
    } while (map[n - 2][coordTmp] != '1');
    map[n - 1][coordTmp] = c;
    break;
  case 2:
    do {
      coordTmp = randomInt(1, n - 2);
    } while (map[coordTmp][1] != '1');
    map[coordTmp][0] = c;
    break;
  case 3:
    do {
      coordTmp = randomInt(1, n - 2);
    } while (map[coordTmp][m - 2] != '1');
    map[coordTmp][m - 1] = c;
    break;
  }
}
```