user: 请从给定的汇编指令推导出C源代码:

```asm
<run_instruction>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %edi,-0x14(%rbp)
  mov    %esi,-0x18(%rbp)
  mov    %edx,-0x1c(%rbp)
  cmpl   $0xe,-0x14(%rbp)
  ja     L194
  mov    -0x14(%rbp),%eax
  lea    0x0(,%rax,4),%rdx
  lea    D10(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D10(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  cmpl   $0x0,-0x18(%rbp)
  je     L213
  cmpl   $0x0,-0x1c(%rbp)
  je     L213
  mov    $0x1,%eax
  jmp    L79
L213:
  mov    $0x0,%eax
L79:
  mov    %eax,-0x4(%rbp)
  jmp    L194
  cmpl   $0x0,-0x18(%rbp)
  jne    L65
  cmpl   $0x0,-0x1c(%rbp)
  je     L63
L65:
  mov    $0x1,%eax
  jmp    L74
L63:
  mov    $0x0,%eax
L74:
  mov    %eax,-0x4(%rbp)
  jmp    L194
  cmpl   $0x0,-0x18(%rbp)
  sete   %al
  movzbl %al,%eax
  mov    %eax,-0x4(%rbp)
  jmp    L194
  mov    -0x18(%rbp),%eax
  cmp    -0x1c(%rbp),%eax
  sete   %al
  movzbl %al,%eax
  mov    %eax,-0x4(%rbp)
  jmp    L194
  mov    -0x18(%rbp),%eax
  cmp    -0x1c(%rbp),%eax
  setne  %al
  movzbl %al,%eax
  mov    %eax,-0x4(%rbp)
  jmp    L194
  mov    -0x18(%rbp),%eax
  cmp    -0x1c(%rbp),%eax
  setg   %al
  movzbl %al,%eax
  mov    %eax,-0x4(%rbp)
  jmp    L194
  mov    -0x18(%rbp),%eax
  cmp    -0x1c(%rbp),%eax
  setge  %al
  movzbl %al,%eax
  mov    %eax,-0x4(%rbp)
  jmp    L194
  mov    -0x18(%rbp),%eax
  cmp    -0x1c(%rbp),%eax
  setl   %al
  movzbl %al,%eax
  mov    %eax,-0x4(%rbp)
  jmp    L194
  mov    -0x18(%rbp),%eax
  cmp    -0x1c(%rbp),%eax
  setle  %al
  movzbl %al,%eax
  mov    %eax,-0x4(%rbp)
  jmp    L194
  mov    -0x18(%rbp),%eax
  cmp    -0x1c(%rbp),%eax
  sete   %al
  movzbl %al,%eax
  mov    %eax,-0x4(%rbp)
  jmp    L194
  mov    -0x18(%rbp),%eax
  cmp    -0x1c(%rbp),%eax
  setne  %al
  movzbl %al,%eax
  mov    %eax,-0x4(%rbp)
  jmp    L194
  mov    -0x18(%rbp),%edx
  mov    -0x1c(%rbp),%eax
  add    %edx,%eax
  mov    %eax,-0x4(%rbp)
  jmp    L194
  mov    -0x18(%rbp),%eax
  sub    -0x1c(%rbp),%eax
  mov    %eax,-0x4(%rbp)
  jmp    L194
  mov    -0x18(%rbp),%eax
  imul   -0x1c(%rbp),%eax
  mov    %eax,-0x4(%rbp)
  jmp    L194
  cmpl   $0x0,-0x1c(%rbp)
  jle    L125
  mov    -0x18(%rbp),%eax
  cltd
  idivl  -0x1c(%rbp)
  jmp    L122
L125:
  mov    $0x0,%eax
L122:
  mov    %eax,-0x4(%rbp)
  nop
L194:
  mov    -0x4(%rbp),%eax
  pop    %rbp
  ret
```

assistant: ```c
int run_instruction(int _operator, int _operand1, int _operand2) {
  int result;
  switch (_operator) {
  case 4: {
    result = (_operand1 && _operand2);
    break;
  }
  case 5: {
    result = (_operand1 || _operand2);
    break;
  }
  case 6: {
    result = (!_operand1);
    break;
  }
  case 7: {
    result = (_operand1 == _operand2);
    break;
  }
  case 8: {
    result = (_operand1 != _operand2);
    break;
  }
  case 9: {
    result = (_operand1 > _operand2);
    break;
  }
  case 10: {
    result = (_operand1 >= _operand2);
    break;
  }
  case 11: {
    result = (_operand1 < _operand2);
    break;
  }
  case 12: {
    result = (_operand1 <= _operand2);
    break;
  }
  case 13: {
    result = (_operand1 == _operand2);
    break;
  }
  case 14: {
    result = (_operand1 != _operand2);
    break;
  }
  case 0: {
    result = (_operand1 + _operand2);
    break;
  }
  case 1: {
    result = (_operand1 - _operand2);
    break;
  }
  case 2: {
    result = (_operand1 * _operand2);
    break;
  }
  case 3: {
    result = (_operand2 > 0 ? (_operand1 / _operand2) : 0);
    break;
  }
  }
  return result;
}
```