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

```asm
<romMenu>:
  endbr64
  push   %r12
  lea    D183(%rip),%rdi
  lea    D18(%rip),%r12
  sub    $0x10,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  call   <system@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D193(%rip),%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D131(%rip),%rdi
  call   <printf@plt>
  lea    D296(%rip),%rdi
  call   <printf@plt>
  lea    D82(%rip),%rdi
  call   <printf@plt>
  lea    D612(%rip),%rdi
  call   <printf@plt>
  lea    D90(%rip),%rdi
  call   <printf@plt>
  lea    D317(%rip),%rdi
  call   <printf@plt>
  lea    D40(%rip),%rdi
  call   <printf@plt>
  lea    D179(%rip),%rdi
  call   <printf@plt>
  lea    D366(%rip),%rdi
  call   <printf@plt>
  lea    D374(%rip),%rdi
  call   <printf@plt>
  mov    %r12,%rdi
  call   <printf@plt>
  lea    D564(%rip),%rdi
  call   <printf@plt>
  lea    D521(%rip),%rdi
  call   <printf@plt>
  lea    0x4(%rsp),%rsi
  lea    D563(%rip),%rdi
  call   <scanf@plt>
  mov    0x4(%rsp),%r12d
  cmp    $0xa,%r12d
  ja     L98
  lea    D613(%rip),%rdx
  mov    %r12d,%eax
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopl   (%rax)
  xor    %eax,%eax
  call   <getchar@plt>
  lea    D355(%rip),%rdi
  call   <printf@plt>
  lea    D489(%rip),%rdi
  call   <printf@plt>
  lea    D467(%rip),%rdi
  call   <printf@plt>
  lea    D45(%rip),%rdi
  call   <printf@plt>
  lea    D171(%rip),%rdi
  call   <printf@plt>
  lea    D168(%rip),%rdi
  call   <printf@plt>
  lea    D106(%rip),%rdi
  call   <printf@plt>
  lea    D337(%rip),%rdi
  call   <printf@plt>
  lea    D66(%rip),%rdi
  call   <printf@plt>
  lea    D136(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  call   <romMenu>
  mov    %eax,%r12d
  cs nopw 0x0(%rax,%rax,1)
L13:
  mov    0x8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L84
  add    $0x10,%rsp
  mov    %r12d,%eax
  pop    %r12
  ret
  xchg   %ax,%ax
  xor    %eax,%eax
  call   <advancedMenu@plt>
  nopw   0x0(%rax,%rax,1)
L11:
  call   <romMenu>
  mov    %eax,%r12d
  jmp    L13
  nopw   0x0(%rax,%rax,1)
  lea    D186(%rip),%rdi
  call   <printf@plt>
  jmp    L13
  xchg   %ax,%ax
  lea    D87(%rip),%rdi
  call   <system@plt>
  lea    D578(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  jmp    L11
  nopl   0x0(%rax)
  lea    D430(%rip),%rdi
  call   <system@plt>
  lea    D597(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  jmp    L11
  nopl   0x0(%rax)
  lea    D156(%rip),%rdi
  call   <system@plt>
  lea    D26(%rip),%rdi
  call   <system@plt>
  lea    D88(%rip),%rdi
  call   <printf@plt>
  lea    D380(%rip),%rdi
  call   <system@plt>
  lea    D246(%rip),%rdi
  call   <system@plt>
  lea    D486(%rip),%rdi
  call   <printf@plt>
  lea    D50(%rip),%rdi
  call   <system@plt>
  lea    D305(%rip),%rdi
  call   <printf@plt>
  lea    D347(%rip),%rdi
  call   <system@plt>
  lea    D617(%rip),%rdi
  call   <printf@plt>
  lea    D568(%rip),%rdi
  call   <system@plt>
  lea    D113(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  jmp    L11
  nopl   0x0(%rax)
  lea    D103(%rip),%rdi
  call   <printf@plt>
  lea    D591(%rip),%rdi
  call   <system@plt>
  lea    D455(%rip),%rdi
  call   <printf@plt>
  lea    D225(%rip),%rdi
  call   <system@plt>
  lea    D459(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  lea    D610(%rip),%rdi
  call   <system@plt>
  jmp    L11
  nopl   0x0(%rax)
  lea    D500(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  lea    D252(%rip),%rdi
  call   <printf@plt>
  lea    D25(%rip),%rdi
  call   <system@plt>
  lea    D387(%rip),%rdi
  call   <system@plt>
  lea    D361(%rip),%rdi
  call   <system@plt>
  lea    D60(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  jmp    L11
  nopl   0x0(%rax,%rax,1)
  lea    D129(%rip),%rdi
  call   <system@plt>
  lea    D199(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  lea    D622(%rip),%rdi
  call   <system@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  jmp    L11
  nop
  lea    D154(%rip),%rdi
  call   <system@plt>
  jmp    L11
  nopl   0x0(%rax)
  xor    %eax,%eax
  call   <getchar@plt>
  lea    D350(%rip),%rdi
  call   <system@plt>
  lea    D354(%rip),%rdi
  call   <printf@plt>
  xor    %eax,%eax
  call   <getchar@plt>
  jmp    L11
L98:
  lea    D148(%rip),%rdi
  call   <printf@plt>
  jmp    L11
L84:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: label: D183
type_infered: string
name: parse_data
arguments: label: D18
type_infered: string
name: parse_data
arguments: label: D193
type_infered: string
name: parse_data
arguments: label: D131
type_infered: string
name: parse_data
arguments: label: D296
type_infered: string
name: parse_data
arguments: label: D82
type_infered: string
name: parse_data
arguments: label: D612
type_infered: string
name: parse_data
arguments: label: D90
type_infered: string
name: parse_data
arguments: label: D317
type_infered: string
name: parse_data
arguments: label: D40
type_infered: string
name: parse_data
arguments: label: D179
type_infered: string
name: parse_data
arguments: label: D366
type_infered: string
name: parse_data
arguments: label: D374
type_infered: string
name: parse_data
arguments: label: D564
type_infered: string
name: parse_data
arguments: label: D521
type_infered: string
name: parse_data
arguments: label: D563
type_infered: string
name: parse_data
arguments: label: D355
type_infered: string
name: parse_data
arguments: label: D489
type_infered: string
name: parse_data
arguments: label: D467
type_infered: string
name: parse_data
arguments: label: D45
type_infered: string
name: parse_data
arguments: label: D171
type_infered: string
name: parse_data
arguments: label: D168
type_infered: string
name: parse_data
arguments: label: D106
type_infered: string
name: parse_data
arguments: label: D337
type_infered: string
name: parse_data
arguments: label: D66
type_infered: string
name: parse_data
arguments: label: D136
type_infered: string
name: parse_data
arguments: label: D186
type_infered: string
name: parse_data
arguments: label: D87
type_infered: string
name: parse_data
arguments: label: D578
type_infered: string
name: parse_data
arguments: label: D430
type_infered: string
name: parse_data
arguments: label: D597
type_infered: string
name: parse_data
arguments: label: D156
type_infered: string
name: parse_data
arguments: label: D26
type_infered: string
name: parse_data
arguments: label: D88
type_infered: string
name: parse_data
arguments: label: D380
type_infered: string
name: parse_data
arguments: label: D246
type_infered: string
name: parse_data
arguments: label: D486
type_infered: string
name: parse_data
arguments: label: D50
type_infered: string
name: parse_data
arguments: label: D305
type_infered: string
name: parse_data
arguments: label: D347
type_infered: string
name: parse_data
arguments: label: D617
type_infered: string
name: parse_data
arguments: label: D568
type_infered: string
name: parse_data
arguments: label: D113
type_infered: string
name: parse_data
arguments: label: D103
type_infered: string
name: parse_data
arguments: label: D591
type_infered: string
name: parse_data
arguments: label: D455
type_infered: string
name: parse_data
arguments: label: D225
type_infered: string
name: parse_data
arguments: label: D459
type_infered: string
name: parse_data
arguments: label: D610
type_infered: string
name: parse_data
arguments: label: D500
type_infered: string
name: parse_data
arguments: label: D252
type_infered: string
name: parse_data
arguments: label: D25
type_infered: string
name: parse_data
arguments: label: D387
type_infered: string
name: parse_data
arguments: label: D361
type_infered: string
name: parse_data
arguments: label: D60
type_infered: string
name: parse_data
arguments: label: D129
type_infered: string
name: parse_data
arguments: label: D199
type_infered: string
name: parse_data
arguments: label: D622
type_infered: string
name: parse_data
arguments: label: D154
type_infered: string
name: parse_data
arguments: label: D350
type_infered: string
name: parse_data
arguments: label: D354
type_infered: string
name: parse_data
arguments: label: D148
type_infered: string

tool: D183: @cls||clear

tool: D18: =======================================


tool: D193:    ROM Menu                       |


tool: D131: | [1] Create workspace            |


tool: D296: | [2] Extract ROM.zip             |


tool: D82: | [3] Extract boot.img            |


tool: D612: | [4] Repack boot.img             |


tool: D90: | [5] Extract system.img          |


tool: D317: | [6] Extract system.new.dat      |


tool: D40: | [7] Delete workspace            |


tool: D179: | [8] Install SuperSU(root)       |


tool: D366: | [9] Information about menu      |


tool: D374: | [10] Enter to advanced ROM menu |


tool: D564: [0] Exit


tool: D521: 
What you want?: 

tool: D563: %d

tool: D355: This is information about ROM Menu.


tool: D489: 1. For working with ROM's you must create personal workspace. Press [1] to do it.


tool: D467: 2. If you need extract .zip with you ROM, place him to 'workspace' folder, then press [2].


tool: D45: 3. If you need extract boot.img, press [3].


tool: D171: 4. For repacking boot.img press [4]


tool: D168: 5. When you want unpack some images (for example system.img), use this feature - [5]


tool: D106: 6. For unpacking system.new.dat, press [6]. // Repack feature in progress...


tool: D337: 7. If you tired of your workspace, you can delete it. Just press [7]


tool: D66: 8. Also you can install SuperSU in your ROM. Press [8] to do it.


tool: D136: 10. I think it doesn't need to explain... And next items too.


tool: D186: Goodbye ;P


tool: D87: mkdir workspace && cd workspace 

tool: D578: Done. Replace your ROMZIP in on 'workspace' folder


tool: D430: cd workspace && unzip *.zip && cd ..

tool: D597: 
	ROM is unzipped


tool: D156: cd ~/*/workspace/ && mkdir boot

tool: D26: cp ~/*/insides/boot/* ~/*/workspace/boot

tool: D88: 	Unpacking boot.img


tool: D380: cd ~/*/workspace/ && cp boot.img ~/*/workspace/boot

tool: D246: cd ~/*/workspace/boot && ./unpackbootimg -i boot.img

tool: D486: 	Making 'ramdisk' directory


tool: D50: cd ~/*/workspace/boot && mkdir ramdisk

tool: D305: 	Replacing boot.img-ramdisk.gz to 'ramdisk'


tool: D347: cd ~/*/workspace/boot && mv boot.img-ramdisk.gz ramdisk

tool: D617: Unpacking ramdisk


tool: D568: cd ~/*/workspace/boot/ramdisk && gzip -dc boot.img-ramdisk.gz | cpio -i

tool: D113: 
	boot.img and ramdisk ready


tool: D103: 	Repacking ramdisk


tool: D591: cd ~/*/workspace/boot/ && ./mkbootfs ./ramdisk | gzip > boot.img-ramdisk.gz

tool: D455: 	Repacking boot.img


tool: D225: cd ~/*/workspace/boot/ && ./mkbootimg --cmdline 'no_console_suspend=1 console=null' --kernel boot.img-kernel --ramdisk boot.img-ramdisk.gz -o boot-new.img

tool: D459: 	boot-new.img ready!


tool: D610: cd ~/*/workspace/

tool: D500: 	
Put your system.img in ROM folder.


tool: D252: 	
I'm working! Please wait!


tool: D25: cd ~/*/workspace

tool: D387: cp ~/*/workspace/system.img ~/Universal_Tool/

tool: D361: mkdir extractedsystem && sudo mount -t ext4 -o loop system.img extractedsystem

tool: D60: 	Done. .img file extracted to Universal_Tool/extractedsystem/


tool: D129: cd ~/*/insides/rom/ && cp sdat2img/* ~/Universal_Tool/workspace/ 

tool: D199: Press any key to continue

tool: D622: cd ~/*/workspace/ && ./sdat2img.py system.transfer.list system.new.dat system.img

tool: D154: cd ~/Universal_Tool/ && rm -rf workspace && rm -rf extractedsystem

tool: D350: cp ~/*/insides/rom/supersu ~/*/workspace/system/priv-app

tool: D354: 	Done


tool: D148: Make a choice!


assistant: ```c
int romMenu(void) {
  int user_key;
  system("@cls||clear");
  printf("=======================================\n");
  printf("   ROM Menu                       |\n");
  printf("=======================================\n");
  printf("| [1] Create workspace            |\n");
  printf("| [2] Extract ROM.zip             |\n");
  printf("| [3] Extract boot.img            |\n");
  printf("| [4] Repack boot.img             |\n");
  printf("| [5] Extract system.img          |\n");
  printf("| [6] Extract system.new.dat      |\n");
  printf("| [7] Delete workspace            |\n");
  printf("| [8] Install SuperSU(root)       |\n");
  printf("| [9] Information about menu      |\n");
  printf("| [10] Enter to advanced ROM menu |\n");
  printf("=======================================\n");
  printf("[0] Exit\n");
  printf("\nWhat you want?: ");
  scanf("%d", &user_key);
  switch (user_key) {
  case 9:
    getchar();
    printf("This is information about ROM Menu.\n");
    printf("1. For working with ROM's you must create personal workspace. Press [1] to do it.\n");
    printf("2. If you need extract .zip with you ROM, place him to 'workspace' folder, then press [2].\n");
    printf("3. If you need extract boot.img, press [3].\n");
    printf("4. For repacking boot.img press [4]\n");
    printf("5. When you want unpack some images (for example system.img), use this feature - [5]\n");
    printf("6. For unpacking system.new.dat, press [6]. // Repack feature in progress...\n");
    printf("7. If you tired of your workspace, you can delete it. Just press [7]\n");
    printf("8. Also you can install SuperSU in your ROM. Press [8] to do it.\n");
    printf("10. I think it doesn't need to explain... And next items too.\n");
    getchar();
    return romMenu();
    break;
  case 0:
    printf("Goodbye ;P\n");
    return 0;
  case 1: {
    system("mkdir workspace && cd workspace ");
    printf("Done. Replace your ROMZIP in on 'workspace' folder\n");
    getchar();
    break;
  }
  case 2: {
    system("cd workspace && unzip *.zip && cd ..");
    printf("\n\tROM is unzipped\n");
    getchar();
    break;
  }
  case 3: {
    system("cd ~/*/workspace/ && mkdir boot");
    system("cp ~/*/insides/boot/* ~/*/workspace/boot");
    printf("\tUnpacking boot.img\n");
    system("cd ~/*/workspace/ && cp boot.img ~/*/workspace/boot");
    system("cd ~/*/workspace/boot && ./unpackbootimg -i boot.img");
    printf("\tMaking 'ramdisk' directory\n");
    system("cd ~/*/workspace/boot && mkdir ramdisk");
    printf("\tReplacing boot.img-ramdisk.gz to 'ramdisk'\n");
    system("cd ~/*/workspace/boot && mv boot.img-ramdisk.gz ramdisk");
    printf("Unpacking ramdisk\n");
    system("cd ~/*/workspace/boot/ramdisk && gzip -dc boot.img-ramdisk.gz | cpio -i");
    printf("\n\tboot.img and ramdisk ready\n");
    getchar();
    break;
  }
  case 4: {
    printf("\tRepacking ramdisk\n");
    system("cd ~/*/workspace/boot/ && ./mkbootfs ./ramdisk | gzip > boot.img-ramdisk.gz");
    printf("\tRepacking boot.img\n");
    system("cd ~/*/workspace/boot/ && ./mkbootimg --cmdline 'no_console_suspend=1 console=null' --kernel boot.img-kernel --ramdisk boot.img-ramdisk.gz -o boot-new.img");
    printf("\tboot-new.img ready!\n");
    getchar();
    system("cd ~/*/workspace/");
    break;
  }
  case 5: {
    printf("\t\nPut your system.img in ROM folder.\n");
    getchar();
    printf("\t\nI'm working! Please wait!\n");
    system("cd ~/*/workspace");
    system("cp ~/*/workspace/system.img ~/Universal_Tool/");
    system("mkdir extractedsystem && sudo mount -t ext4 -o loop system.img extractedsystem");
    printf("\tDone. .img file extracted to Universal_Tool/extractedsystem/\n");
    getchar();
    break;
  }
  case 6: {
    system("cd ~/*/insides/rom/ && cp sdat2img/* ~/Universal_Tool/workspace/ ");
    printf("Press any key to continue");
    getchar();
    system("cd ~/*/workspace/ && ./sdat2img.py system.transfer.list system.new.dat system.img");
    getchar();
    break;
  }
  case 7:
    system("cd ~/Universal_Tool/ && rm -rf workspace && rm -rf extractedsystem");
    break;
  case 8: {
    getchar();
    system("cp ~/*/insides/rom/supersu ~/*/workspace/system/priv-app");
    printf("\tDone\n");
    getchar();
    break;
  }
  case 10:
    advancedMenu();
    break;
  default:
    printf("Make a choice!\n");
  }
  return romMenu();
}
```