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

```asm
<init_mouse_cursor8>:
  endbr64
  lea    D4(%rip),%rax
  mov    %rdi,%rdx
  mov    %esi,%ecx
  lea    0x100(%rax),%rdi
  jmp    L278
  nopl   0x0(%rax)
L905:
  cmp    $0x2a,%sil
  je     L579
L885:
  movzbl 0x1(%rax),%esi
  cmp    $0x2e,%sil
  je     L339
L282:
  cmp    $0x6f,%sil
  je     L953
  cmp    $0x2a,%sil
  je     L469
L399:
  movzbl 0x2(%rax),%esi
  cmp    $0x2e,%sil
  je     L848
L156:
  cmp    $0x6f,%sil
  je     L754
  cmp    $0x2a,%sil
  je     L204
L936:
  movzbl 0x3(%rax),%esi
  cmp    $0x2e,%sil
  je     L897
L946:
  cmp    $0x6f,%sil
  je     L256
  cmp    $0x2a,%sil
  je     L726
L884:
  movzbl 0x4(%rax),%esi
  cmp    $0x2e,%sil
  je     L60
L171:
  cmp    $0x6f,%sil
  je     L851
  cmp    $0x2a,%sil
  je     L126
L633:
  movzbl 0x5(%rax),%esi
  cmp    $0x2e,%sil
  je     L700
L425:
  cmp    $0x6f,%sil
  je     L689
  cmp    $0x2a,%sil
  je     L299
L581:
  movzbl 0x6(%rax),%esi
  cmp    $0x2e,%sil
  je     L104
L319:
  cmp    $0x6f,%sil
  je     L247
  cmp    $0x2a,%sil
  je     L846
L335:
  movzbl 0x7(%rax),%esi
  cmp    $0x2e,%sil
  je     L854
L549:
  cmp    $0x6f,%sil
  je     L314
  cmp    $0x2a,%sil
  je     L504
L322:
  movzbl 0x8(%rax),%esi
  cmp    $0x2e,%sil
  je     L869
L874:
  cmp    $0x6f,%sil
  je     L634
  cmp    $0x2a,%sil
  je     L845
L652:
  movzbl 0x9(%rax),%esi
  cmp    $0x2e,%sil
  je     L805
L807:
  cmp    $0x6f,%sil
  je     L404
  cmp    $0x2a,%sil
  je     L3
L619:
  movzbl 0xa(%rax),%esi
  cmp    $0x2e,%sil
  je     L601
L102:
  cmp    $0x6f,%sil
  je     L962
  cmp    $0x2a,%sil
  je     L542
L316:
  movzbl 0xb(%rax),%esi
  cmp    $0x2e,%sil
  je     L771
L748:
  cmp    $0x6f,%sil
  je     L531
  cmp    $0x2a,%sil
  je     L362
L443:
  movzbl 0xc(%rax),%esi
  cmp    $0x2e,%sil
  je     L867
L273:
  cmp    $0x6f,%sil
  je     L876
  cmp    $0x2a,%sil
  je     L272
L558:
  movzbl 0xd(%rax),%esi
  cmp    $0x2e,%sil
  je     L873
L966:
  cmp    $0x6f,%sil
  je     L660
  cmp    $0x2a,%sil
  je     L172
L832:
  movzbl 0xe(%rax),%esi
  cmp    $0x2e,%sil
  je     L116
L968:
  cmp    $0x6f,%sil
  je     L312
  cmp    $0x2a,%sil
  je     L624
L245:
  movzbl 0xf(%rax),%esi
  cmp    $0x2e,%sil
  je     L802
L332:
  cmp    $0x6f,%sil
  je     L571
  cmp    $0x2a,%sil
  je     L403
L732:
  add    $0x10,%rax
  add    $0x10,%rdx
  cmp    %rax,%rdi
  je     L92
L278:
  movzbl (%rax),%esi
  cmp    $0x2e,%sil
  je     L269
  cmp    $0x6f,%sil
  jne    L905
  movb   $0x7,(%rdx)
  movzbl 0x1(%rax),%esi
  cmp    $0x2e,%sil
  jne    L282
L339:
  mov    %cl,0x1(%rdx)
  movzbl 0x2(%rax),%esi
  cmp    $0x2e,%sil
  jne    L156
L848:
  mov    %cl,0x2(%rdx)
  movzbl 0x3(%rax),%esi
  cmp    $0x2e,%sil
  jne    L946
L897:
  mov    %cl,0x3(%rdx)
  movzbl 0x4(%rax),%esi
  cmp    $0x2e,%sil
  jne    L171
L60:
  mov    %cl,0x4(%rdx)
  movzbl 0x5(%rax),%esi
  cmp    $0x2e,%sil
  jne    L425
L700:
  mov    %cl,0x5(%rdx)
  movzbl 0x6(%rax),%esi
  cmp    $0x2e,%sil
  jne    L319
L104:
  mov    %cl,0x6(%rdx)
  movzbl 0x7(%rax),%esi
  cmp    $0x2e,%sil
  jne    L549
L854:
  mov    %cl,0x7(%rdx)
  movzbl 0x8(%rax),%esi
  cmp    $0x2e,%sil
  jne    L874
L869:
  mov    %cl,0x8(%rdx)
  movzbl 0x9(%rax),%esi
  cmp    $0x2e,%sil
  jne    L807
L805:
  mov    %cl,0x9(%rdx)
  movzbl 0xa(%rax),%esi
  cmp    $0x2e,%sil
  jne    L102
L601:
  mov    %cl,0xa(%rdx)
  movzbl 0xb(%rax),%esi
  cmp    $0x2e,%sil
  jne    L748
L771:
  mov    %cl,0xb(%rdx)
  movzbl 0xc(%rax),%esi
  cmp    $0x2e,%sil
  jne    L273
L867:
  mov    %cl,0xc(%rdx)
  movzbl 0xd(%rax),%esi
  cmp    $0x2e,%sil
  jne    L966
L873:
  mov    %cl,0xd(%rdx)
  movzbl 0xe(%rax),%esi
  cmp    $0x2e,%sil
  jne    L968
L116:
  mov    %cl,0xe(%rdx)
  movzbl 0xf(%rax),%esi
  cmp    $0x2e,%sil
  jne    L332
L802:
  add    $0x10,%rax
  mov    %cl,0xf(%rdx)
  add    $0x10,%rdx
  cmp    %rax,%rdi
  jne    L278
L92:
  ret
  nopl   0x0(%rax)
L269:
  mov    %cl,(%rdx)
  jmp    L885
  nop
L403:
  movb   $0x0,0xf(%rdx)
  jmp    L732
  nopl   0x0(%rax)
L571:
  movb   $0x7,0xf(%rdx)
  jmp    L732
  nopl   0x0(%rax)
L624:
  movb   $0x0,0xe(%rdx)
  jmp    L245
  nopl   0x0(%rax)
L312:
  movb   $0x7,0xe(%rdx)
  jmp    L245
  nopl   0x0(%rax)
L172:
  movb   $0x0,0xd(%rdx)
  jmp    L832
  nopl   0x0(%rax)
L660:
  movb   $0x7,0xd(%rdx)
  jmp    L832
  nopl   0x0(%rax)
L272:
  movb   $0x0,0xc(%rdx)
  jmp    L558
  nopl   0x0(%rax)
L876:
  movb   $0x7,0xc(%rdx)
  jmp    L558
  nopl   0x0(%rax)
L362:
  movb   $0x0,0xb(%rdx)
  jmp    L443
  nopl   0x0(%rax)
L531:
  movb   $0x7,0xb(%rdx)
  jmp    L443
  nopl   0x0(%rax)
L542:
  movb   $0x0,0xa(%rdx)
  jmp    L316
  nopl   0x0(%rax)
L962:
  movb   $0x7,0xa(%rdx)
  jmp    L316
  nopl   0x0(%rax)
L3:
  movb   $0x0,0x9(%rdx)
  jmp    L619
  nopl   0x0(%rax)
L404:
  movb   $0x7,0x9(%rdx)
  jmp    L619
  nopl   0x0(%rax)
L845:
  movb   $0x0,0x8(%rdx)
  jmp    L652
  nopl   0x0(%rax)
L634:
  movb   $0x7,0x8(%rdx)
  jmp    L652
  nopl   0x0(%rax)
L504:
  movb   $0x0,0x7(%rdx)
  jmp    L322
  nopl   0x0(%rax)
L314:
  movb   $0x7,0x7(%rdx)
  jmp    L322
  nopl   0x0(%rax)
L846:
  movb   $0x0,0x6(%rdx)
  jmp    L335
  nopl   0x0(%rax)
L247:
  movb   $0x7,0x6(%rdx)
  jmp    L335
  nopl   0x0(%rax)
L299:
  movb   $0x0,0x5(%rdx)
  jmp    L581
  nopl   0x0(%rax)
L689:
  movb   $0x7,0x5(%rdx)
  jmp    L581
  nopl   0x0(%rax)
L126:
  movb   $0x0,0x4(%rdx)
  jmp    L633
  nopl   0x0(%rax)
L851:
  movb   $0x7,0x4(%rdx)
  jmp    L633
  nopl   0x0(%rax)
L726:
  movb   $0x0,0x3(%rdx)
  jmp    L884
  nopl   0x0(%rax)
L256:
  movb   $0x7,0x3(%rdx)
  jmp    L884
  nopl   0x0(%rax)
L204:
  movb   $0x0,0x2(%rdx)
  jmp    L936
  nopl   0x0(%rax)
L754:
  movb   $0x7,0x2(%rdx)
  jmp    L936
  nopl   0x0(%rax)
L469:
  movb   $0x0,0x1(%rdx)
  jmp    L399
  nopl   0x0(%rax)
L953:
  movb   $0x7,0x1(%rdx)
  jmp    L399
  nopl   0x0(%rax)
L579:
  movb   $0x0,(%rdx)
  jmp    L885
```

assistant: ```c
void init_mouse_cursor8(char *mouse, char bg_color) {
  static char s_cursor[16][16] = {
      "**************..", "*ooooooooooo*...", "*oooooooooo*....", "*ooooooooo*.....", "*oooooooo*......", "*ooooooo*.......", "*ooooooo*.......", "*oooooooo*......", "*oooo**ooo*.....", "*ooo*..*ooo*....", "*oo*....*ooo*...", "*o*......*ooo*..", "**........*ooo*.", "*..........*ooo*", "............*oo*", ".............***",
  };
  int x, y;
  for (y = 0; y < 16; ++y) {
    for (x = 0; x < 16; ++x) {
      switch (s_cursor[y][x]) {
      case '*':
        mouse[y * 16 + x] = (0);
        break;
      case 'o':
        mouse[y * 16 + x] = (7);
        break;
      case '.':
        mouse[y * 16 + x] = bg_color;
        break;
      }
    }
  }
}
```