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

```asm
<apkMenu>:
  endbr64
  push   %rbp
  push   %rbx
  sub    $0xc8,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0xb8(%rsp)
  xor    %eax,%eax
  lea    D351(%rip),%rdi
  call   <system@plt>
  lea    D0(%rip),%rbx
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D129(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D327(%rip),%rdi
  call   <printf@plt>
  lea    D68(%rip),%rdi
  call   <printf@plt>
  lea    D162(%rip),%rdi
  call   <printf@plt>
  lea    D333(%rip),%rdi
  call   <printf@plt>
  lea    D131(%rip),%rdi
  call   <printf@plt>
  lea    D259(%rip),%rdi
  call   <printf@plt>
  mov    %rbx,%rdi
  call   <printf@plt>
  lea    D70(%rip),%rdi
  call   <printf@plt>
  lea    D362(%rip),%rdi
  call   <printf@plt>
  lea    0xc(%rsp),%rsi
  lea    D143(%rip),%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  cmpl   $0x9,0xc(%rsp)
  ja     L53
  mov    0xc(%rsp),%eax
  lea    D12(%rip),%rdx
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D352(%rip),%rdi
  call   <printf@plt>
  lea    D358(%rip),%rdi
  call   <printf@plt>
  lea    D215(%rip),%rdi
  call   <printf@plt>
  lea    D330(%rip),%rdi
  call   <printf@plt>
  lea    D37(%rip),%rdi
  call   <printf@plt>
L6:
  mov    0xb8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L51
  mov    $0x0,%eax
  add    $0xc8,%rsp
  pop    %rbx
  pop    %rbp
  ret
  lea    D35(%rip),%rdi
  call   <printf@plt>
  jmp    L6
  lea    D227(%rip),%rdi
  call   <printf@plt>
  lea    D350(%rip),%rdi
  call   <system@plt>
  mov    $0x0,%eax
  call   <getchar@plt>
  lea    D99(%rip),%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getchar@plt>
  mov    $0x0,%eax
  call   <apkMenu>
  jmp    L6
  lea    D244(%rip),%rdi
  call   <printf@plt>
  lea    D152(%rip),%rdi
  call   <system@plt>
  lea    D202(%rip),%rdi
  call   <system@plt>
  lea    D11(%rip),%rdi
  call   <system@plt>
  lea    D319(%rip),%rdi
  call   <printf@plt>
  mov    $0x0,%eax
  call   <getchar@plt>
  mov    $0x0,%eax
  call   <getchar@plt>
  mov    $0x0,%eax
  call   <apkMenu>
  jmp    L6
  lea    D107(%rip),%rdi
  call   <printf@plt>
  lea    0x10(%rsp),%rbp
  mov    %rbp,%rsi
  lea    D340(%rip),%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  lea    0x30(%rsp),%rbx
  mov    %rbp,%rdx
  lea    D52(%rip),%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  mov    %rbx,%rdi
  call   <system@plt>
  mov    $0x0,%eax
  call   <apkMenu>
  jmp    L6
  lea    D20(%rip),%rdi
  call   <printf@plt>
  lea    0x10(%rsp),%rbp
  mov    %rbp,%rsi
  lea    D340(%rip),%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  lea    0x30(%rsp),%rbx
  mov    %rbp,%rdx
  lea    D298(%rip),%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  mov    %rbx,%rdi
  call   <system@plt>
  mov    $0x0,%eax
  call   <apkMenu>
  jmp    L6
  lea    D92(%rip),%rdi
  call   <printf@plt>
  lea    0x10(%rsp),%rbp
  mov    %rbp,%rsi
  lea    D340(%rip),%rdi
  mov    $0x0,%eax
  call   <scanf@plt>
  lea    0x30(%rsp),%rbx
  mov    %rbp,%rdx
  lea    D187(%rip),%rsi
  mov    %rbx,%rdi
  call   <sprintf@plt>
  mov    %rbx,%rdi
  call   <system@plt>
  mov    $0x0,%eax
  call   <apkMenu>
  jmp    L6
L53:
  lea    D189(%rip),%rdi
  call   <printf@plt>
  jmp    L6
L51:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: disassemble_data
arguments: tag: D351
type_infered: string
name: disassemble_data
arguments: tag: D0
type_infered: string
name: disassemble_data
arguments: tag: D129
type_infered: string
name: disassemble_data
arguments: tag: D327
type_infered: string
name: disassemble_data
arguments: tag: D68
type_infered: string
name: disassemble_data
arguments: tag: D162
type_infered: string
name: disassemble_data
arguments: tag: D333
type_infered: string
name: disassemble_data
arguments: tag: D131
type_infered: string
name: disassemble_data
arguments: tag: D259
type_infered: string
name: disassemble_data
arguments: tag: D70
type_infered: string
name: disassemble_data
arguments: tag: D362
type_infered: string
name: disassemble_data
arguments: tag: D143
type_infered: string
name: disassemble_data
arguments: tag: D352
type_infered: string
name: disassemble_data
arguments: tag: D358
type_infered: string
name: disassemble_data
arguments: tag: D215
type_infered: string
name: disassemble_data
arguments: tag: D330
type_infered: string
name: disassemble_data
arguments: tag: D37
type_infered: string
name: disassemble_data
arguments: tag: D35
type_infered: string
name: disassemble_data
arguments: tag: D227
type_infered: string
name: disassemble_data
arguments: tag: D350
type_infered: string
name: disassemble_data
arguments: tag: D99
type_infered: string
name: disassemble_data
arguments: tag: D244
type_infered: string
name: disassemble_data
arguments: tag: D152
type_infered: string
name: disassemble_data
arguments: tag: D202
type_infered: string
name: disassemble_data
arguments: tag: D11
type_infered: string
name: disassemble_data
arguments: tag: D319
type_infered: string
name: disassemble_data
arguments: tag: D107
type_infered: string
name: disassemble_data
arguments: tag: D340
type_infered: string
name: disassemble_data
arguments: tag: D52
type_infered: string
name: disassemble_data
arguments: tag: D20
type_infered: string
name: disassemble_data
arguments: tag: D298
type_infered: string
name: disassemble_data
arguments: tag: D92
type_infered: string
name: disassemble_data
arguments: tag: D187
type_infered: string
name: disassemble_data
arguments: tag: D189
type_infered: string

tool: D351: @cls||clear

tool: D0: =======================================


tool: D129:    APK Menu                        |


tool: D327: | [1] Create workspace for APK     |


tool: D68: | [2] Install apktool              |


tool: D162: | [3] Decompile .apk               |


tool: D333: | [4] Build .apk                   |


tool: D131: | [5] Deodex .apk                  |


tool: D259: | [9] Information                  |


tool: D70: [0] Exit


tool: D362: 
What you want?: 

tool: D143: %d

tool: D352: [1] Create workspace folders [Decompiled_Files, Deodexed_Files] to work with apktool.


tool: D358: [2] Install apktool, IMPORTANT!


tool: D215: [3] Decompiling .apk from executable to source code.


tool: D330: [4] Build .apk from source code to executable (.apk)


tool: D37: [5] Deodex .apk - if you have .odex file with your .apk, you must replace it to 'Deodexed_Files' folder to deodexing


tool: D35: Goodbye ;P


tool: D227: Creating workspace.


tool: D350: cd ~/Universal_Tool/ && mkdir Decompiled_Files Deodexed_Files

tool: D99: Done! [Press Enter]


tool: D244: 
Installing apktool


tool: D152: sudo apt-get install lib32ncurses5 -y

tool: D202: cd ~/*/insides/apktool/ && sudo cp apktool.jar /usr/local/bin && sudo cp apktool /usr/local/bin

tool: D11: cd /usr/local/bin/ && sudo chmod a+x apktool

tool: D319: 
Apktool has been installed. [Press Enter]


tool: D107: Enter name of your .apk, to decompile it: 

tool: D340: %s

tool: D52: cd ~/*/Decompiled_Files/ && apktool d %s

tool: D20: Enter name of your decompiled apk folder, to build it: 

tool: D298: cd ~/*/Decompiled_Files/ && apktool b %s

tool: D92: Enter name of your .apk, to deodex it: 

tool: D187: cd ~/*/Deodexed_Files/ && java -jar baksmali.jar deodex %s

tool: D189: Make your choice!


assistant: ```c
int apkMenu() {
  int user_key;
  system("@cls||clear");
  printf("=======================================\n");
  printf("   APK Menu                        |\n");
  printf("=======================================\n");
  printf("| [1] Create workspace for APK     |\n");
  printf("| [2] Install apktool              |\n");
  printf("| [3] Decompile .apk               |\n");
  printf("| [4] Build .apk                   |\n");
  printf("| [5] Deodex .apk                  |\n");
  printf("| [9] Information                  |\n");
  printf("=======================================\n");
  printf("[0] Exit\n");
  printf("\nWhat you want?: ");
  scanf("%d", &user_key);
  switch (user_key) {
  case 9: {
    printf("[1] Create workspace folders [Decompiled_Files, Deodexed_Files] to work with apktool.\n");
    printf("[2] Install apktool, IMPORTANT!\n");
    printf("[3] Decompiling .apk from executable to source code.\n");
    printf("[4] Build .apk from source code to executable (.apk)\n");
    printf("[5] Deodex .apk - if you have .odex file with your .apk, you must replace it to 'Deodexed_Files' folder to deodexing\n");
    break;
  }
  case 0:
    printf("Goodbye ;P\n");
    return 0;
    break;
  case 1:
    printf("Creating workspace.\n");
    system("cd ~/Universal_Tool/ && mkdir Decompiled_Files Deodexed_Files");
    getchar();
    printf("Done! [Press Enter]\n");
    getchar();
    apkMenu();
    break;
  case 2: {
    printf("\nInstalling apktool\n");
    system("sudo apt-get install lib32ncurses5 -y");
    system("cd ~/*/insides/apktool/ && sudo cp apktool.jar /usr/local/bin && sudo cp apktool /usr/local/bin");
    system("cd /usr/local/bin/ && sudo chmod a+x apktool");
    printf("\nApktool has been installed. [Press Enter]\n");
    getchar();
    getchar();
    apkMenu();
    break;
  }
  case 3: {
    char param[128];
    char apkd_name[32];
    printf("Enter name of your .apk, to decompile it: ");
    scanf("%s", apkd_name);
    sprintf(param, "cd ~/*/Decompiled_Files/ && apktool d %s", apkd_name);
    system(param);
    apkMenu();
    break;
  }
  case 4: {
    char param[128];
    char apkb_name[32];
    printf("Enter name of your decompiled apk folder, to build it: ");
    scanf("%s", apkb_name);
    sprintf(param, "cd ~/*/Decompiled_Files/ && apktool b %s", apkb_name);
    system(param);
    apkMenu();
    break;
  }
  case 5: {
    char param[128];
    char apkdex_name[32];
    printf("Enter name of your .apk, to deodex it: ");
    scanf("%s", apkdex_name);
    sprintf(param, "cd ~/*/Deodexed_Files/ && java -jar baksmali.jar deodex %s", apkdex_name);
    system(param);
    apkMenu();
    break;
  }
  default:
    printf("Make your choice!\n");
  }
  return 0;
}
```