user: 下面的汇编指令对应的C源代码是什么:

```asm
<out_no_color>:
  endbr64
  push   %r12
  xor    %esi,%esi
  mov    $0x1,%edi
  lea    D354(%rip),%r12
  push   %rbp
  lea    D403(%rip),%rbp
  sub    $0x8,%rsp
  call   <move@plt>
  lea    D248(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x2,%edi
  call   <move@plt>
  lea    D243(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x3,%edi
  call   <move@plt>
  lea    D104(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x4,%edi
  call   <move@plt>
  lea    D328(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x5,%edi
  call   <move@plt>
  mov    %rbp,%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x6,%edi
  call   <move@plt>
  lea    D258(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x7,%edi
  call   <move@plt>
  lea    D282(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x8,%edi
  call   <move@plt>
  xor    %esi,%esi
  mov    $0x9,%edi
  call   <move@plt>
  lea    D83(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0xa,%edi
  call   <move@plt>
  lea    D417(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0xb,%edi
  call   <move@plt>
  lea    D54(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0xc,%edi
  call   <move@plt>
  lea    D386(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0xd,%edi
  call   <move@plt>
  lea    D418(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0xe,%edi
  call   <move@plt>
  lea    D108(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0xf,%edi
  call   <move@plt>
  mov    %r12,%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x10,%edi
  call   <move@plt>
  lea    D50(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x11,%edi
  call   <move@plt>
  lea    D458(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x12,%edi
  call   <move@plt>
  lea    D419(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x13,%edi
  call   <move@plt>
  lea    D154(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x14,%edi
  call   <move@plt>
  lea    D145(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x15,%edi
  call   <move@plt>
  lea    D16(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x16,%edi
  call   <move@plt>
  lea    D3(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x17,%edi
  call   <move@plt>
  lea    D136(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x18,%edi
  call   <move@plt>
  lea    D431(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x19,%edi
  call   <move@plt>
  lea    D158(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x1a,%edi
  call   <move@plt>
  mov    %r12,%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x1b,%edi
  call   <move@plt>
  lea    D255(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x1c,%edi
  call   <move@plt>
  lea    D385(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x1d,%edi
  call   <move@plt>
  xor    %esi,%esi
  mov    $0x1e,%edi
  call   <move@plt>
  mov    %rbp,%rdi
  lea    D298(%rip),%rbp
  call   <printw@plt>
  mov    $0x57,%esi
  xor    %edi,%edi
  call   <move@plt>
  lea    D116(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x1,%edi
  call   <move@plt>
  lea    D266(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x2,%edi
  call   <move@plt>
  lea    D426(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x3,%edi
  call   <move@plt>
  lea    D92(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x4,%edi
  call   <move@plt>
  lea    D259(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x5,%edi
  call   <move@plt>
  lea    D142(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x6,%edi
  call   <move@plt>
  lea    D57(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x7,%edi
  call   <move@plt>
  lea    D99(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x8,%edi
  call   <move@plt>
  mov    %rbp,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x9,%edi
  call   <move@plt>
  lea    D240(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0xa,%edi
  call   <move@plt>
  lea    D457(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0xb,%edi
  call   <move@plt>
  lea    D314(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0xc,%edi
  call   <move@plt>
  lea    D218(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0xd,%edi
  call   <move@plt>
  lea    D18(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0xe,%edi
  call   <move@plt>
  mov    %rbp,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0xf,%edi
  call   <move@plt>
  lea    D400(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x10,%edi
  call   <move@plt>
  lea    D362(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x11,%edi
  call   <move@plt>
  lea    D98(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x12,%edi
  call   <move@plt>
  mov    %rbp,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x13,%edi
  call   <move@plt>
  lea    D326(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x14,%edi
  call   <move@plt>
  lea    D117(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x15,%edi
  call   <move@plt>
  mov    %rbp,%rdi
  lea    D413(%rip),%rbp
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x16,%edi
  call   <move@plt>
  mov    %rbp,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x17,%edi
  call   <move@plt>
  mov    %rbp,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x18,%edi
  call   <move@plt>
  mov    %rbp,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x19,%edi
  call   <move@plt>
  mov    %rbp,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x1a,%edi
  call   <move@plt>
  mov    %rbp,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x1b,%edi
  call   <move@plt>
  mov    %rbp,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x1c,%edi
  call   <move@plt>
  mov    %rbp,%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x1d,%edi
  call   <move@plt>
  mov    %rbp,%rdi
  call   <printw@plt>
  mov    $0x1e,%edi
  mov    $0x57,%esi
  call   <move@plt>
  add    $0x8,%rsp
  lea    D330(%rip),%rdi
  pop    %rbp
  pop    %r12
  jmp    1060 <printw@plt>
```

tool_calls: name: read_data
arguments: label: D354
type_infered: string
name: read_data
arguments: label: D403
type_infered: string
name: read_data
arguments: label: D248
type_infered: string
name: read_data
arguments: label: D243
type_infered: string
name: read_data
arguments: label: D104
type_infered: string
name: read_data
arguments: label: D328
type_infered: string
name: read_data
arguments: label: D258
type_infered: string
name: read_data
arguments: label: D282
type_infered: string
name: read_data
arguments: label: D83
type_infered: string
name: read_data
arguments: label: D417
type_infered: string
name: read_data
arguments: label: D54
type_infered: string
name: read_data
arguments: label: D386
type_infered: string
name: read_data
arguments: label: D418
type_infered: string
name: read_data
arguments: label: D108
type_infered: string
name: read_data
arguments: label: D50
type_infered: string
name: read_data
arguments: label: D458
type_infered: string
name: read_data
arguments: label: D419
type_infered: string
name: read_data
arguments: label: D154
type_infered: string
name: read_data
arguments: label: D145
type_infered: string
name: read_data
arguments: label: D16
type_infered: string
name: read_data
arguments: label: D3
type_infered: string
name: read_data
arguments: label: D136
type_infered: string
name: read_data
arguments: label: D431
type_infered: string
name: read_data
arguments: label: D158
type_infered: string
name: read_data
arguments: label: D255
type_infered: string
name: read_data
arguments: label: D385
type_infered: string
name: read_data
arguments: label: D298
type_infered: string
name: read_data
arguments: label: D116
type_infered: string
name: read_data
arguments: label: D266
type_infered: string
name: read_data
arguments: label: D426
type_infered: string
name: read_data
arguments: label: D92
type_infered: string
name: read_data
arguments: label: D259
type_infered: string
name: read_data
arguments: label: D142
type_infered: string
name: read_data
arguments: label: D57
type_infered: string
name: read_data
arguments: label: D99
type_infered: string
name: read_data
arguments: label: D240
type_infered: string
name: read_data
arguments: label: D457
type_infered: string
name: read_data
arguments: label: D314
type_infered: string
name: read_data
arguments: label: D218
type_infered: string
name: read_data
arguments: label: D18
type_infered: string
name: read_data
arguments: label: D400
type_infered: string
name: read_data
arguments: label: D362
type_infered: string
name: read_data
arguments: label: D98
type_infered: string
name: read_data
arguments: label: D326
type_infered: string
name: read_data
arguments: label: D117
type_infered: string
name: read_data
arguments: label: D413
type_infered: string
name: read_data
arguments: label: D330
type_infered: string

tool: 

tool: D403: =======================================================================================

tool: D248: -----------------------

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

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

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

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

tool: D282: ---------------------------------------------------------------------------------------

tool: D83: _start:

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

tool: D54:     65 76          adr     r13, data

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

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

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

tool: D50: /*

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

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

tool: D154:  */

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

tool: D16:                                                    @ r5 = ATAG_CORE

tool: D3:                                                    @ r6 = ATAG_INITRD2

tool: D136:                                                    @ r7 = initrd start

tool: D431:                                                    @ r8 = initrd end

tool: D158:                                                    @ r9 = param_struct address

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

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

tool: D298: |------------------|

tool: D116: | r0:   0x12345678 |

tool: D266: | r1:   0x12345678 |

tool: D426: | r2:   0x12345678 |

tool: D92: | r3:   0x12345678 |

tool: D259: | r4:   0x12345678 |

tool: D142: | r5:   0x12345678 |

tool: D57: | r6:   0x12345678 |

tool: D99: | r7:   0x12345678 |

tool: D240: | r8:   0x12345678 |

tool: D457: | r9:   0x12345678 |

tool: D314: | r10:  0x12345678 |

tool: D218: | r11:  0x12345678 |

tool: D18: | r12:  0x12345678 |

tool: D400: | r13:  0x12345678 |

tool: D362: | r14:  0x12345678 |

tool: D98: | r15:  0x12345678 |

tool: D326: | cpsr: ********** |

tool: D117: | spsr: ********** |

tool: D413: |                  |

tool: D330: ====================

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("====================");
}
```