user: Please show me the C implementation that matches the assembly code listed below:

```asm
<obrada_prekida>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %edi,-0x14(%rbp)
  cmpl   $0x5,-0x14(%rbp)
  ja     L25
  mov    -0x14(%rbp),%eax
  lea    0x0(,%rax,4),%rdx
  lea    D17(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D17(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D114(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x1,-0x4(%rbp)
  jmp    L110
L133:
  mov    $0x1,%edi
  call   <sleep@plt>
  mov    -0x4(%rbp),%eax
  mov    %eax,%esi
  lea    D112(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  addl   $0x1,-0x4(%rbp)
L110:
  cmpl   $0x5,-0x4(%rbp)
  jle    L133
  lea    D146(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L25
  lea    D121(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x1,-0x4(%rbp)
  jmp    L106
L135:
  mov    $0x1,%edi
  call   <sleep@plt>
  mov    -0x4(%rbp),%eax
  mov    %eax,%esi
  lea    D133(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  addl   $0x1,-0x4(%rbp)
L106:
  cmpl   $0x5,-0x4(%rbp)
  jle    L135
  lea    D143(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L25
  lea    D82(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x1,-0x4(%rbp)
  jmp    L143
L2:
  mov    $0x1,%edi
  call   <sleep@plt>
  mov    -0x4(%rbp),%eax
  mov    %eax,%esi
  lea    D94(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  addl   $0x1,-0x4(%rbp)
L143:
  cmpl   $0x5,-0x4(%rbp)
  jle    L2
  lea    D28(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  jmp    L25
  lea    D37(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x1,-0x4(%rbp)
  jmp    L125
L0:
  mov    $0x1,%edi
  call   <sleep@plt>
  mov    -0x4(%rbp),%eax
  mov    %eax,%esi
  lea    D110(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  addl   $0x1,-0x4(%rbp)
L125:
  cmpl   $0x5,-0x4(%rbp)
  jle    L0
  lea    D87(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L25
  lea    D144(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x1,-0x4(%rbp)
  jmp    L16
L22:
  mov    $0x1,%edi
  call   <sleep@plt>
  mov    -0x4(%rbp),%eax
  mov    %eax,%esi
  lea    D50(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  addl   $0x1,-0x4(%rbp)
L16:
  cmpl   $0x5,-0x4(%rbp)
  jle    L22
  lea    D154(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  nop
L25:
  nop
  leave
  ret
```

tool_calls: name: unpack_data
arguments: label: D114
type: string
name: unpack_data
arguments: label: D112
type: string
name: unpack_data
arguments: label: D146
type: string
name: unpack_data
arguments: label: D121
type: string
name: unpack_data
arguments: label: D133
type: string
name: unpack_data
arguments: label: D143
type: string
name: unpack_data
arguments: label: D82
type: string
name: unpack_data
arguments: label: D94
type: string
name: unpack_data
arguments: label: D28
type: string
name: unpack_data
arguments: label: D37
type: string
name: unpack_data
arguments: label: D110
type: string
name: unpack_data
arguments: label: D87
type: string
name: unpack_data
arguments: label: D144
type: string
name: unpack_data
arguments: label: D50
type: string
name: unpack_data
arguments: label: D154
type: string

tool: D114: -	P	-	-	-	-

tool: D112: -	%d	-	-	-	-


tool: D146: -	K	-	-	-	-

tool: D121: -	-	P	-	-	-

tool: D133: -	-	%d	-	-	-


tool: D143: -	-	K	-	-	-

tool: D82: -	-	-	P	-	-

tool: D94: -	-	-	%d	-	-


tool: D28: -	-	-	K	-	-

tool: D37: -	-	-	-	P	-

tool: D110: -	-	-	-	%d	-


tool: D87: -	-	-	-	K
 -

tool: D144: -	-	-	-	-	P

tool: D50: -	-	-	-	-	%d


tool: D154: -	-	-	-	-	K

assistant: ```c
void obrada_prekida(int i) {
  int k;
  switch (i) {
  case 1:
    printf("-\tP\t-\t-\t-\t-\n");
    for (k = 1; k < 6; k++) {
      sleep(1);
      printf("-\t%d\t-\t-\t-\t-\n", k);
    }
    printf("-\tK\t-\t-\t-\t-\n");
    break;
  case 2:
    printf("-\t-\tP\t-\t-\t-\n");
    for (k = 1; k < 6; k++) {
      sleep(1);
      printf("-\t-\t%d\t-\t-\t-\n", k);
    }
    printf("-\t-\tK\t-\t-\t-\n");
    break;
  case 3:
    printf("-\t-\t-\tP\t-\t-\n");
    for (k = 1; k < 6; k++) {
      sleep(1);
      printf("-\t-\t-\t%d\t-\t-\n", k);
    }
    printf("-\t-\t-\tK\t-\t-\n");
    break;
  case 4:
    printf("-\t-\t-\t-\tP\t-\n");
    for (k = 1; k < 6; k++) {
      sleep(1);
      printf("-\t-\t-\t-\t%d\t-\n", k);
    }
    printf("-\t-\t-\t-\tK\n -");
    break;
  case 5:
    printf("-\t-\t-\t-\t-\tP\n");
    for (k = 1; k < 6; k++) {
      sleep(1);
      printf("-\t-\t-\t-\t-\t%d\n", k);
    }
    printf("-\t-\t-\t-\t-\tK\n");
    break;
  }
}
```