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

```asm
<EquString>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %edi,-0x24(%rbp)
  mov    -0x24(%rbp),%eax
  and    $0xf,%eax
  mov    %eax,-0x14(%rbp)
  mov    -0x24(%rbp),%eax
  and    $0x30,%eax
  mov    %eax,-0x10(%rbp)
  mov    -0x24(%rbp),%eax
  and    $0x1c0,%eax
  mov    %eax,-0xc(%rbp)
  lea    D543(%rip),%rax
  mov    %rax,-0x8(%rbp)
  cmpl   $0x8,-0x14(%rbp)
  ja     L1114
  mov    -0x14(%rbp),%eax
  lea    0x0(,%rax,4),%rdx
  lea    D284(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D284(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  cmpl   $0x30,-0x10(%rbp)
  je     L735
  cmpl   $0x30,-0x10(%rbp)
  jg     L514
  cmpl   $0x10,-0x10(%rbp)
  je     L197
  cmpl   $0x20,-0x10(%rbp)
  je     L949
  jmp    L514
L197:
  cmpl   $0x0,-0xc(%rbp)
  jne    L578
  lea    D67(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L582
L578:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L582:
  jmp    L1850
L949:
  cmpl   $0x0,-0xc(%rbp)
  jne    L691
  lea    D67(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L368
L691:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L368:
  jmp    L1850
L735:
  cmpl   $0x80,-0xc(%rbp)
  je     L609
  cmpl   $0x80,-0xc(%rbp)
  jg     L223
  cmpl   $0x0,-0xc(%rbp)
  je     L530
  cmpl   $0x40,-0xc(%rbp)
  je     L189
  jmp    L223
L530:
  lea    D67(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L241
L609:
  lea    D419(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L241
L189:
  lea    D364(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L241
L223:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L241:
  jmp    L1850
L514:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L1850:
  jmp    L1709
  mov    -0xc(%rbp),%eax
  and    $0x100,%eax
  test   %eax,%eax
  je     L1681
  andl   $0xfffffeff,-0xc(%rbp)
  cmpl   $0x30,-0x10(%rbp)
  je     L1911
  cmpl   $0x30,-0x10(%rbp)
  jg     L1465
  cmpl   $0x20,-0x10(%rbp)
  je     L1425
  cmpl   $0x20,-0x10(%rbp)
  jg     L1465
  cmpl   $0x0,-0x10(%rbp)
  je     L1384
  cmpl   $0x10,-0x10(%rbp)
  je     L1329
  jmp    L1465
L1384:
  cmpl   $0xc0,-0xc(%rbp)
  je     L291
  cmpl   $0xc0,-0xc(%rbp)
  jg     L238
  cmpl   $0x80,-0xc(%rbp)
  je     L1865
  cmpl   $0x80,-0xc(%rbp)
  jg     L238
  cmpl   $0x0,-0xc(%rbp)
  je     L754
  cmpl   $0x40,-0xc(%rbp)
  je     L1140
  jmp    L238
L754:
  lea    D746(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L1525
L1865:
  lea    D480(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L1525
L1140:
  lea    D371(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L1525
L291:
  lea    D795(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L1525
L238:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L1525:
  jmp    L638
L1329:
  cmpl   $0xc0,-0xc(%rbp)
  je     L1177
  cmpl   $0xc0,-0xc(%rbp)
  jg     L1567
  cmpl   $0x80,-0xc(%rbp)
  je     L1651
  cmpl   $0x80,-0xc(%rbp)
  jg     L1567
  cmpl   $0x0,-0xc(%rbp)
  je     L1265
  cmpl   $0x40,-0xc(%rbp)
  je     L682
  jmp    L1567
L1265:
  lea    D746(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L321
L1651:
  lea    D480(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L321
L682:
  lea    D371(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L321
L1177:
  lea    D795(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L321
L1567:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L321:
  jmp    L638
L1425:
  cmpl   $0xc0,-0xc(%rbp)
  je     L1271
  cmpl   $0xc0,-0xc(%rbp)
  jg     L1803
  cmpl   $0x80,-0xc(%rbp)
  je     L1340
  cmpl   $0x80,-0xc(%rbp)
  jg     L1803
  cmpl   $0x0,-0xc(%rbp)
  je     L1968
  cmpl   $0x40,-0xc(%rbp)
  je     L363
  jmp    L1803
L1968:
  lea    D746(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L586
L1340:
  lea    D480(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L586
L363:
  lea    D371(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L586
L1271:
  lea    D795(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L586
L1803:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L586:
  jmp    L638
L1911:
  cmpl   $0xc0,-0xc(%rbp)
  je     L1
  cmpl   $0xc0,-0xc(%rbp)
  jg     L126
  cmpl   $0x80,-0xc(%rbp)
  je     L1502
  cmpl   $0x80,-0xc(%rbp)
  jg     L126
  cmpl   $0x0,-0xc(%rbp)
  je     L304
  cmpl   $0x40,-0xc(%rbp)
  je     L1460
  jmp    L126
L304:
  lea    D746(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L452
L1502:
  lea    D480(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L452
L1460:
  lea    D371(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L452
L1:
  lea    D795(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L452
L126:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L638
L452:
  jmp    L638
L1465:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L638
L1681:
  cmpl   $0x30,-0x10(%rbp)
  je     L1104
  cmpl   $0x30,-0x10(%rbp)
  jg     L940
  cmpl   $0x10,-0x10(%rbp)
  je     L1958
  cmpl   $0x20,-0x10(%rbp)
  je     L422
  jmp    L940
L1958:
  cmpl   $0x0,-0xc(%rbp)
  jne    L1212
  lea    D67(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L1797
L1212:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L1797:
  jmp    L638
L422:
  cmpl   $0x0,-0xc(%rbp)
  jne    L1222
  lea    D67(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L1245
L1222:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L1245:
  jmp    L638
L1104:
  cmpl   $0x80,-0xc(%rbp)
  je     L1433
  cmpl   $0x80,-0xc(%rbp)
  jg     L1359
  cmpl   $0x0,-0xc(%rbp)
  je     L1628
  cmpl   $0x40,-0xc(%rbp)
  je     L255
  jmp    L1359
L1628:
  lea    D67(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L1647
L1433:
  lea    D419(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L1647
L255:
  lea    D364(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L1647
L1359:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L1647:
  jmp    L638
L940:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L638:
  jmp    L1709
  cmpl   $0x30,-0x10(%rbp)
  je     L282
  cmpl   $0x30,-0x10(%rbp)
  jg     L1875
  cmpl   $0x20,-0x10(%rbp)
  je     L1738
  cmpl   $0x20,-0x10(%rbp)
  jg     L1875
  cmpl   $0x0,-0x10(%rbp)
  je     L1921
  cmpl   $0x10,-0x10(%rbp)
  je     L890
  jmp    L1875
L1921:
  cmpl   $0x0,-0xc(%rbp)
  jne    L953
  lea    D67(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L271
L953:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L271:
  jmp    L204
L890:
  cmpl   $0x100,-0xc(%rbp)
  je     L500
  cmpl   $0x100,-0xc(%rbp)
  jg     L118
  cmpl   $0x0,-0xc(%rbp)
  je     L984
  cmpl   $0x80,-0xc(%rbp)
  je     L585
  jmp    L118
L984:
  lea    D67(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L82
L500:
  lea    D746(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L82
L585:
  lea    D419(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L82
L118:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L82:
  jmp    L204
L1738:
  cmpl   $0x100,-0xc(%rbp)
  je     L1671
  cmpl   $0x100,-0xc(%rbp)
  jg     L612
  cmpl   $0x0,-0xc(%rbp)
  je     L904
  cmpl   $0x40,-0xc(%rbp)
  je     L1977
  jmp    L612
L904:
  lea    D67(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L1965
L1977:
  lea    D364(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L1965
L1671:
  lea    D746(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L1965
L612:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L1965:
  jmp    L204
L282:
  cmpl   $0x180,-0xc(%rbp)
  je     L1036
  cmpl   $0x180,-0xc(%rbp)
  jg     L1985
  cmpl   $0x140,-0xc(%rbp)
  je     L1320
  cmpl   $0x140,-0xc(%rbp)
  jg     L1985
  cmpl   $0x100,-0xc(%rbp)
  je     L1922
  cmpl   $0x100,-0xc(%rbp)
  jg     L1985
  cmpl   $0xc0,-0xc(%rbp)
  je     L1441
  cmpl   $0xc0,-0xc(%rbp)
  jg     L1985
  cmpl   $0x80,-0xc(%rbp)
  je     L43
  cmpl   $0x80,-0xc(%rbp)
  jg     L1985
  cmpl   $0x0,-0xc(%rbp)
  je     L728
  cmpl   $0x40,-0xc(%rbp)
  je     L1129
  jmp    L1985
L728:
  lea    D67(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L695
L43:
  lea    D419(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L695
L1036:
  lea    D480(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L695
L1129:
  lea    D364(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L695
L1441:
  lea    D408(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L695
L1922:
  lea    D746(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L695
L1320:
  lea    D371(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L695
L1985:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L695:
  jmp    L204
L1875:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L204:
  jmp    L1709
  cmpl   $0x30,-0x10(%rbp)
  je     L1134
  cmpl   $0x30,-0x10(%rbp)
  jg     L667
  cmpl   $0x20,-0x10(%rbp)
  je     L1334
  cmpl   $0x20,-0x10(%rbp)
  jg     L667
  cmpl   $0x0,-0x10(%rbp)
  je     L401
  cmpl   $0x10,-0x10(%rbp)
  je     L1487
  jmp    L667
L401:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L1040
L1487:
  cmpl   $0x0,-0xc(%rbp)
  jne    L856
  lea    D67(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
  jmp    L1040
L856:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L1040
L1334:
  cmpl   $0x0,-0xc(%rbp)
  jne    L663
  lea    D67(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
  jmp    L1040
L663:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L1040
L1134:
  cmpl   $0x80,-0xc(%rbp)
  je     L537
  cmpl   $0x80,-0xc(%rbp)
  jg     L1102
  cmpl   $0x0,-0xc(%rbp)
  je     L1478
  cmpl   $0x40,-0xc(%rbp)
  je     L790
  jmp    L1102
L1478:
  lea    D67(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L630
L537:
  lea    D419(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L630
L790:
  lea    D364(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L630
L1102:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L630:
  jmp    L1040
L667:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L1040:
  jmp    L1709
  cmpl   $0x30,-0x10(%rbp)
  je     L1273
  cmpl   $0x30,-0x10(%rbp)
  jg     L877
  cmpl   $0x20,-0x10(%rbp)
  je     L387
  cmpl   $0x20,-0x10(%rbp)
  jg     L877
  cmpl   $0x0,-0x10(%rbp)
  je     L618
  cmpl   $0x10,-0x10(%rbp)
  je     L1296
  jmp    L877
L618:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L1297
L1296:
  cmpl   $0x0,-0xc(%rbp)
  jne    L1580
  lea    D67(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L1057
L1580:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L1057:
  jmp    L1297
L387:
  cmpl   $0x0,-0xc(%rbp)
  jne    L1863
  lea    D67(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L534
L1863:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L534:
  jmp    L1297
L1273:
  cmpl   $0x80,-0xc(%rbp)
  je     L280
  cmpl   $0x80,-0xc(%rbp)
  jg     L169
  cmpl   $0x0,-0xc(%rbp)
  je     L1254
  cmpl   $0x40,-0xc(%rbp)
  je     L812
  jmp    L169
L1254:
  lea    D67(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L1345
L280:
  lea    D419(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L1345
L812:
  lea    D364(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L1345
L169:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L1345:
  jmp    L1297
L877:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L1297:
  jmp    L1709
L1114:
  lea    D352(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L1709:
  mov    -0x8(%rbp),%rax
  pop    %rbp
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D543
type: string
name: unpack_data
arguments: data_label: D67
type: string
name: unpack_data
arguments: data_label: D352
type: string
name: unpack_data
arguments: data_label: D419
type: string
name: unpack_data
arguments: data_label: D364
type: string
name: unpack_data
arguments: data_label: D746
type: string
name: unpack_data
arguments: data_label: D480
type: string
name: unpack_data
arguments: data_label: D371
type: string
name: unpack_data
arguments: data_label: D795
type: string
name: unpack_data
arguments: data_label: D408
type: string

tool: 

tool: D67: m

tool: D352: ??

tool: D419: M

tool: D364: n

tool: D746: im

tool: D480: iM

tool: D371: in

tool: D795: iN

tool: D408: N

assistant: ```c
const char *EquString(int EquVal) {
  int bFrom = EquVal & (0x0001 | 0x0002 | 0x0004 | 0x0008);
  int bType = EquVal & (0x0010 | 0x0020);
  int bEq2 = EquVal & (0x0040 | 0x0080 | 0x0100);
  const char *r = "";
  switch (bFrom) {
  case 0x0001:
    switch (bType) {
    case 0x0010:
      switch (bEq2) {
      case 0:
        r = "m";
        break;
      default:
        r = "??";
        break;
      }
      break;
    case 0x0020:
      switch (bEq2) {
      case 0:
        r = "m";
        break;
      default:
        r = "??";
        break;
      }
      break;
    case (0x0020 | 0x0010):
      switch (bEq2) {
      case 0:
        r = "m";
        break;
      case 0x0080:
        r = "M";
        break;
      case 0x0040:
        r = "n";
        break;
      default:
        r = "??";
        break;
      }
      break;
    default:
      r = "??";
      break;
    }
    break;
  case 0x0002:
    if (bEq2 & 0x0100) {
      bEq2 &= ~0x0100;
      switch (bType) {
      case 0:
        switch (bEq2) {
        case 0:
          r = "im";
          break;
        case 0x0080:
          r = "iM";
          break;
        case 0x0040:
          r = "in";
          break;
        case (0x0040 | 0x0080):
          r = "iN";
          break;
        default:
          r = "??";
          break;
        }
        break;
      case 0x0010:
        switch (bEq2) {
        case 0:
          r = "im";
          break;
        case 0x0080:
          r = "iM";
          break;
        case 0x0040:
          r = "in";
          break;
        case (0x0040 | 0x0080):
          r = "iN";
          break;
        default:
          r = "??";
          break;
        }
        break;
      case 0x0020:
        switch (bEq2) {
        case 0:
          r = "im";
          break;
        case 0x0080:
          r = "iM";
          break;
        case 0x0040:
          r = "in";
          break;
        case (0x0040 | 0x0080):
          r = "iN";
          break;
        default:
          r = "??";
          break;
        }
        break;
      case (0x0020 | 0x0010):
        switch (bEq2) {
        case 0:
          r = "im";
          break;
        case 0x0080:
          r = "iM";
          break;
        case 0x0040:
          r = "in";
          break;
        case (0x0040 | 0x0080):
          r = "iN";
          break;
        default:
          r = "??";
        }
        break;
      default:
        r = "??";
        break;
      }
    } else {
      switch (bType) {
      case 0x0010:
        switch (bEq2) {
        case 0:
          r = "m";
          break;
        default:
          r = "??";
          break;
        }
        break;
      case 0x0020:
        switch (bEq2) {
        case 0:
          r = "m";
          break;
        default:
          r = "??";
          break;
        }
        break;
      case (0x0020 | 0x0010):
        switch (bEq2) {
        case 0:
          r = "m";
          break;
        case 0x0080:
          r = "M";
          break;
        case 0x0040:
          r = "n";
          break;
        default:
          r = "??";
          break;
        }
        break;
      default:
        r = "??";
        break;
      }
    }
    break;
  case (0x0004 | 0x0002):
    switch (bType) {
    case 0:
      switch (bEq2) {
      case 0:
        r = "m";
        break;
      default:
        r = "??";
        break;
      }
      break;
    case 0x0010:
      switch (bEq2) {
      case 0:
        r = "m";
        break;
      case 0x0100:
        r = "im";
        break;
      case 0x0080:
        r = "M";
        break;
      default:
        r = "??";
        break;
      }
      break;
    case 0x0020:
      switch (bEq2) {
      case 0:
        r = "m";
        break;
      case 0x0040:
        r = "n";
        break;
      case 0x0100:
        r = "im";
        break;
      default:
        r = "??";
        break;
      }
      break;
    case (0x0020 | 0x0010):
      switch (bEq2) {
      case 0:
        r = "m";
        break;
      case 0x0080:
        r = "M";
        break;
      case (0x0080 | 0x0100):
        r = "iM";
        break;
      case 0x0040:
        r = "n";
        break;
      case (0x0040 | 0x0080):
        r = "N";
        break;
      case 0x0100:
        r = "im";
        break;
      case (0x0040 | 0x0100):
        r = "in";
        break;
      default:
        r = "??";
        break;
      }
      break;
    default:
      r = "??";
      break;
    }
    break;
  case 0x0004:
    switch (bType) {
    case 0:
      r = "??";
      break;
    case 0x0010:
      switch (bEq2) {
      case 0:
        r = "m";
        break;
      default:
        r = "??";
      }
      break;
    case 0x0020:
      switch (bEq2) {
      case 0:
        r = "m";
        break;
      default:
        r = "??";
      }
      break;
    case (0x0020 | 0x0010):
      switch (bEq2) {
      case 0:
        r = "m";
        break;
      case 0x0080:
        r = "M";
        break;
      case 0x0040:
        r = "n";
        break;
      default:
        r = "??";
        break;
      }
      break;
    default:
      r = "??";
      break;
    }
    break;
  case 0x0008:
    switch (bType) {
    case 0:
      r = "??";
      break;
    case 0x0010:
      switch (bEq2) {
      case 0:
        r = "m";
        break;
      default:
        r = "??";
        break;
      }
      break;
    case 0x0020:
      switch (bEq2) {
      case 0:
        r = "m";
        break;
      default:
        r = "??";
        break;
      }
      break;
    case (0x0020 | 0x0010):
      switch (bEq2) {
      case 0:
        r = "m";
        break;
      case 0x0080:
        r = "M";
        break;
      case 0x0040:
        r = "n";
        break;
      default:
        r = "??";
        break;
      }
      break;
    default:
      r = "??";
      break;
    }
    break;
  default:
    r = "??";
    break;
  }
  return r;
}
```