user: 请将以下的汇编代码转换成C语言代码：

```asm
<register_keywords>:
  endbr64
  push   %rbx
  mov    %rdi,%rbx
  mov    $0x3a,%edx
  lea    D252(%rip),%rsi
  call   <hash_keyword@plt>
  mov    $0x3b,%edx
  lea    D285(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x3c,%edx
  lea    D303(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x3d,%edx
  lea    D156(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x3e,%edx
  lea    D269(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x3f,%edx
  lea    D375(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x40,%edx
  lea    D346(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x41,%edx
  lea    D365(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x42,%edx
  lea    D64(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x43,%edx
  lea    D122(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x44,%edx
  lea    D380(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x45,%edx
  lea    D228(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x46,%edx
  lea    D132(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x47,%edx
  lea    D71(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x48,%edx
  lea    D267(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x49,%edx
  lea    D268(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x4a,%edx
  lea    D15(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x4b,%edx
  lea    D248(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x4c,%edx
  lea    D312(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x4d,%edx
  lea    D311(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x4e,%edx
  lea    D187(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x4f,%edx
  lea    D67(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x50,%edx
  lea    D178(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x51,%edx
  lea    D58(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x52,%edx
  lea    D192(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x53,%edx
  lea    D338(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x54,%edx
  lea    D127(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x55,%edx
  lea    D9(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x56,%edx
  lea    D374(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x57,%edx
  lea    D97(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x58,%edx
  lea    D123(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x59,%edx
  lea    D173(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x5a,%edx
  lea    D17(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x5a,%edx
  lea    D274(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x5b,%edx
  lea    D59(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x5c,%edx
  lea    D297(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x5c,%edx
  lea    D5(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x5d,%edx
  lea    D144(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  mov    $0x5e,%edx
  lea    D307(%rip),%rsi
  mov    %rbx,%rdi
  call   <hash_keyword@plt>
  pop    %rbx
  ret
```

tool_calls: name: disassemble_data
arguments: tag: D252
type: string
name: disassemble_data
arguments: tag: D285
type: string
name: disassemble_data
arguments: tag: D303
type: string
name: disassemble_data
arguments: tag: D156
type: string
name: disassemble_data
arguments: tag: D269
type: string
name: disassemble_data
arguments: tag: D375
type: string
name: disassemble_data
arguments: tag: D346
type: string
name: disassemble_data
arguments: tag: D365
type: string
name: disassemble_data
arguments: tag: D64
type: string
name: disassemble_data
arguments: tag: D122
type: string
name: disassemble_data
arguments: tag: D380
type: string
name: disassemble_data
arguments: tag: D228
type: string
name: disassemble_data
arguments: tag: D132
type: string
name: disassemble_data
arguments: tag: D71
type: string
name: disassemble_data
arguments: tag: D267
type: string
name: disassemble_data
arguments: tag: D268
type: string
name: disassemble_data
arguments: tag: D15
type: string
name: disassemble_data
arguments: tag: D248
type: string
name: disassemble_data
arguments: tag: D312
type: string
name: disassemble_data
arguments: tag: D311
type: string
name: disassemble_data
arguments: tag: D187
type: string
name: disassemble_data
arguments: tag: D67
type: string
name: disassemble_data
arguments: tag: D178
type: string
name: disassemble_data
arguments: tag: D58
type: string
name: disassemble_data
arguments: tag: D192
type: string
name: disassemble_data
arguments: tag: D338
type: string
name: disassemble_data
arguments: tag: D127
type: string
name: disassemble_data
arguments: tag: D9
type: string
name: disassemble_data
arguments: tag: D374
type: string
name: disassemble_data
arguments: tag: D97
type: string
name: disassemble_data
arguments: tag: D123
type: string
name: disassemble_data
arguments: tag: D173
type: string
name: disassemble_data
arguments: tag: D17
type: string
name: disassemble_data
arguments: tag: D274
type: string
name: disassemble_data
arguments: tag: D59
type: string
name: disassemble_data
arguments: tag: D297
type: string
name: disassemble_data
arguments: tag: D5
type: string
name: disassemble_data
arguments: tag: D144
type: string
name: disassemble_data
arguments: tag: D307
type: string

tool: D252: auto

tool: D285: break

tool: D303: case

tool: D156: char

tool: D269: const

tool: D375: continue

tool: D346: default

tool: D365: do

tool: D64: double

tool: D122: else

tool: D380: enum

tool: D228: extern

tool: D132: float

tool: D71: for

tool: D267: goto

tool: D268: if

tool: D15: inline

tool: D248: int

tool: D312: long

tool: D311: register

tool: D187: restrict

tool: D67: return

tool: D178: short

tool: D58: signed

tool: D192: sizeof

tool: D338: static

tool: D127: struct

tool: D9: switch

tool: D374: typedef

tool: D97: union

tool: D123: unsigned

tool: D173: void

tool: D17: volatile

tool: D274: __volatile__

tool: D59: while

tool: D297: asm

tool: D5: __asm__

tool: D144: __attribute__

tool: D307: __alignof__

assistant: ```c
void register_keywords(struct compile_state *state) {
  hash_keyword(state, "auto", 58);
  hash_keyword(state, "break", 59);
  hash_keyword(state, "case", 60);
  hash_keyword(state, "char", 61);
  hash_keyword(state, "const", 62);
  hash_keyword(state, "continue", 63);
  hash_keyword(state, "default", 64);
  hash_keyword(state, "do", 65);
  hash_keyword(state, "double", 66);
  hash_keyword(state, "else", 67);
  hash_keyword(state, "enum", 68);
  hash_keyword(state, "extern", 69);
  hash_keyword(state, "float", 70);
  hash_keyword(state, "for", 71);
  hash_keyword(state, "goto", 72);
  hash_keyword(state, "if", 73);
  hash_keyword(state, "inline", 74);
  hash_keyword(state, "int", 75);
  hash_keyword(state, "long", 76);
  hash_keyword(state, "register", 77);
  hash_keyword(state, "restrict", 78);
  hash_keyword(state, "return", 79);
  hash_keyword(state, "short", 80);
  hash_keyword(state, "signed", 81);
  hash_keyword(state, "sizeof", 82);
  hash_keyword(state, "static", 83);
  hash_keyword(state, "struct", 84);
  hash_keyword(state, "switch", 85);
  hash_keyword(state, "typedef", 86);
  hash_keyword(state, "union", 87);
  hash_keyword(state, "unsigned", 88);
  hash_keyword(state, "void", 89);
  hash_keyword(state, "volatile", 90);
  hash_keyword(state, "__volatile__", 90);
  hash_keyword(state, "while", 91);
  hash_keyword(state, "asm", 92);
  hash_keyword(state, "__asm__", 92);
  hash_keyword(state, "__attribute__", 93);
  hash_keyword(state, "__alignof__", 94);
}
```