user: Translate the below assembly code into C programming language:

```asm
<effect_intro>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  xor    %ebx,%ebx
  nopw   0x0(%rax,%rax,1)
L84:
  mov    %ebx,%r9d
  mov    $0x7,%r8d
  mov    $0x7,%ecx
  xor    %edx,%edx
  xor    %esi,%esi
  xor    %edi,%edi
  add    $0x1,%ebx
  call   <box_wireframe@plt>
  mov    $0x12c,%edi
  call   <delay_ms@plt>
  cmp    $0x8,%ebx
  jne    L84
  xor    %ebx,%ebx
  nopl   (%rax)
L109:
  mov    %ebx,%edi
  add    $0x1,%ebx
  call   <clrplane_z@plt>
  mov    $0x12c,%edi
  call   <delay_ms@plt>
  cmp    $0x7,%ebx
  jne    L109
  mov    $0xffffffff,%esi
  mov    $0x2,%edi
  xor    %ebx,%ebx
  call   <shift@plt>
  nopw   0x0(%rax,%rax,1)
L155:
  mov    %ebx,%edi
  mov    $0x6,%edx
  xor    %esi,%esi
  add    $0x1,%ebx
  call   <setvoxel@plt>
  cmp    $0x8,%ebx
  jne    L155
  mov    $0x12c,%edi
  xor    %ebx,%ebx
  call   <delay_ms@plt>
  mov    $0xffffffff,%esi
  mov    $0x2,%edi
  call   <shift@plt>
  nopl   0x0(%rax)
L70:
  mov    %ebx,%edi
  mov    $0x5,%edx
  xor    %esi,%esi
  add    $0x1,%ebx
  call   <setvoxel@plt>
  cmp    $0x8,%ebx
  jne    L70
  mov    $0x6,%edx
  xor    %esi,%esi
  xor    %edi,%edi
  xor    %ebx,%ebx
  call   <setvoxel@plt>
  mov    $0x6,%edx
  xor    %esi,%esi
  mov    $0x7,%edi
  call   <setvoxel@plt>
  mov    $0x12c,%edi
  call   <delay_ms@plt>
  mov    $0xffffffff,%esi
  mov    $0x2,%edi
  call   <shift@plt>
  nopl   0x0(%rax,%rax,1)
L69:
  mov    %ebx,%edi
  mov    $0x4,%edx
  xor    %esi,%esi
  add    $0x1,%ebx
  call   <setvoxel@plt>
  cmp    $0x8,%ebx
  jne    L69
  mov    $0x5,%edx
  xor    %esi,%esi
  xor    %edi,%edi
  xor    %ebx,%ebx
  call   <setvoxel@plt>
  mov    $0x5,%edx
  xor    %esi,%esi
  mov    $0x7,%edi
  call   <setvoxel@plt>
  mov    $0x6,%edx
  xor    %esi,%esi
  xor    %edi,%edi
  call   <setvoxel@plt>
  mov    $0x6,%edx
  xor    %esi,%esi
  mov    $0x7,%edi
  call   <setvoxel@plt>
  mov    $0x12c,%edi
  call   <delay_ms@plt>
  mov    $0xffffffff,%esi
  mov    $0x2,%edi
  call   <shift@plt>
  nop
L99:
  mov    %ebx,%edi
  mov    $0x3,%edx
  xor    %esi,%esi
  add    $0x1,%ebx
  call   <setvoxel@plt>
  cmp    $0x8,%ebx
  jne    L99
  mov    $0x4,%edx
  xor    %esi,%esi
  xor    %edi,%edi
  xor    %ebx,%ebx
  call   <setvoxel@plt>
  mov    $0x4,%edx
  xor    %esi,%esi
  mov    $0x7,%edi
  call   <setvoxel@plt>
  mov    $0x5,%edx
  xor    %esi,%esi
  xor    %edi,%edi
  call   <setvoxel@plt>
  mov    $0x5,%edx
  xor    %esi,%esi
  mov    $0x7,%edi
  call   <setvoxel@plt>
  mov    $0x6,%edx
  xor    %esi,%esi
  xor    %edi,%edi
  call   <setvoxel@plt>
  mov    $0x6,%edx
  xor    %esi,%esi
  mov    $0x7,%edi
  call   <setvoxel@plt>
  mov    $0x12c,%edi
  call   <delay_ms@plt>
  mov    $0xffffffff,%esi
  mov    $0x2,%edi
  call   <shift@plt>
  xchg   %ax,%ax
L86:
  mov    %ebx,%edi
  mov    $0x2,%edx
  xor    %esi,%esi
  add    $0x1,%ebx
  call   <setvoxel@plt>
  cmp    $0x8,%ebx
  jne    L86
  mov    $0x3,%edx
  xor    %esi,%esi
  xor    %edi,%edi
  xor    %ebx,%ebx
  call   <setvoxel@plt>
  mov    $0x3,%edx
  xor    %esi,%esi
  mov    $0x7,%edi
  call   <setvoxel@plt>
  mov    $0x4,%edx
  xor    %esi,%esi
  xor    %edi,%edi
  call   <setvoxel@plt>
  mov    $0x4,%edx
  xor    %esi,%esi
  mov    $0x7,%edi
  call   <setvoxel@plt>
  mov    $0x5,%edx
  xor    %esi,%esi
  xor    %edi,%edi
  call   <setvoxel@plt>
  mov    $0x5,%edx
  xor    %esi,%esi
  mov    $0x7,%edi
  call   <setvoxel@plt>
  mov    $0x6,%edx
  xor    %esi,%esi
  xor    %edi,%edi
  call   <setvoxel@plt>
  mov    $0x6,%edx
  xor    %esi,%esi
  mov    $0x7,%edi
  call   <setvoxel@plt>
  mov    $0x12c,%edi
  call   <delay_ms@plt>
  mov    $0xffffffff,%esi
  mov    $0x2,%edi
  call   <shift@plt>
  nopl   (%rax)
L4:
  mov    %ebx,%edi
  mov    $0x1,%edx
  xor    %esi,%esi
  add    $0x1,%ebx
  call   <setvoxel@plt>
  cmp    $0x8,%ebx
  jne    L4
  mov    $0x2,%edx
  xor    %esi,%esi
  xor    %edi,%edi
  xor    %ebx,%ebx
  call   <setvoxel@plt>
  mov    $0x2,%edx
  xor    %esi,%esi
  mov    $0x7,%edi
  call   <setvoxel@plt>
  mov    $0x3,%edx
  xor    %esi,%esi
  xor    %edi,%edi
  call   <setvoxel@plt>
  mov    $0x3,%edx
  xor    %esi,%esi
  mov    $0x7,%edi
  call   <setvoxel@plt>
  mov    $0x4,%edx
  xor    %esi,%esi
  xor    %edi,%edi
  call   <setvoxel@plt>
  mov    $0x4,%edx
  xor    %esi,%esi
  mov    $0x7,%edi
  call   <setvoxel@plt>
  mov    $0x5,%edx
  xor    %esi,%esi
  xor    %edi,%edi
  call   <setvoxel@plt>
  mov    $0x5,%edx
  xor    %esi,%esi
  mov    $0x7,%edi
  call   <setvoxel@plt>
  mov    $0x12c,%edi
  call   <delay_ms@plt>
  mov    $0xffffffff,%esi
  mov    $0x2,%edi
  call   <shift@plt>
  nopl   (%rax)
L48:
  mov    %ebx,%edi
  xor    %edx,%edx
  xor    %esi,%esi
  add    $0x1,%ebx
  call   <setvoxel@plt>
  cmp    $0x8,%ebx
  jne    L48
  mov    $0x1,%edx
  xor    %esi,%esi
  xor    %edi,%edi
  xor    %ebx,%ebx
  call   <setvoxel@plt>
  mov    $0x1,%edx
  xor    %esi,%esi
  mov    $0x7,%edi
  call   <setvoxel@plt>
  mov    $0x2,%edx
  xor    %esi,%esi
  xor    %edi,%edi
  call   <setvoxel@plt>
  mov    $0x2,%edx
  xor    %esi,%esi
  mov    $0x7,%edi
  call   <setvoxel@plt>
  mov    $0x3,%edx
  xor    %esi,%esi
  xor    %edi,%edi
  call   <setvoxel@plt>
  mov    $0x3,%edx
  xor    %esi,%esi
  mov    $0x7,%edi
  call   <setvoxel@plt>
  mov    $0x4,%edx
  xor    %esi,%esi
  xor    %edi,%edi
  call   <setvoxel@plt>
  mov    $0x4,%edx
  xor    %esi,%esi
  mov    $0x7,%edi
  call   <setvoxel@plt>
  mov    $0x5,%edx
  xor    %esi,%esi
  xor    %edi,%edi
  call   <setvoxel@plt>
  mov    $0x5,%edx
  xor    %esi,%esi
  mov    $0x7,%edi
  call   <setvoxel@plt>
  mov    $0x12c,%edi
  call   <delay_ms@plt>
  nopw   0x0(%rax,%rax,1)
L200:
  mov    %ebx,%r8d
  mov    $0x7,%r9d
  mov    $0x7,%ecx
  xor    %edx,%edx
  xor    %esi,%esi
  xor    %edi,%edi
  add    $0x1,%ebx
  call   <box_wireframe@plt>
  mov    $0x12c,%edi
  call   <delay_ms@plt>
  cmp    $0x8,%ebx
  jne    L200
  xor    %ebx,%ebx
  nopl   (%rax)
L213:
  mov    %ebx,%edi
  add    $0x1,%ebx
  call   <clrplane_y@plt>
  mov    $0x12c,%edi
  call   <delay_ms@plt>
  cmp    $0x7,%ebx
  jne    L213
  mov    $0x6,%ebp
  xchg   %ax,%ax
L31:
  mov    $0xffffffff,%esi
  mov    $0x3,%edi
  xor    %ebx,%ebx
  call   <shift@plt>
  nopl   0x0(%rax)
L215:
  mov    %ebx,%edi
  xor    %edx,%edx
  mov    %ebp,%esi
  add    $0x1,%ebx
  call   <setvoxel@plt>
  cmp    $0x8,%ebx
  jne    L215
  cmp    $0x6,%ebp
  je     L204
  mov    $0x6,%ebx
  nopl   (%rax)
L148:
  mov    %ebx,%esi
  xor    %edx,%edx
  xor    %edi,%edi
  call   <setvoxel@plt>
  mov    %ebx,%esi
  xor    %edx,%edx
  mov    $0x7,%edi
  call   <setvoxel@plt>
  sub    $0x1,%ebx
  cmp    %ebp,%ebx
  jne    L148
L204:
  mov    $0x12c,%edi
  call   <delay_ms@plt>
  sub    $0x1,%ebp
  jae    L31
  xor    %ebx,%ebx
  nopl   0x0(%rax)
L219:
  xor    %edi,%edi
  call   <fill@plt>
  mov    %ebx,%r9d
  mov    $0x7,%r8d
  xor    %edx,%edx
  mov    $0x7,%ecx
  xor    %esi,%esi
  xor    %edi,%edi
  add    $0x1,%ebx
  call   <box_walls@plt>
  mov    $0x12c,%edi
  call   <delay_ms@plt>
  cmp    $0x7,%ebx
  jne    L219
  mov    $0x1f4,%ebp
  mov    $0x7,%r12d
L5:
  sub    $0x4b,%ebp
  xor    %ebx,%ebx
L64:
  xor    %edi,%edi
  call   <fill@plt>
  mov    %r12d,%ecx
  mov    %ebx,%edx
  mov    %ebx,%esi
  sub    %ebx,%ecx
  mov    %ebx,%edi
  add    $0x1,%ebx
  mov    %ecx,%r9d
  mov    %ecx,%r8d
  call   <box_walls@plt>
  mov    %ebp,%edi
  call   <delay_ms@plt>
  cmp    $0x4,%ebx
  jne    L64
  mov    $0x3,%ebx
L143:
  xor    %edi,%edi
  call   <fill@plt>
  mov    %r12d,%ecx
  mov    %ebx,%edi
  mov    %ebx,%edx
  sub    %ebx,%ecx
  mov    %ebx,%esi
  mov    %ecx,%r9d
  mov    %ecx,%r8d
  call   <box_walls@plt>
  mov    %ebp,%edi
  call   <delay_ms@plt>
  sub    $0x1,%ebx
  jae    L143
  cmp    $0x7d,%ebp
  jne    L5
  mov    $0x7,%r12d
L111:
  add    $0x4b,%ebp
  xor    %ebx,%ebx
L116:
  xor    %edi,%edi
  call   <fill@plt>
  mov    %r12d,%ecx
  mov    %ebx,%edx
  mov    %ebx,%esi
  sub    %ebx,%ecx
  mov    %ebx,%edi
  add    $0x1,%ebx
  mov    %ecx,%r9d
  mov    %ecx,%r8d
  call   <box_walls@plt>
  mov    %ebp,%edi
  call   <delay_ms@plt>
  cmp    $0x4,%ebx
  jne    L116
  mov    $0x3,%ebx
L112:
  xor    %edi,%edi
  call   <fill@plt>
  mov    %r12d,%ecx
  mov    %ebx,%edi
  mov    %ebx,%edx
  sub    %ebx,%ecx
  mov    %ebx,%esi
  mov    %ecx,%r9d
  mov    %ecx,%r8d
  call   <box_walls@plt>
  mov    %ebp,%edi
  call   <delay_ms@plt>
  sub    $0x1,%ebx
  jae    L112
  cmp    $0x1f4,%ebp
  jne    L111
  pop    %rbx
  mov    $0x1f4,%edi
  pop    %rbp
  pop    %r12
  jmp    1110 <delay_ms@plt>
```

assistant: ```c
void effect_intro() {
  int cnt, cnt_2, time;
  for (cnt = 0; cnt <= 7; cnt++) {
    box_wireframe(0, 0, 0, 7, 7, cnt);
    delay_ms(300);
  }
  for (cnt = 0; cnt < 7; cnt++) {
    clrplane_z(cnt);
    delay_ms(300);
  }
  shift(2, -1);
  for (cnt = 0; cnt <= 7; cnt++) {
    setvoxel(cnt, 0, 6);
  }
  delay_ms(300);
  shift(2, -1);
  for (cnt = 0; cnt <= 7; cnt++) {
    setvoxel(cnt, 0, 5);
  }
  setvoxel(0, 0, 6);
  setvoxel(7, 0, 6);
  delay_ms(300);
  shift(2, -1);
  for (cnt = 0; cnt <= 7; cnt++) {
    setvoxel(cnt, 0, 4);
  }
  setvoxel(0, 0, 5);
  setvoxel(7, 0, 5);
  setvoxel(0, 0, 6);
  setvoxel(7, 0, 6);
  delay_ms(300);
  shift(2, -1);
  for (cnt = 0; cnt <= 7; cnt++) {
    setvoxel(cnt, 0, 3);
  }
  setvoxel(0, 0, 4);
  setvoxel(7, 0, 4);
  setvoxel(0, 0, 5);
  setvoxel(7, 0, 5);
  setvoxel(0, 0, 6);
  setvoxel(7, 0, 6);
  delay_ms(300);
  shift(2, -1);
  for (cnt = 0; cnt <= 7; cnt++) {
    setvoxel(cnt, 0, 2);
  }
  setvoxel(0, 0, 3);
  setvoxel(7, 0, 3);
  setvoxel(0, 0, 4);
  setvoxel(7, 0, 4);
  setvoxel(0, 0, 5);
  setvoxel(7, 0, 5);
  setvoxel(0, 0, 6);
  setvoxel(7, 0, 6);
  delay_ms(300);
  shift(2, -1);
  for (cnt = 0; cnt <= 7; cnt++) {
    setvoxel(cnt, 0, 1);
  }
  setvoxel(0, 0, 2);
  setvoxel(7, 0, 2);
  setvoxel(0, 0, 3);
  setvoxel(7, 0, 3);
  setvoxel(0, 0, 4);
  setvoxel(7, 0, 4);
  setvoxel(0, 0, 5);
  setvoxel(7, 0, 5);
  delay_ms(300);
  shift(2, -1);
  for (cnt = 0; cnt <= 7; cnt++) {
    setvoxel(cnt, 0, 0);
  }
  setvoxel(0, 0, 1);
  setvoxel(7, 0, 1);
  setvoxel(0, 0, 2);
  setvoxel(7, 0, 2);
  setvoxel(0, 0, 3);
  setvoxel(7, 0, 3);
  setvoxel(0, 0, 4);
  setvoxel(7, 0, 4);
  setvoxel(0, 0, 5);
  setvoxel(7, 0, 5);
  delay_ms(300);
  for (cnt = 0; cnt <= 7; cnt++) {
    box_wireframe(0, 0, 0, 7, cnt, 7);
    delay_ms(300);
  }
  for (cnt = 0; cnt < 7; cnt++) {
    clrplane_y(cnt);
    delay_ms(300);
  }
  for (cnt_2 = 6; cnt_2 >= 0; cnt_2--) {
    shift(3, -1);
    for (cnt = 0; cnt <= 7; cnt++) {
      setvoxel(cnt, cnt_2, 0);
    }
    for (cnt = 6; cnt > cnt_2; cnt--) {
      setvoxel(0, cnt, 0);
      setvoxel(7, cnt, 0);
    }
    delay_ms(300);
  }
  for (cnt = 0; cnt <= 6; cnt++) {
    fill(0x00);
    box_walls(0, 0, 0, 7, 7, cnt);
    delay_ms(300);
  }
  time = 500;
  for (cnt_2 = 0; cnt_2 < 5; cnt_2++) {
    time -= 75;
    for (cnt = 0; cnt <= 3; cnt++) {
      fill(0x00);
      box_walls(cnt, cnt, cnt, 7 - cnt, 7 - cnt, 7 - cnt);
      delay_ms(time);
    }
    for (cnt = 0; cnt <= 3; cnt++) {
      fill(0x00);
      box_walls(3 - cnt, 3 - cnt, 3 - cnt, 4 + cnt, 4 + cnt, 4 + cnt);
      delay_ms(time);
    }
  }
  for (cnt_2 = 0; cnt_2 < 5; cnt_2++) {
    time += 75;
    for (cnt = 0; cnt <= 3; cnt++) {
      fill(0x00);
      box_walls(cnt, cnt, cnt, 7 - cnt, 7 - cnt, 7 - cnt);
      delay_ms(time);
    }
    for (cnt = 0; cnt <= 3; cnt++) {
      fill(0x00);
      box_walls(3 - cnt, 3 - cnt, 3 - cnt, 4 + cnt, 4 + cnt, 4 + cnt);
      delay_ms(time);
    }
  }
  delay_ms(500);
}
```