user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<drawMaze>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  add    $0xffffffffffffff80,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  mov    $0x0,%eax
  call   <OledClearBuffer@plt>
  movl   $0x1b,-0x70(%rbp)
  movl   $0x1e,-0x6c(%rbp)
  movl   $0x2c,-0x68(%rbp)
  movl   $0x2f,-0x64(%rbp)
  movl   $0x46,-0x60(%rbp)
  movl   $0x49,-0x5c(%rbp)
  movl   $0x6b,-0x58(%rbp)
  movl   $0x6e,-0x54(%rbp)
  movl   $0x7f,-0x50(%rbp)
  movl   $0x32,-0x4c(%rbp)
  movl   $0x35,-0x48(%rbp)
  movl   $0x4f,-0x44(%rbp)
  movl   $0x52,-0x40(%rbp)
  movl   $0x5a,-0x3c(%rbp)
  movl   $0x5d,-0x38(%rbp)
  movl   $0x7f,-0x34(%rbp)
  movl   $0x14,-0x30(%rbp)
  movl   $0x17,-0x2c(%rbp)
  movl   $0x43,-0x28(%rbp)
  movl   $0x46,-0x24(%rbp)
  movl   $0x6a,-0x20(%rbp)
  movl   $0x6d,-0x1c(%rbp)
  movl   $0x7f,-0x18(%rbp)
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <OledMoveTo@plt>
  mov    $0x1f,%esi
  mov    $0x7f,%edi
  call   <OledDrawRect@plt>
  movl   $0x0,-0x74(%rbp)
  movl   $0x7,-0x7c(%rbp)
  movl   $0x0,-0x78(%rbp)
  mov    -0x7c(%rbp),%edx
  mov    -0x74(%rbp),%eax
  mov    %edx,%esi
  mov    %eax,%edi
  call   <OledMoveTo@plt>
L26:
  mov    -0x78(%rbp),%eax
  cltq
  mov    -0x70(%rbp,%rax,4),%eax
  mov    -0x7c(%rbp),%edx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <OledLineTo@plt>
  mov    -0x78(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x78(%rbp)
  cltq
  mov    -0x70(%rbp,%rax,4),%eax
  cmp    $0x7f,%eax
  jne    L14
  addl   $0x8,-0x7c(%rbp)
  mov    -0x7c(%rbp),%eax
  mov    %eax,%esi
  mov    $0x0,%edi
  call   <OledMoveTo@plt>
  cmpl   $0x1e,-0x7c(%rbp)
  jle    L26
  jmp    L24
L14:
  mov    -0x78(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    %edx,-0x78(%rbp)
  cltq
  mov    -0x70(%rbp,%rax,4),%eax
  mov    -0x7c(%rbp),%edx
  mov    %edx,%esi
  mov    %eax,%edi
  call   <OledMoveTo@plt>
  jmp    L26
L24:
  mov    $0x0,%esi
  mov    $0x40,%edi
  call   <OledMoveTo@plt>
  mov    $0x17,%esi
  mov    $0x40,%edi
  call   <OledLineTo@plt>
  mov    $0x7,%esi
  mov    $0x28,%edi
  call   <OledMoveTo@plt>
  mov    $0xf,%esi
  mov    $0x28,%edi
  call   <OledLineTo@plt>
  mov    $0x7,%esi
  mov    $0x55,%edi
  call   <OledMoveTo@plt>
  mov    $0x17,%esi
  mov    $0x55,%edi
  call   <OledLineTo@plt>
  mov    $0x17,%esi
  mov    $0x60,%edi
  call   <OledMoveTo@plt>
  mov    $0x1f,%esi
  mov    $0x60,%edi
  call   <OledLineTo@plt>
  mov    $0x0,%eax
  call   <OledUpdate@plt>
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L27
  call   <__stack_chk_fail@plt>
L27:
  leave
  ret
```

assistant: ```c
void drawMaze() {
  OledClearBuffer();
  const int grid[] = {27, 30, 44, 47, 70, 73, 107, 110, 127, 50, 53, 79, 82, 90, 93, 127, 20, 23, 67, 70, 106, 109, 127};
  OledMoveTo(0, 0);
  OledDrawRect(127, 31);
  int xc = 0;
  int yc = 7;
  int ind = 0;
  OledMoveTo(xc, yc);
  while (1) {
    OledLineTo(grid[ind], yc);
    if (grid[ind++] == 127) {
      yc += 8;
      OledMoveTo(0, yc);
      if (yc > 30)
        break;
    } else
      OledMoveTo(grid[ind++], yc);
  }
  OledMoveTo(64, 0);
  OledLineTo(64, 23);
  OledMoveTo(40, 7);
  OledLineTo(40, 15);
  OledMoveTo(85, 7);
  OledLineTo(85, 23);
  OledMoveTo(96, 23);
  OledLineTo(96, 31);
  OledUpdate();
}
```