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

```asm
<out_no_color>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    $0x0,%esi
  mov    $0x1,%edi
  call   <move@plt>
  lea    D335(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0x2,%edi
  call   <move@plt>
  lea    D138(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0x3,%edi
  call   <move@plt>
  lea    D114(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0x4,%edi
  call   <move@plt>
  lea    D64(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0x5,%edi
  call   <move@plt>
  lea    D388(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0x6,%edi
  call   <move@plt>
  lea    D392(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0x7,%edi
  call   <move@plt>
  lea    D504(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0x8,%edi
  call   <move@plt>
  mov    $0x0,%esi
  mov    $0x9,%edi
  call   <move@plt>
  lea    D2(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0xa,%edi
  call   <move@plt>
  lea    D161(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0xb,%edi
  call   <move@plt>
  lea    D576(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0xc,%edi
  call   <move@plt>
  lea    D443(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0xd,%edi
  call   <move@plt>
  lea    D290(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0xe,%edi
  call   <move@plt>
  lea    D33(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0xf,%edi
  call   <move@plt>
  lea    D283(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0x10,%edi
  call   <move@plt>
  lea    D147(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0x11,%edi
  call   <move@plt>
  lea    D101(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0x12,%edi
  call   <move@plt>
  lea    D329(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0x13,%edi
  call   <move@plt>
  lea    D453(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0x14,%edi
  call   <move@plt>
  lea    D477(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0x15,%edi
  call   <move@plt>
  lea    D402(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0x16,%edi
  call   <move@plt>
  lea    D516(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0x17,%edi
  call   <move@plt>
  lea    D205(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0x18,%edi
  call   <move@plt>
  lea    D67(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0x19,%edi
  call   <move@plt>
  lea    D589(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0x1a,%edi
  call   <move@plt>
  lea    D283(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0x1b,%edi
  call   <move@plt>
  lea    D163(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0x1c,%edi
  call   <move@plt>
  lea    D220(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x0,%esi
  mov    $0x1d,%edi
  call   <move@plt>
  mov    $0x0,%esi
  mov    $0x1e,%edi
  call   <move@plt>
  lea    D388(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x0,%edi
  call   <move@plt>
  lea    D371(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x1,%edi
  call   <move@plt>
  lea    D417(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x2,%edi
  call   <move@plt>
  lea    D217(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x3,%edi
  call   <move@plt>
  lea    D463(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x4,%edi
  call   <move@plt>
  lea    D579(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x5,%edi
  call   <move@plt>
  lea    D60(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x6,%edi
  call   <move@plt>
  lea    D276(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x7,%edi
  call   <move@plt>
  lea    D200(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x8,%edi
  call   <move@plt>
  lea    D360(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x9,%edi
  call   <move@plt>
  lea    D363(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0xa,%edi
  call   <move@plt>
  lea    D229(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0xb,%edi
  call   <move@plt>
  lea    D385(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0xc,%edi
  call   <move@plt>
  lea    D1(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0xd,%edi
  call   <move@plt>
  lea    D93(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0xe,%edi
  call   <move@plt>
  lea    D360(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0xf,%edi
  call   <move@plt>
  lea    D184(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x10,%edi
  call   <move@plt>
  lea    D280(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x11,%edi
  call   <move@plt>
  lea    D566(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x12,%edi
  call   <move@plt>
  lea    D360(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x13,%edi
  call   <move@plt>
  lea    D571(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x14,%edi
  call   <move@plt>
  lea    D503(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x15,%edi
  call   <move@plt>
  lea    D360(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x16,%edi
  call   <move@plt>
  lea    D224(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x17,%edi
  call   <move@plt>
  lea    D224(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x18,%edi
  call   <move@plt>
  lea    D224(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x19,%edi
  call   <move@plt>
  lea    D224(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x1a,%edi
  call   <move@plt>
  lea    D224(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x1b,%edi
  call   <move@plt>
  lea    D224(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x1c,%edi
  call   <move@plt>
  lea    D224(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x1d,%edi
  call   <move@plt>
  lea    D224(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x1e,%edi
  call   <move@plt>
  lea    D479(%rip),%rax
  mov    %rax,%rdi
  call   <printw@plt>
  nop
  pop    %rbp
  ret
```

tool_calls: name: unpack_data
arguments: tag: D335
datatype: string
name: unpack_data
arguments: tag: D138
datatype: string
name: unpack_data
arguments: tag: D114
datatype: string
name: unpack_data
arguments: tag: D64
datatype: string
name: unpack_data
arguments: tag: D388
datatype: string
name: unpack_data
arguments: tag: D392
datatype: string
name: unpack_data
arguments: tag: D504
datatype: string
name: unpack_data
arguments: tag: D2
datatype: string
name: unpack_data
arguments: tag: D161
datatype: string
name: unpack_data
arguments: tag: D576
datatype: string
name: unpack_data
arguments: tag: D443
datatype: string
name: unpack_data
arguments: tag: D290
datatype: string
name: unpack_data
arguments: tag: D33
datatype: string
name: unpack_data
arguments: tag: D283
datatype: string
name: unpack_data
arguments: tag: D147
datatype: string
name: unpack_data
arguments: tag: D101
datatype: string
name: unpack_data
arguments: tag: D329
datatype: string
name: unpack_data
arguments: tag: D453
datatype: string
name: unpack_data
arguments: tag: D477
datatype: string
name: unpack_data
arguments: tag: D402
datatype: string
name: unpack_data
arguments: tag: D516
datatype: string
name: unpack_data
arguments: tag: D205
datatype: string
name: unpack_data
arguments: tag: D67
datatype: string
name: unpack_data
arguments: tag: D589
datatype: string
name: unpack_data
arguments: tag: D163
datatype: string
name: unpack_data
arguments: tag: D220
datatype: string
name: unpack_data
arguments: tag: D371
datatype: string
name: unpack_data
arguments: tag: D417
datatype: string
name: unpack_data
arguments: tag: D217
datatype: string
name: unpack_data
arguments: tag: D463
datatype: string
name: unpack_data
arguments: tag: D579
datatype: string
name: unpack_data
arguments: tag: D60
datatype: string
name: unpack_data
arguments: tag: D276
datatype: string
name: unpack_data
arguments: tag: D200
datatype: string
name: unpack_data
arguments: tag: D360
datatype: string
name: unpack_data
arguments: tag: D363
datatype: string
name: unpack_data
arguments: tag: D229
datatype: string
name: unpack_data
arguments: tag: D385
datatype: string
name: unpack_data
arguments: tag: D1
datatype: string
name: unpack_data
arguments: tag: D93
datatype: string
name: unpack_data
arguments: tag: D184
datatype: string
name: unpack_data
arguments: tag: D280
datatype: string
name: unpack_data
arguments: tag: D566
datatype: string
name: unpack_data
arguments: tag: D571
datatype: string
name: unpack_data
arguments: tag: D503
datatype: string
name: unpack_data
arguments: tag: D224
datatype: string
name: unpack_data
arguments: tag: D479
datatype: string

tool: D335: -----------------------

tool: D138: gdb    path: /home/user/temt/toolchain-2009q3/bin/arm-noeabi-gdb

tool: D114: gdb version: 4.7.1 (i686, target: arm-noeabi)

tool: D64: Current CPU: Amlogic Meson3 (aml8726-mx)

tool: D388: =======================================================================================

tool: D392: source file: /usr/src/linux/arch/arm/boot/init.S

tool: D504: ---------------------------------------------------------------------------------------

tool: D2: _start:

tool: D161:     21 43 54 65    add     lr, pc, #-0x8           @ lr = current load addr

tool: D576:     65 76          adr     r13, data

tool: D443:     54 23          ldmia   r13!, {r4-r6}           @ r5 = dest, r6 = length

tool: D290:     23 56          add     r4, r4, lr              @ r4 = initrd_start + load addr

tool: D33:     45 56 67 78    bl      move                    @ move the initrd

tool: 

tool: D147: /*

tool: D101:  * Setup the initrd parameters to pass to the kernel.  This can only be

tool: D329:  * passed in via the tagged list.

tool: D453:  */

tool: D477:     45 56 67 78    ldmia   r13, {r5-r9}            @ get size and addr of initrd

tool: D402:                                                    @ r5 = ATAG_CORE

tool: D516:                                                    @ r6 = ATAG_INITRD2

tool: D205:                                                    @ r7 = initrd start

tool: D67:                                                    @ r8 = initrd end

tool: D589:                                                    @ r9 = param_struct address

tool: D163:     56 67          ldr     r10, [r9, #4]           @ get first tag

tool: D220:     54 32          teq     r10, r5                 @ is it ATAG_CORE?

tool: D371: | r0:   0x12345678 |

tool: D417: | r1:   0x12345678 |

tool: D217: | r2:   0x12345678 |

tool: D463: | r3:   0x12345678 |

tool: D579: | r4:   0x12345678 |

tool: D60: | r5:   0x12345678 |

tool: D276: | r6:   0x12345678 |

tool: D200: | r7:   0x12345678 |

tool: D360: |------------------|

tool: D363: | r8:   0x12345678 |

tool: D229: | r9:   0x12345678 |

tool: D385: | r10:  0x12345678 |

tool: D1: | r11:  0x12345678 |

tool: D93: | r12:  0x12345678 |

tool: D184: | r13:  0x12345678 |

tool: D280: | r14:  0x12345678 |

tool: D566: | r15:  0x12345678 |

tool: D571: | cpsr: ********** |

tool: D503: | spsr: ********** |

tool: D224: |                  |

tool: D479: ====================

assistant: ```c
void out_no_color() {
  move(1, 0);
  printw("-----------------------");
  move(2, 0);
  printw("gdb    path: /home/user/temt/toolchain-2009q3/bin/arm-noeabi-gdb");
  move(3, 0);
  printw("gdb version: 4.7.1 (i686, target: arm-noeabi)");
  move(4, 0);
  printw("Current CPU: Amlogic Meson3 (aml8726-mx)");
  move(5, 0);
  printw("=======================================================================================");
  move(6, 0);
  printw("source file: /usr/src/linux/arch/arm/boot/init.S");
  move(7, 0);
  printw("---------------------------------------------------------------------------------------");
  move(8, 0);
  move(9, 0);
  printw("_start:");
  move(10, 0);
  printw("    21 43 54 65    add     lr, pc, #-0x8           @ lr = current load addr");
  move(11, 0);
  printw("    65 76          adr     r13, data");
  move(12, 0);
  printw("    54 23          ldmia   r13!, {r4-r6}           @ r5 = dest, r6 = length");
  move(13, 0);
  printw("    23 56          add     r4, r4, lr              @ r4 = initrd_start + load addr");
  move(14, 0);
  printw("    45 56 67 78    bl      move                    @ move the initrd");
  move(15, 0);
  printw("");
  move(16, 0);
  printw("/*");
  move(17, 0);
  printw(" * Setup the initrd parameters to pass to the kernel.  This can only be");
  move(18, 0);
  printw(" * passed in via the tagged list.");
  move(19, 0);
  printw(" */");
  move(20, 0);
  printw("    45 56 67 78    ldmia   r13, {r5-r9}            @ get size and addr of initrd");
  move(21, 0);
  printw("                                                   @ r5 = ATAG_CORE");
  move(22, 0);
  printw("                                                   @ r6 = ATAG_INITRD2");
  move(23, 0);
  printw("                                                   @ r7 = initrd start");
  move(24, 0);
  printw("                                                   @ r8 = initrd end");
  move(25, 0);
  printw("                                                   @ r9 = param_struct address");
  move(26, 0);
  printw("");
  move(27, 0);
  printw("    56 67          ldr     r10, [r9, #4]           @ get first tag");
  move(28, 0);
  printw("    54 32          teq     r10, r5                 @ is it ATAG_CORE?");
  move(29, 0);
  move(30, 0);
  printw("=======================================================================================");
  move(0, 87);
  printw("| r0:   0x12345678 |");
  move(1, 87);
  printw("| r1:   0x12345678 |");
  move(2, 87);
  printw("| r2:   0x12345678 |");
  move(3, 87);
  printw("| r3:   0x12345678 |");
  move(4, 87);
  printw("| r4:   0x12345678 |");
  move(5, 87);
  printw("| r5:   0x12345678 |");
  move(6, 87);
  printw("| r6:   0x12345678 |");
  move(7, 87);
  printw("| r7:   0x12345678 |");
  move(8, 87);
  printw("|------------------|");
  move(9, 87);
  printw("| r8:   0x12345678 |");
  move(10, 87);
  printw("| r9:   0x12345678 |");
  move(11, 87);
  printw("| r10:  0x12345678 |");
  move(12, 87);
  printw("| r11:  0x12345678 |");
  move(13, 87);
  printw("| r12:  0x12345678 |");
  move(14, 87);
  printw("|------------------|");
  move(15, 87);
  printw("| r13:  0x12345678 |");
  move(16, 87);
  printw("| r14:  0x12345678 |");
  move(17, 87);
  printw("| r15:  0x12345678 |");
  move(18, 87);
  printw("|------------------|");
  move(19, 87);
  printw("| cpsr: ********** |");
  move(20, 87);
  printw("| spsr: ********** |");
  move(21, 87);
  printw("|------------------|");
  move(22, 87);
  printw("|                  |");
  move(23, 87);
  printw("|                  |");
  move(24, 87);
  printw("|                  |");
  move(25, 87);
  printw("|                  |");
  move(26, 87);
  printw("|                  |");
  move(27, 87);
  printw("|                  |");
  move(28, 87);
  printw("|                  |");
  move(29, 87);
  printw("|                  |");
  move(30, 87);
  printw("====================");
}
```