user: 下面的汇编指令对应的C源代码是什么：

```asm
<draw_room>:
  endbr64
  sub    $0x8,%rsp
  lea    D30(%rip),%rdx
  mov    D26(%rip),%rax
  mov    (%rax),%esi
  mov    D34(%rip),%rax
  mov    (%rax),%edi
  call   <glMaterialfv@plt>
  mov    D39(%rip),%rax
  mov    (%rax),%edi
  call   <glBegin@plt>
  mov    $0x0,%edx
  mov    $0x1,%esi
  mov    $0x0,%edi
  call   <glNormal3f@plt>
  mov    $0x1,%edx
  mov    $0xffffffff,%esi
  mov    $0xffffffff,%edi
  call   <glVertex3f@plt>
  mov    $0x1,%edx
  mov    $0xffffffff,%esi
  mov    $0x1,%edi
  call   <glVertex3f@plt>
  mov    $0xffffffff,%edx
  mov    $0xffffffff,%esi
  mov    $0x1,%edi
  call   <glVertex3f@plt>
  mov    $0xffffffff,%edx
  mov    $0xffffffff,%esi
  mov    $0xffffffff,%edi
  call   <glVertex3f@plt>
  mov    $0x0,%edx
  mov    $0xffffffff,%esi
  mov    $0x0,%edi
  call   <glNormal3f@plt>
  mov    $0xffffffff,%edx
  mov    $0x1,%esi
  mov    $0xffffffff,%edi
  call   <glVertex3f@plt>
  mov    $0xffffffff,%edx
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <glVertex3f@plt>
  mov    $0x1,%edx
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <glVertex3f@plt>
  mov    $0x1,%edx
  mov    $0x1,%esi
  mov    $0xffffffff,%edi
  call   <glVertex3f@plt>
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    $0x1,%edi
  call   <glNormal3f@plt>
  mov    $0xffffffff,%edx
  mov    $0xffffffff,%esi
  mov    $0xffffffff,%edi
  call   <glVertex3f@plt>
  mov    $0x1,%edx
  mov    $0xffffffff,%esi
  mov    $0xffffffff,%edi
  call   <glVertex3f@plt>
  mov    $0x1,%edx
  mov    $0x1,%esi
  mov    $0xffffffff,%edi
  call   <glVertex3f@plt>
  mov    $0xffffffff,%edx
  mov    $0x1,%esi
  mov    $0xffffffff,%edi
  call   <glVertex3f@plt>
  mov    $0x0,%edx
  mov    $0x0,%esi
  mov    $0xffffffff,%edi
  call   <glNormal3f@plt>
  mov    $0xffffffff,%edx
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <glVertex3f@plt>
  mov    $0x1,%edx
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <glVertex3f@plt>
  mov    $0x1,%edx
  mov    $0xffffffff,%esi
  mov    $0x1,%edi
  call   <glVertex3f@plt>
  mov    $0xffffffff,%edx
  mov    $0xffffffff,%esi
  mov    $0x1,%edi
  call   <glVertex3f@plt>
  mov    $0x1,%edx
  mov    $0x0,%esi
  mov    $0x0,%edi
  call   <glNormal3f@plt>
  mov    $0xffffffff,%edx
  mov    $0xffffffff,%esi
  mov    $0xffffffff,%edi
  call   <glVertex3f@plt>
  mov    $0xffffffff,%edx
  mov    $0xffffffff,%esi
  mov    $0x1,%edi
  call   <glVertex3f@plt>
  mov    $0xffffffff,%edx
  mov    $0x1,%esi
  mov    $0x1,%edi
  call   <glVertex3f@plt>
  mov    $0xffffffff,%edx
  mov    $0x1,%esi
  mov    $0xffffffff,%edi
  call   <glVertex3f@plt>
  mov    $0x0,%eax
  call   <glEnd@plt>
  add    $0x8,%rsp
  ret
```

assistant: ```c
void draw_room(void) {
  static GLfloat wall_mat[] = {1.f, 1.f, 1.f, 1.f};
  glMaterialfv(GL_FRONT, GL_AMBIENT_AND_DIFFUSE, wall_mat);
  glBegin(GL_QUADS);
  glNormal3f(0, 1, 0);
  glVertex3f(-1, -1, 1);
  glVertex3f(1, -1, 1);
  glVertex3f(1, -1, -1);
  glVertex3f(-1, -1, -1);
  glNormal3f(0, -1, 0);
  glVertex3f(-1, 1, -1);
  glVertex3f(1, 1, -1);
  glVertex3f(1, 1, 1);
  glVertex3f(-1, 1, 1);
  glNormal3f(1, 0, 0);
  glVertex3f(-1, -1, -1);
  glVertex3f(-1, -1, 1);
  glVertex3f(-1, 1, 1);
  glVertex3f(-1, 1, -1);
  glNormal3f(-1, 0, 0);
  glVertex3f(1, 1, -1);
  glVertex3f(1, 1, 1);
  glVertex3f(1, -1, 1);
  glVertex3f(1, -1, -1);
  glNormal3f(0, 0, 1);
  glVertex3f(-1, -1, -1);
  glVertex3f(1, -1, -1);
  glVertex3f(1, 1, -1);
  glVertex3f(-1, 1, -1);
  glEnd();
}
```