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

```asm
<U_PMF_HATCHSTYLEENUMERATION_print>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %edi,-0x14(%rbp)
  movl   $0x1,-0x4(%rbp)
  cmpl   $0x34,-0x14(%rbp)
  ja     L132
  mov    -0x14(%rbp),%eax
  lea    0x0(,%rax,4),%rdx
  lea    D421(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D421(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D92(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D42(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D5(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D432(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D385(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D219(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D48(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D399(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D102(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D78(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D303(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D132(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D336(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D374(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D479(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D268(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D318(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D503(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D379(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D33(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D425(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D437(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D182(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D0(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D384(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D428(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D260(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D86(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D279(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D495(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D99(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D145(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D444(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D308(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D220(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D450(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D240(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D267(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D418(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D397(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D542(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D409(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D21(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D534(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D143(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D157(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D286(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D201(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D545(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D321(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D50(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D330(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
  lea    D190(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L120
L132:
  movl   $0x0,-0x4(%rbp)
  mov    -0x14(%rbp),%eax
  mov    %eax,%esi
  lea    D57(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  nop
L120:
  mov    -0x4(%rbp),%eax
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: label: D92
datatype: string
name: disassemble_data
arguments: label: D42
datatype: string
name: disassemble_data
arguments: label: D5
datatype: string
name: disassemble_data
arguments: label: D432
datatype: string
name: disassemble_data
arguments: label: D385
datatype: string
name: disassemble_data
arguments: label: D219
datatype: string
name: disassemble_data
arguments: label: D48
datatype: string
name: disassemble_data
arguments: label: D399
datatype: string
name: disassemble_data
arguments: label: D102
datatype: string
name: disassemble_data
arguments: label: D78
datatype: string
name: disassemble_data
arguments: label: D303
datatype: string
name: disassemble_data
arguments: label: D132
datatype: string
name: disassemble_data
arguments: label: D336
datatype: string
name: disassemble_data
arguments: label: D374
datatype: string
name: disassemble_data
arguments: label: D479
datatype: string
name: disassemble_data
arguments: label: D268
datatype: string
name: disassemble_data
arguments: label: D318
datatype: string
name: disassemble_data
arguments: label: D503
datatype: string
name: disassemble_data
arguments: label: D379
datatype: string
name: disassemble_data
arguments: label: D33
datatype: string
name: disassemble_data
arguments: label: D425
datatype: string
name: disassemble_data
arguments: label: D437
datatype: string
name: disassemble_data
arguments: label: D182
datatype: string
name: disassemble_data
arguments: label: D0
datatype: string
name: disassemble_data
arguments: label: D384
datatype: string
name: disassemble_data
arguments: label: D428
datatype: string
name: disassemble_data
arguments: label: D260
datatype: string
name: disassemble_data
arguments: label: D86
datatype: string
name: disassemble_data
arguments: label: D279
datatype: string
name: disassemble_data
arguments: label: D495
datatype: string
name: disassemble_data
arguments: label: D99
datatype: string
name: disassemble_data
arguments: label: D145
datatype: string
name: disassemble_data
arguments: label: D444
datatype: string
name: disassemble_data
arguments: label: D308
datatype: string
name: disassemble_data
arguments: label: D220
datatype: string
name: disassemble_data
arguments: label: D450
datatype: string
name: disassemble_data
arguments: label: D240
datatype: string
name: disassemble_data
arguments: label: D267
datatype: string
name: disassemble_data
arguments: label: D418
datatype: string
name: disassemble_data
arguments: label: D397
datatype: string
name: disassemble_data
arguments: label: D542
datatype: string
name: disassemble_data
arguments: label: D409
datatype: string
name: disassemble_data
arguments: label: D21
datatype: string
name: disassemble_data
arguments: label: D534
datatype: string
name: disassemble_data
arguments: label: D143
datatype: string
name: disassemble_data
arguments: label: D157
datatype: string
name: disassemble_data
arguments: label: D286
datatype: string
name: disassemble_data
arguments: label: D201
datatype: string
name: disassemble_data
arguments: label: D545
datatype: string
name: disassemble_data
arguments: label: D321
datatype: string
name: disassemble_data
arguments: label: D50
datatype: string
name: disassemble_data
arguments: label: D330
datatype: string
name: disassemble_data
arguments: label: D190
datatype: string
name: disassemble_data
arguments: label: D57
datatype: string

tool: D92: Horizontal

tool: D42: Vertical

tool: D5: ForwardDiagonal

tool: D432: BackwardDiagonal

tool: D385: LargeGrid

tool: D219: DiagonalCross

tool: D48: 05Percent

tool: D399: 10Percent

tool: D102: 20Percent

tool: D78: 25Percent

tool: D303: 30Percent

tool: D132: 40Percent

tool: D336: 50Percent

tool: D374: 60Percent

tool: D479: 70Percent

tool: D268: 75Percent

tool: D318: 80Percent

tool: D503: 90Percent

tool: D379: LightDownwardDiagonal

tool: D33: LightUpwardDiagonal

tool: D425: DarkDownwardDiagonal

tool: D437: DarkUpwardDiagonal

tool: D182: WideDownwardDiagonal

tool: D0: WideUpwardDiagonal

tool: D384: LightVertical

tool: D428: LightHorizontal

tool: D260: NarrowVertical

tool: D86: NarrowHorizontal

tool: D279: DarkVertical

tool: D495: DarkHorizontal

tool: D99: DashedDownwardDiagonal

tool: D145: DashedUpwardDiagonal

tool: D444: DashedHorizontal

tool: D308: DashedVertical

tool: D220: SmallConfetti

tool: D450: LargeConfetti

tool: D240: ZigZag

tool: D267: Wave

tool: D418: DiagonalBrick

tool: D397: HorizontalBrick

tool: D542: Weave

tool: D409: Plaid

tool: D21: Divot

tool: D534: DottedGrid

tool: D143: DottedDiamond

tool: D157: Shingle

tool: D286: Trellis

tool: D201: Sphere

tool: D545: SmallGrid

tool: D321: SmallCheckerBoard

tool: D50: LargeCheckerBoard

tool: D330: OutlinedDiamond

tool: D190: SolidDiamond

tool: D57: INVALID(%d)

assistant: ```c
int U_PMF_HATCHSTYLEENUMERATION_print(int hstype) {
  int status = 1;
  switch (hstype) {
  case 0x00000000:
    printf("Horizontal");
    break;
  case 0x00000001:
    printf("Vertical");
    break;
  case 0x00000002:
    printf("ForwardDiagonal");
    break;
  case 0x00000003:
    printf("BackwardDiagonal");
    break;
  case 0x00000004:
    printf("LargeGrid");
    break;
  case 0x00000005:
    printf("DiagonalCross");
    break;
  case 0x00000006:
    printf("05Percent");
    break;
  case 0x00000007:
    printf("10Percent");
    break;
  case 0x00000008:
    printf("20Percent");
    break;
  case 0x00000009:
    printf("25Percent");
    break;
  case 0x0000000A:
    printf("30Percent");
    break;
  case 0x0000000B:
    printf("40Percent");
    break;
  case 0x0000000C:
    printf("50Percent");
    break;
  case 0x0000000D:
    printf("60Percent");
    break;
  case 0x0000000E:
    printf("70Percent");
    break;
  case 0x0000000F:
    printf("75Percent");
    break;
  case 0x00000010:
    printf("80Percent");
    break;
  case 0x00000011:
    printf("90Percent");
    break;
  case 0x00000012:
    printf("LightDownwardDiagonal");
    break;
  case 0x00000013:
    printf("LightUpwardDiagonal");
    break;
  case 0x00000014:
    printf("DarkDownwardDiagonal");
    break;
  case 0x00000015:
    printf("DarkUpwardDiagonal");
    break;
  case 0x00000016:
    printf("WideDownwardDiagonal");
    break;
  case 0x00000017:
    printf("WideUpwardDiagonal");
    break;
  case 0x00000018:
    printf("LightVertical");
    break;
  case 0x00000019:
    printf("LightHorizontal");
    break;
  case 0x0000001A:
    printf("NarrowVertical");
    break;
  case 0x0000001B:
    printf("NarrowHorizontal");
    break;
  case 0x0000001C:
    printf("DarkVertical");
    break;
  case 0x0000001D:
    printf("DarkHorizontal");
    break;
  case 0x0000001E:
    printf("DashedDownwardDiagonal");
    break;
  case 0x0000001F:
    printf("DashedUpwardDiagonal");
    break;
  case 0x00000020:
    printf("DashedHorizontal");
    break;
  case 0x00000021:
    printf("DashedVertical");
    break;
  case 0x00000022:
    printf("SmallConfetti");
    break;
  case 0x00000023:
    printf("LargeConfetti");
    break;
  case 0x00000024:
    printf("ZigZag");
    break;
  case 0x00000025:
    printf("Wave");
    break;
  case 0x00000026:
    printf("DiagonalBrick");
    break;
  case 0x00000027:
    printf("HorizontalBrick");
    break;
  case 0x00000028:
    printf("Weave");
    break;
  case 0x00000029:
    printf("Plaid");
    break;
  case 0x0000002A:
    printf("Divot");
    break;
  case 0x0000002B:
    printf("DottedGrid");
    break;
  case 0x0000002C:
    printf("DottedDiamond");
    break;
  case 0x0000002D:
    printf("Shingle");
    break;
  case 0x0000002E:
    printf("Trellis");
    break;
  case 0x0000002F:
    printf("Sphere");
    break;
  case 0x00000030:
    printf("SmallGrid");
    break;
  case 0x00000031:
    printf("SmallCheckerBoard");
    break;
  case 0x00000032:
    printf("LargeCheckerBoard");
    break;
  case 0x00000033:
    printf("OutlinedDiamond");
    break;
  case 0x00000034:
    printf("SolidDiamond");
    break;
  default:
    status = 0;
    printf("INVALID(%d)", hstype);
    break;
  }
  return (status);
}
```