user: Translate the below assembly code into C programming language:

```asm
<out_no_color>:
  endbr64
  push   %r12
  xor    %esi,%esi
  mov    $0x1,%edi
  lea    D361(%rip),%r12
  push   %rbp
  lea    D115(%rip),%rbp
  sub    $0x8,%rsp
  call   <move@plt>
  lea    D179(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x2,%edi
  call   <move@plt>
  lea    D182(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x3,%edi
  call   <move@plt>
  lea    D77(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x4,%edi
  call   <move@plt>
  lea    D125(%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    D238(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x7,%edi
  call   <move@plt>
  lea    D268(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x8,%edi
  call   <move@plt>
  xor    %esi,%esi
  mov    $0x9,%edi
  call   <move@plt>
  lea    D367(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0xa,%edi
  call   <move@plt>
  lea    D434(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0xb,%edi
  call   <move@plt>
  lea    D209(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0xc,%edi
  call   <move@plt>
  lea    D204(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0xd,%edi
  call   <move@plt>
  lea    D121(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0xe,%edi
  call   <move@plt>
  lea    D431(%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    D227(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x11,%edi
  call   <move@plt>
  lea    D152(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x12,%edi
  call   <move@plt>
  lea    D120(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x13,%edi
  call   <move@plt>
  lea    D341(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x14,%edi
  call   <move@plt>
  lea    D231(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x15,%edi
  call   <move@plt>
  lea    D25(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x16,%edi
  call   <move@plt>
  lea    D414(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x17,%edi
  call   <move@plt>
  lea    D330(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x18,%edi
  call   <move@plt>
  lea    D307(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x19,%edi
  call   <move@plt>
  lea    D117(%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    D68(%rip),%rdi
  call   <printw@plt>
  xor    %esi,%esi
  mov    $0x1c,%edi
  call   <move@plt>
  lea    D99(%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    D2(%rip),%rbp
  call   <printw@plt>
  mov    $0x57,%esi
  xor    %edi,%edi
  call   <move@plt>
  lea    D92(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x1,%edi
  call   <move@plt>
  lea    D76(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x2,%edi
  call   <move@plt>
  lea    D305(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x3,%edi
  call   <move@plt>
  lea    D52(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x4,%edi
  call   <move@plt>
  lea    D346(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x5,%edi
  call   <move@plt>
  lea    D63(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x6,%edi
  call   <move@plt>
  lea    D428(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x7,%edi
  call   <move@plt>
  lea    D432(%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    D222(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0xa,%edi
  call   <move@plt>
  lea    D100(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0xb,%edi
  call   <move@plt>
  lea    D13(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0xc,%edi
  call   <move@plt>
  lea    D276(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0xd,%edi
  call   <move@plt>
  lea    D97(%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    D155(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x10,%edi
  call   <move@plt>
  lea    D364(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x11,%edi
  call   <move@plt>
  lea    D118(%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    D358(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x14,%edi
  call   <move@plt>
  lea    D48(%rip),%rdi
  call   <printw@plt>
  mov    $0x57,%esi
  mov    $0x15,%edi
  call   <move@plt>
  mov    %rbp,%rdi
  lea    D119(%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    D323(%rip),%rdi
  pop    %rbp
  pop    %r12
  jmp    1060 <printw@plt>
```

tool_calls: name: read_data
arguments: tag: D361
type: string
name: read_data
arguments: tag: D115
type: string
name: read_data
arguments: tag: D179
type: string
name: read_data
arguments: tag: D182
type: string
name: read_data
arguments: tag: D77
type: string
name: read_data
arguments: tag: D125
type: string
name: read_data
arguments: tag: D238
type: string
name: read_data
arguments: tag: D268
type: string
name: read_data
arguments: tag: D367
type: string
name: read_data
arguments: tag: D434
type: string
name: read_data
arguments: tag: D209
type: string
name: read_data
arguments: tag: D204
type: string
name: read_data
arguments: tag: D121
type: string
name: read_data
arguments: tag: D431
type: string
name: read_data
arguments: tag: D227
type: string
name: read_data
arguments: tag: D152
type: string
name: read_data
arguments: tag: D120
type: string
name: read_data
arguments: tag: D341
type: string
name: read_data
arguments: tag: D231
type: string
name: read_data
arguments: tag: D25
type: string
name: read_data
arguments: tag: D414
type: string
name: read_data
arguments: tag: D330
type: string
name: read_data
arguments: tag: D307
type: string
name: read_data
arguments: tag: D117
type: string
name: read_data
arguments: tag: D68
type: string
name: read_data
arguments: tag: D99
type: string
name: read_data
arguments: tag: D2
type: string
name: read_data
arguments: tag: D92
type: string
name: read_data
arguments: tag: D76
type: string
name: read_data
arguments: tag: D305
type: string
name: read_data
arguments: tag: D52
type: string
name: read_data
arguments: tag: D346
type: string
name: read_data
arguments: tag: D63
type: string
name: read_data
arguments: tag: D428
type: string
name: read_data
arguments: tag: D432
type: string
name: read_data
arguments: tag: D222
type: string
name: read_data
arguments: tag: D100
type: string
name: read_data
arguments: tag: D13
type: string
name: read_data
arguments: tag: D276
type: string
name: read_data
arguments: tag: D97
type: string
name: read_data
arguments: tag: D155
type: string
name: read_data
arguments: tag: D364
type: string
name: read_data
arguments: tag: D118
type: string
name: read_data
arguments: tag: D358
type: string
name: read_data
arguments: tag: D48
type: string
name: read_data
arguments: tag: D119
type: string
name: read_data
arguments: tag: D323
type: string

tool: 

tool: D115: =======================================================================================

tool: D179: -----------------------

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

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

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

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

tool: D268: ---------------------------------------------------------------------------------------

tool: D367: _start:

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

tool: D209:     65 76          adr     r13, data

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

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

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

tool: D227: /*

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

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

tool: D341:  */

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

tool: D25:                                                    @ r5 = ATAG_CORE

tool: D414:                                                    @ r6 = ATAG_INITRD2

tool: D330:                                                    @ r7 = initrd start

tool: D307:                                                    @ r8 = initrd end

tool: D117:                                                    @ r9 = param_struct address

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

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

tool: D2: |------------------|

tool: D92: | r0:   0x12345678 |

tool: D76: | r1:   0x12345678 |

tool: D305: | r2:   0x12345678 |

tool: D52: | r3:   0x12345678 |

tool: D346: | r4:   0x12345678 |

tool: D63: | r5:   0x12345678 |

tool: D428: | r6:   0x12345678 |

tool: D432: | r7:   0x12345678 |

tool: D222: | r8:   0x12345678 |

tool: D100: | r9:   0x12345678 |

tool: D13: | r10:  0x12345678 |

tool: D276: | r11:  0x12345678 |

tool: D97: | r12:  0x12345678 |

tool: D155: | r13:  0x12345678 |

tool: D364: | r14:  0x12345678 |

tool: D118: | r15:  0x12345678 |

tool: D358: | cpsr: ********** |

tool: D48: | spsr: ********** |

tool: D119: |                  |

tool: D323: ====================

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