user: What would the C source look like for the assembly code provided here:

```asm
<draw_room>:
  endbr64
  sub    $0x8,%rsp
  mov    D39(%rip),%rax
  lea    D16(%rip),%rdx
  mov    (%rax),%esi
  mov    D36(%rip),%rax
  mov    (%rax),%edi
  call   <glMaterialfv@plt>
  mov    D5(%rip),%rax
  mov    (%rax),%edi
  call   <glBegin@plt>
  xor    %edx,%edx
  xor    %edi,%edi
  mov    $0x1,%esi
  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>
  xor    %edx,%edx
  xor    %edi,%edi
  mov    $0xffffffff,%esi
  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>
  xor    %edx,%edx
  xor    %esi,%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>
  xor    %edx,%edx
  xor    %esi,%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>
  xor    %esi,%esi
  mov    $0x1,%edx
  xor    %edi,%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>
  xor    %eax,%eax
  add    $0x8,%rsp
  jmp    10d0 <glEnd@plt>
```

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();
}
```