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

```asm
<U_wmr_escnames>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %edi,-0x14(%rbp)
  cmpl   $0x0,-0x14(%rbp)
  js     L147
  cmpl   $0x23,-0x14(%rbp)
  jg     L147
  cmpl   $0x23,-0x14(%rbp)
  ja     L867
  mov    -0x14(%rbp),%eax
  lea    0x0(,%rax,4),%rdx
  lea    D416(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D416(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D300(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D112(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D109(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D40(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D466(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D275(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D333(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D90(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D88(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D248(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D133(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D575(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D182(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D579(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D455(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D240(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D439(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D302(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D35(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D346(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D474(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D475(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D238(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D149(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D41(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D28(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D284(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D264(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D303(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D518(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D388(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D263(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D345(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D137(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L735
  lea    D12(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L735:
  jmp    L867
L147:
  cmpl   $0x25,-0x14(%rbp)
  jne    L506
  lea    D480(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L867
L506:
  cmpl   $0x26,-0x14(%rbp)
  jne    L609
  lea    D360(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L867
L609:
  cmpl   $0x2a,-0x14(%rbp)
  jne    L874
  lea    D548(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L867
L874:
  cmpl   $0x100,-0x14(%rbp)
  jne    L42
  lea    D74(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L867
L42:
  cmpl   $0x102,-0x14(%rbp)
  jne    L711
  lea    D419(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L867
L711:
  cmpl   $0x200,-0x14(%rbp)
  jne    L16
  lea    D517(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L867
L16:
  cmpl   $0x201,-0x14(%rbp)
  jne    L824
  lea    D545(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L867
L824:
  cmpl   $0x202,-0x14(%rbp)
  jne    L164
  lea    D370(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L867
L164:
  cmpl   $0x801,-0x14(%rbp)
  jne    L366
  lea    D621(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L867
L366:
  cmpl   $0xc01,-0x14(%rbp)
  jne    L185
  lea    D448(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L867
L185:
  cmpl   $0x1000,-0x14(%rbp)
  jne    L876
  lea    D339(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L867
L876:
  cmpl   $0x1001,-0x14(%rbp)
  jne    L25
  lea    D604(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L867
L25:
  cmpl   $0x1002,-0x14(%rbp)
  jne    L380
  lea    D368(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L867
L380:
  cmpl   $0x100e,-0x14(%rbp)
  jne    L98
  lea    D521(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L867
L98:
  cmpl   $0x100f,-0x14(%rbp)
  jne    L363
  lea    D381(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L867
L363:
  cmpl   $0x1010,-0x14(%rbp)
  jne    L446
  lea    D10(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L867
L446:
  cmpl   $0x1013,-0x14(%rbp)
  jne    L784
  lea    D1(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L867
L784:
  cmpl   $0x1014,-0x14(%rbp)
  jne    L553
  lea    D291(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L867
L553:
  cmpl   $0x1015,-0x14(%rbp)
  jne    L865
  lea    D75(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L867
L865:
  cmpl   $0x1016,-0x14(%rbp)
  jne    L254
  lea    D598(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L867
L254:
  cmpl   $0x1017,-0x14(%rbp)
  jne    L345
  lea    D173(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L867
L345:
  cmpl   $0x1018,-0x14(%rbp)
  jne    L775
  lea    D59(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L867
L775:
  cmpl   $0x1019,-0x14(%rbp)
  jne    L177
  lea    D591(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L867
L177:
  cmpl   $0x101a,-0x14(%rbp)
  jne    L670
  lea    D8(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L867
L670:
  cmpl   $0x11d8,-0x14(%rbp)
  jne    L425
  lea    D168(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L867
L425:
  lea    D97(%rip),%rax
  mov    %rax,-0x8(%rbp)
L867:
  mov    -0x8(%rbp),%rax
  pop    %rbp
  ret
```

tool_calls: name: read_data
arguments: data_label: D300
type_infered: string
name: read_data
arguments: data_label: D112
type_infered: string
name: read_data
arguments: data_label: D109
type_infered: string
name: read_data
arguments: data_label: D40
type_infered: string
name: read_data
arguments: data_label: D466
type_infered: string
name: read_data
arguments: data_label: D275
type_infered: string
name: read_data
arguments: data_label: D333
type_infered: string
name: read_data
arguments: data_label: D90
type_infered: string
name: read_data
arguments: data_label: D88
type_infered: string
name: read_data
arguments: data_label: D248
type_infered: string
name: read_data
arguments: data_label: D133
type_infered: string
name: read_data
arguments: data_label: D575
type_infered: string
name: read_data
arguments: data_label: D182
type_infered: string
name: read_data
arguments: data_label: D579
type_infered: string
name: read_data
arguments: data_label: D455
type_infered: string
name: read_data
arguments: data_label: D240
type_infered: string
name: read_data
arguments: data_label: D439
type_infered: string
name: read_data
arguments: data_label: D302
type_infered: string
name: read_data
arguments: data_label: D35
type_infered: string
name: read_data
arguments: data_label: D346
type_infered: string
name: read_data
arguments: data_label: D474
type_infered: string
name: read_data
arguments: data_label: D475
type_infered: string
name: read_data
arguments: data_label: D238
type_infered: string
name: read_data
arguments: data_label: D149
type_infered: string
name: read_data
arguments: data_label: D41
type_infered: string
name: read_data
arguments: data_label: D28
type_infered: string
name: read_data
arguments: data_label: D284
type_infered: string
name: read_data
arguments: data_label: D264
type_infered: string
name: read_data
arguments: data_label: D303
type_infered: string
name: read_data
arguments: data_label: D518
type_infered: string
name: read_data
arguments: data_label: D388
type_infered: string
name: read_data
arguments: data_label: D263
type_infered: string
name: read_data
arguments: data_label: D345
type_infered: string
name: read_data
arguments: data_label: D137
type_infered: string
name: read_data
arguments: data_label: D12
type_infered: string
name: read_data
arguments: data_label: D480
type_infered: string
name: read_data
arguments: data_label: D360
type_infered: string
name: read_data
arguments: data_label: D548
type_infered: string
name: read_data
arguments: data_label: D74
type_infered: string
name: read_data
arguments: data_label: D419
type_infered: string
name: read_data
arguments: data_label: D517
type_infered: string
name: read_data
arguments: data_label: D545
type_infered: string
name: read_data
arguments: data_label: D370
type_infered: string
name: read_data
arguments: data_label: D621
type_infered: string
name: read_data
arguments: data_label: D448
type_infered: string
name: read_data
arguments: data_label: D339
type_infered: string
name: read_data
arguments: data_label: D604
type_infered: string
name: read_data
arguments: data_label: D368
type_infered: string
name: read_data
arguments: data_label: D521
type_infered: string
name: read_data
arguments: data_label: D381
type_infered: string
name: read_data
arguments: data_label: D10
type_infered: string
name: read_data
arguments: data_label: D1
type_infered: string
name: read_data
arguments: data_label: D291
type_infered: string
name: read_data
arguments: data_label: D75
type_infered: string
name: read_data
arguments: data_label: D598
type_infered: string
name: read_data
arguments: data_label: D173
type_infered: string
name: read_data
arguments: data_label: D59
type_infered: string
name: read_data
arguments: data_label: D591
type_infered: string
name: read_data
arguments: data_label: D8
type_infered: string
name: read_data
arguments: data_label: D168
type_infered: string
name: read_data
arguments: data_label: D97
type_infered: string

tool: D300: NEWFRAME

tool: D112: ABORTDOC

tool: D109: NEXTBAND

tool: D40: SETCOLORTABLE

tool: D466: GETCOLORTABLE

tool: D275: FLUSHOUT

tool: D333: DRAFTMODE

tool: D90: QUERYESCSUPPORT

tool: D88: SETABORTPROC

tool: D248: STARTDOC

tool: D133: ENDDOC

tool: D575: GETPHYSPAGESIZE

tool: D182: GETPRINTINGOFFSET

tool: D579: GETSCALINGFACTOR

tool: D455: META_ESCAPE_ENHANCED_METAFILE

tool: D240: SETPENWIDTH

tool: D439: SETCOPYCOUNT

tool: D302: SETPAPERSOURCE

tool: D35: PASSTHROUGH

tool: D346: GETTECHNOLOGY

tool: D474: SETLINECAP

tool: D475: SETLINEJOIN

tool: D238: SETMITERLIMIT

tool: D149: BANDINFO

tool: D41: DRAWPATTERNRECT

tool: D28: GETVECTORPENSIZE

tool: D284: GETVECTORBRUSHSIZE

tool: D264: ENABLEDUPLEX

tool: D303: GETSETPAPERBINS

tool: D518: GETSETPRINTORIENT

tool: D388: ENUMPAPERBINS

tool: D263: SETDIBSCALING

tool: D345: EPSPRINTING

tool: D137: ENUMPAPERMETRICS

tool: D12: GETSETPAPERMETRICS

tool: D480: POSTSCRIPT_DATA

tool: D360: POSTSCRIPT_IGNORE

tool: D548: GETDEVICEUNITS

tool: D74: GETEXTENDEDTEXTMETRICS

tool: D419: GETPAIRKERNTABLE

tool: D517: EXTTEXTOUT

tool: D545: GETFACENAME

tool: D370: DOWNLOADFACE

tool: D621: METAFILE_DRIVER

tool: D448: QUERYDIBSUPPORT

tool: D339: BEGIN_PATH

tool: D604: CLIP_TO_PATH

tool: D368: END_PATH

tool: D521: OPEN_CHANNEL

tool: D381: DOWNLOADHEADER

tool: D10: CLOSE_CHANNEL

tool: D1: POSTSCRIPT_PASSTHROUGH

tool: D291: ENCAPSULATED_POSTSCRIPT

tool: D75: POSTSCRIPT_IDENTIFY

tool: D598: POSTSCRIPT_INJECTION

tool: D173: CHECKJPEGFORMAT

tool: D59: CHECKPNGFORMAT

tool: D591: GET_PS_FEATURESETTING

tool: D8: MXDC_ESCAPE

tool: D168: SPCLPASSTHROUGH2

tool: D97: UNKNOWN_ESCAPE

assistant: ```c
char *U_wmr_escnames(int idx) {
  char *name;
  if (idx >= 0 && idx <= 0x0023) {
    switch (idx) {
    case 0x0001:
      name = "NEWFRAME";
      break;
    case 0x0002:
      name = "ABORTDOC";
      break;
    case 0x0003:
      name = "NEXTBAND";
      break;
    case 0x0004:
      name = "SETCOLORTABLE";
      break;
    case 0x0005:
      name = "GETCOLORTABLE";
      break;
    case 0x0006:
      name = "FLUSHOUT";
      break;
    case 0x0007:
      name = "DRAFTMODE";
      break;
    case 0x0008:
      name = "QUERYESCSUPPORT";
      break;
    case 0x0009:
      name = "SETABORTPROC";
      break;
    case 0x000A:
      name = "STARTDOC";
      break;
    case 0x000B:
      name = "ENDDOC";
      break;
    case 0x000C:
      name = "GETPHYSPAGESIZE";
      break;
    case 0x000D:
      name = "GETPRINTINGOFFSET";
      break;
    case 0x000E:
      name = "GETSCALINGFACTOR";
      break;
    case 0x000F:
      name = "META_ESCAPE_ENHANCED_METAFILE";
      break;
    case 0x0010:
      name = "SETPENWIDTH";
      break;
    case 0x0011:
      name = "SETCOPYCOUNT";
      break;
    case 0x0012:
      name = "SETPAPERSOURCE";
      break;
    case 0x0013:
      name = "PASSTHROUGH";
      break;
    case 0x0014:
      name = "GETTECHNOLOGY";
      break;
    case 0x0015:
      name = "SETLINECAP";
      break;
    case 0x0016:
      name = "SETLINEJOIN";
      break;
    case 0x0017:
      name = "SETMITERLIMIT";
      break;
    case 0x0018:
      name = "BANDINFO";
      break;
    case 0x0019:
      name = "DRAWPATTERNRECT";
      break;
    case 0x001A:
      name = "GETVECTORPENSIZE";
      break;
    case 0x001B:
      name = "GETVECTORBRUSHSIZE";
      break;
    case 0x001C:
      name = "ENABLEDUPLEX";
      break;
    case 0x001D:
      name = "GETSETPAPERBINS";
      break;
    case 0x001E:
      name = "GETSETPRINTORIENT";
      break;
    case 0x001F:
      name = "ENUMPAPERBINS";
      break;
    case 0x0020:
      name = "SETDIBSCALING";
      break;
    case 0x0021:
      name = "EPSPRINTING";
      break;
    case 0x0022:
      name = "ENUMPAPERMETRICS";
      break;
    case 0x0023:
      name = "GETSETPAPERMETRICS";
      break;
    }
  } else if (idx == 0x0025) {
    name = "POSTSCRIPT_DATA";
  } else if (idx == 0x0026) {
    name = "POSTSCRIPT_IGNORE";
  } else if (idx == 0x002A) {
    name = "GETDEVICEUNITS";
  } else if (idx == 0x0100) {
    name = "GETEXTENDEDTEXTMETRICS";
  } else if (idx == 0x0102) {
    name = "GETPAIRKERNTABLE";
  } else if (idx == 0x0200) {
    name = "EXTTEXTOUT";
  } else if (idx == 0x0201) {
    name = "GETFACENAME";
  } else if (idx == 0x0202) {
    name = "DOWNLOADFACE";
  } else if (idx == 0x0801) {
    name = "METAFILE_DRIVER";
  } else if (idx == 0x0C01) {
    name = "QUERYDIBSUPPORT";
  } else if (idx == 0x1000) {
    name = "BEGIN_PATH";
  } else if (idx == 0x1001) {
    name = "CLIP_TO_PATH";
  } else if (idx == 0x1002) {
    name = "END_PATH";
  } else if (idx == 0x100E) {
    name = "OPEN_CHANNEL";
  } else if (idx == 0x100F) {
    name = "DOWNLOADHEADER";
  } else if (idx == 0x1010) {
    name = "CLOSE_CHANNEL";
  } else if (idx == 0x1013) {
    name = "POSTSCRIPT_PASSTHROUGH";
  } else if (idx == 0x1014) {
    name = "ENCAPSULATED_POSTSCRIPT";
  } else if (idx == 0x1015) {
    name = "POSTSCRIPT_IDENTIFY";
  } else if (idx == 0x1016) {
    name = "POSTSCRIPT_INJECTION";
  } else if (idx == 0x1017) {
    name = "CHECKJPEGFORMAT";
  } else if (idx == 0x1018) {
    name = "CHECKPNGFORMAT";
  } else if (idx == 0x1019) {
    name = "GET_PS_FEATURESETTING";
  } else if (idx == 0x101A) {
    name = "MXDC_ESCAPE";
  } else if (idx == 0x11D8) {
    name = "SPCLPASSTHROUGH2";
  } else {
    name = "UNKNOWN_ESCAPE";
  }
  return (name);
}
```