diff --git a/20230605/array-param-09.c b/20230605/array-param-09.c
new file mode 100644
index 0000000000000000000000000000000000000000..798829a2bf910024e94ee49cecb5b8424aa2eaf4
--- /dev/null
+++ b/20230605/array-param-09.c
@@ -0,0 +1,24 @@
+#include <stdio.h>
+
+int* read_something ()  /* ohne "void": Funktion kann beliebig viele Parameter haben */
+{
+  int n;
+  printf ("Wie viele Zahlen? ");
+  scanf ("%d", &n);
+  int b[n];
+  for (int i = 0; i < n; i++)
+    {
+      printf ("%d. Zahl: ", i + 1);
+      scanf ("%d", b + i);  /* andere Schreibweise: &a[i] */
+    }
+  return b;
+}
+
+int main (void)
+{
+  int *x = read_something (&x);
+  for (int i = 0; i < sizeof (x); i++)
+    printf (" %d", x[i]);
+  printf ("\n");
+  return 0;
+}
diff --git a/20230605/array-param-10.c b/20230605/array-param-10.c
new file mode 100644
index 0000000000000000000000000000000000000000..2ca326c291a7a3073d1e9144833a457bfc053023
--- /dev/null
+++ b/20230605/array-param-10.c
@@ -0,0 +1,25 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int* read_something ()  /* ohne "void": Funktion kann beliebig viele Parameter haben */
+{
+  int n;
+  printf ("Wie viele Zahlen? ");
+  scanf ("%d", &n);
+  int *b = malloc (n * sizeof (int));
+  for (int i = 0; i < n; i++)
+    {
+      printf ("%d. Zahl: ", i + 1);
+      scanf ("%d", b + i);  /* andere Schreibweise: &a[i] */
+    }
+  return b;
+}
+
+int main (void)
+{
+  int *x = read_something (&x);
+  for (int i = 0; i < sizeof (x); i++)
+    printf (" %d", x[i]);
+  printf ("\n");
+  return 0;
+}
diff --git a/20230605/array-param-11.c b/20230605/array-param-11.c
new file mode 100644
index 0000000000000000000000000000000000000000..ea3a31eb8293208fc15b7f8efe10e09a496ba141
--- /dev/null
+++ b/20230605/array-param-11.c
@@ -0,0 +1,28 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+int* read_something (int *nn)
+{
+  int n;
+  printf ("Wie viele Zahlen? ");
+  scanf ("%d", &n);
+  int *b = malloc (n * sizeof (int));
+  for (int i = 0; i < n; i++)
+    {
+      printf ("%d. Zahl: ", i + 1);
+      scanf ("%d", b + i);  /* andere Schreibweise: &a[i] */
+    }
+  if (nn)
+    *nn = n;
+  return b;
+}
+
+int main (void)
+{
+  int n;
+  int *x = read_something (&n);
+  for (int i = 0; i < n; i++)
+    printf (" %d", x[i]);
+  printf ("\n");
+  return 0;
+}
diff --git a/20230605/array-param-12.c b/20230605/array-param-12.c
new file mode 100644
index 0000000000000000000000000000000000000000..862eb4c9c2007650910fb437b646ea3d94af7afb
--- /dev/null
+++ b/20230605/array-param-12.c
@@ -0,0 +1,35 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+typedef struct
+{
+  int *data;
+  int n;
+}
+dyn_array;
+
+dyn_array read_something (void)
+{
+  dyn_array a;
+  printf ("Wie viele Zahlen? ");
+  scanf ("%d", &a.n);
+  int *b = malloc (a.n * sizeof (int));
+  for (int i = 0; i < a.n; i++)
+    {
+      printf ("%d. Zahl: ", i + 1);
+      scanf ("%d", b + i);  /* andere Schreibweise: &a[i] */
+    }
+  a.data = b;
+  return a;
+}
+
+int main (void)
+{
+  dyn_array x = read_something ();
+  printf ("%d eingegebene Zahlen:", x.n);
+  for (int i = 0; i < x.n; i++)
+    printf (" %d", x.data[i]);
+  printf ("\n");
+  free (x.data);
+  return 0;
+}
diff --git a/20230605/array-param-12.s b/20230605/array-param-12.s
new file mode 100644
index 0000000000000000000000000000000000000000..70458dbd8f26f8ab87d4f97da7d61ef7cc9ad19c
--- /dev/null
+++ b/20230605/array-param-12.s
@@ -0,0 +1,145 @@
+	.file	"array-param-12.c"
+	.text
+	.section	.rodata.str1.1,"aMS",@progbits,1
+.LC0:
+	.string	"Wie viele Zahlen? "
+.LC1:
+	.string	"%d"
+.LC2:
+	.string	"%d. Zahl: "
+	.text
+	.globl	read_something
+	.type	read_something, @function
+read_something:
+.LFB22:
+	.cfi_startproc
+	pushq	%r13
+	.cfi_def_cfa_offset 16
+	.cfi_offset 13, -16                      ; #include <stdio.h>
+	pushq	%r12                             ; #include <stdlib.h>
+	.cfi_def_cfa_offset 24                   ; 
+	.cfi_offset 12, -24                      ; typedef struct
+	pushq	%rbp                             ; {
+	.cfi_def_cfa_offset 32                   ;   int *data;
+	.cfi_offset 6, -32                       ;   int n;
+	pushq	%rbx                             ; }
+	.cfi_def_cfa_offset 40                   ; dyn_array;
+	.cfi_offset 3, -40                       ; 
+	subq	$24, %rsp                        ; dyn_array read_something (void)
+	.cfi_def_cfa_offset 64                   ; {
+	leaq	.LC0(%rip), %rdi                 ;   dyn_array a;
+	movl	$0, %eax                         ;   printf ("Wie viele Zahlen? ");
+	call	printf@PLT                       ;   scanf ("%d", &a.n);
+	leaq	8(%rsp), %rsi                    ;   int *b = malloc (a.n * sizeof (int));
+	leaq	.LC1(%rip), %rdi                 ;   for (int i = 0; i < a.n; i++)
+	movl	$0, %eax                         ;     {
+	call	__isoc99_scanf@PLT               ;       printf ("%d. Zahl: ", i + 1);
+	movl	8(%rsp), %ebx                    ;       scanf ("%d", b + i);  /* andere Schreibweise: &a[i] */
+	movslq	%ebx, %rdi                       ;     }
+	salq	$2, %rdi                         ;   a.data = b;
+	call	malloc@PLT                       ;   return a;
+	movq	%rax, %r13                       ; }
+	testl	%ebx, %ebx                       ; 
+	jle	.L2                              ; int main (void)
+	movq	%rax, %rbp                       ; {
+	movl	$0, %ebx                         ;   dyn_array x = read_something ();
+	leaq	.LC2(%rip), %r12                 ;   printf ("%d eingegebene Zahlen:", x.n);
+.L3:                                             ;   for (int i = 0; i < x.n; i++)
+	addl	$1, %ebx                         ;     printf (" %d", x.data[i]);
+	movl	%ebx, %esi                       ;   printf ("\n");
+	movq	%r12, %rdi                       ;   free (x.data);
+	movl	$0, %eax                         ;   return 0;
+	call	printf@PLT                       ; }
+	movq	%rbp, %rsi
+	leaq	.LC1(%rip), %rdi
+	movl	$0, %eax
+	call	__isoc99_scanf@PLT
+	addq	$4, %rbp
+	cmpl	8(%rsp), %ebx
+	jl	.L3
+.L2:
+	movq	%r13, (%rsp)
+	movq	(%rsp), %rax
+	movq	8(%rsp), %rdx
+	addq	$24, %rsp
+	.cfi_def_cfa_offset 40
+	popq	%rbx
+	.cfi_def_cfa_offset 32
+	popq	%rbp
+	.cfi_def_cfa_offset 24
+	popq	%r12
+	.cfi_def_cfa_offset 16
+	popq	%r13
+	.cfi_def_cfa_offset 8
+	ret
+	.cfi_endproc
+.LFE22:
+	.size	read_something, .-read_something
+	.section	.rodata.str1.1
+.LC3:
+	.string	"%d eingegebene Zahlen:"
+.LC4:
+	.string	" %d"
+	.text
+	.globl	main
+	.type	main, @function
+main:
+.LFB23:
+	.cfi_startproc
+	pushq	%r13
+	.cfi_def_cfa_offset 16
+	.cfi_offset 13, -16
+	pushq	%r12
+	.cfi_def_cfa_offset 24
+	.cfi_offset 12, -24
+	pushq	%rbp
+	.cfi_def_cfa_offset 32
+	.cfi_offset 6, -32
+	pushq	%rbx
+	.cfi_def_cfa_offset 40
+	.cfi_offset 3, -40
+	subq	$8, %rsp
+	.cfi_def_cfa_offset 48
+	call	read_something
+	movq	%rax, %r13
+	movq	%rdx, %rbp
+	movl	%edx, %esi
+	leaq	.LC3(%rip), %rdi
+	movl	$0, %eax
+	call	printf@PLT
+	testl	%ebp, %ebp
+	jle	.L7
+	movq	%r13, %rbx
+	leal	-1(%rbp), %eax
+	leaq	4(%r13,%rax,4), %r12
+	leaq	.LC4(%rip), %rbp
+.L8:
+	movl	(%rbx), %esi
+	movq	%rbp, %rdi
+	movl	$0, %eax
+	call	printf@PLT
+	addq	$4, %rbx
+	cmpq	%r12, %rbx
+	jne	.L8
+.L7:
+	movl	$10, %edi
+	call	putchar@PLT
+	movq	%r13, %rdi
+	call	free@PLT
+	movl	$0, %eax
+	addq	$8, %rsp
+	.cfi_def_cfa_offset 40
+	popq	%rbx
+	.cfi_def_cfa_offset 32
+	popq	%rbp
+	.cfi_def_cfa_offset 24
+	popq	%r12
+	.cfi_def_cfa_offset 16
+	popq	%r13
+	.cfi_def_cfa_offset 8
+	ret
+	.cfi_endproc
+.LFE23:
+	.size	main, .-main
+	.ident	"GCC: (Debian 8.3.0-6) 8.3.0"
+	.section	.note.GNU-stack,"",@progbits
diff --git a/20230605/array-param-12.s32 b/20230605/array-param-12.s32
new file mode 100644
index 0000000000000000000000000000000000000000..820262c13614237742644702721fecf49df7fb57
--- /dev/null
+++ b/20230605/array-param-12.s32
@@ -0,0 +1,202 @@
+	.file	"array-param-12.c"
+	.text
+	.section	.rodata.str1.1,"aMS",@progbits,1
+.LC0:
+	.string	"Wie viele Zahlen? "
+.LC1:
+	.string	"%d"
+.LC2:
+	.string	"%d. Zahl: "
+	.text
+	.globl	read_something
+	.type	read_something, @function
+read_something:
+.LFB22:
+	.cfi_startproc
+	pushl	%ebp
+	.cfi_def_cfa_offset 8
+	.cfi_offset 5, -8
+	pushl	%edi
+	.cfi_def_cfa_offset 12
+	.cfi_offset 7, -12
+	pushl	%esi
+	.cfi_def_cfa_offset 16
+	.cfi_offset 6, -16
+	pushl	%ebx
+	.cfi_def_cfa_offset 20
+	.cfi_offset 3, -20
+	subl	$56, %esp
+	.cfi_def_cfa_offset 76
+	call	__x86.get_pc_thunk.bx
+	addl	$_GLOBAL_OFFSET_TABLE_, %ebx
+	leal	.LC0@GOTOFF(%ebx), %eax
+	pushl	%eax
+	.cfi_def_cfa_offset 80
+	call	printf@PLT
+	addl	$8, %esp                             ; #include <stdio.h>
+	.cfi_def_cfa_offset 72                       ; #include <stdlib.h>
+	leal	36(%esp), %eax                       ; 
+	pushl	%eax                                 ; typedef struct
+	.cfi_def_cfa_offset 76                       ; {
+	leal	.LC1@GOTOFF(%ebx), %eax              ;   int *data;
+	pushl	%eax                                 ;   int n;
+	.cfi_def_cfa_offset 80                       ; }
+	call	__isoc99_scanf@PLT                   ; dyn_array;
+	movl	44(%esp), %esi                       ; 
+	leal	0(,%esi,4), %eax                     ; dyn_array read_something (void)
+	movl	%eax, (%esp)                         ; {
+	call	malloc@PLT                           ;   dyn_array a;
+	movl	%eax, 28(%esp)                       ;   printf ("Wie viele Zahlen? ");
+	addl	$16, %esp                            ;   scanf ("%d", &a.n);
+	.cfi_def_cfa_offset 64                       ;   int *b = malloc (a.n * sizeof (int));
+	testl	%esi, %esi                           ;   for (int i = 0; i < a.n; i++)
+	jle	.L2                                  ;     {
+	movl	%eax, %edi                           ;       printf ("%d. Zahl: ", i + 1);
+	movl	$0, %esi                             ;       scanf ("%d", b + i);  /* andere Schreibweise: &a[i] */
+	leal	.LC2@GOTOFF(%ebx), %ebp              ;     }
+	leal	.LC1@GOTOFF(%ebx), %eax              ;   a.data = b;
+	movl	%eax, 8(%esp)                        ;   return a;
+.L3:                                                 ; }
+	addl	$1, %esi                             ; 
+	subl	$8, %esp                             ; int main (void)
+	.cfi_def_cfa_offset 72                       ; {
+	pushl	%esi                                 ;   dyn_array x = read_something ();
+	.cfi_def_cfa_offset 76                       ;   printf ("%d eingegebene Zahlen:", x.n);
+	pushl	%ebp                                 ;   for (int i = 0; i < x.n; i++)
+	.cfi_def_cfa_offset 80                       ;     printf (" %d", x.data[i]);
+	call	printf@PLT                           ;   printf ("\n");
+	addl	$8, %esp                             ;   free (x.data);
+	.cfi_def_cfa_offset 72                       ;   return 0;
+	pushl	%edi                                 ; }
+	.cfi_def_cfa_offset 76
+	pushl	20(%esp)
+	.cfi_def_cfa_offset 80
+	call	__isoc99_scanf@PLT
+	addl	$4, %edi
+	addl	$16, %esp
+	.cfi_def_cfa_offset 64
+	cmpl	28(%esp), %esi
+	jl	.L3
+.L2:
+	movl	12(%esp), %eax
+	movl	%eax, 24(%esp)
+	movl	24(%esp), %eax
+	movl	28(%esp), %edx
+	movl	64(%esp), %ecx
+	movl	%eax, (%ecx)
+	movl	%edx, 4(%ecx)
+	movl	%ecx, %eax
+	addl	$44, %esp
+	.cfi_def_cfa_offset 20
+	popl	%ebx
+	.cfi_restore 3
+	.cfi_def_cfa_offset 16
+	popl	%esi
+	.cfi_restore 6
+	.cfi_def_cfa_offset 12
+	popl	%edi
+	.cfi_restore 7
+	.cfi_def_cfa_offset 8
+	popl	%ebp
+	.cfi_restore 5
+	.cfi_def_cfa_offset 4
+	ret	$4
+	.cfi_endproc
+.LFE22:
+	.size	read_something, .-read_something
+	.section	.rodata.str1.1
+.LC3:
+	.string	"%d eingegebene Zahlen:"
+.LC4:
+	.string	" %d"
+	.text
+	.globl	main
+	.type	main, @function
+main:
+.LFB23:
+	.cfi_startproc
+	leal	4(%esp), %ecx
+	.cfi_def_cfa 1, 0
+	andl	$-16, %esp
+	pushl	-4(%ecx)
+	pushl	%ebp
+	.cfi_escape 0x10,0x5,0x2,0x75,0
+	movl	%esp, %ebp
+	pushl	%edi
+	pushl	%esi
+	pushl	%ebx
+	pushl	%ecx
+	.cfi_escape 0xf,0x3,0x75,0x70,0x6
+	.cfi_escape 0x10,0x7,0x2,0x75,0x7c
+	.cfi_escape 0x10,0x6,0x2,0x75,0x78
+	.cfi_escape 0x10,0x3,0x2,0x75,0x74
+	subl	$36, %esp
+	call	__x86.get_pc_thunk.bx
+	addl	$_GLOBAL_OFFSET_TABLE_, %ebx
+	leal	-32(%ebp), %eax
+	pushl	%eax
+	call	read_something
+	movl	-32(%ebp), %eax
+	movl	%eax, %esi
+	movl	%eax, -40(%ebp)
+	movl	-28(%ebp), %edi
+	subl	$12, %esp
+	pushl	%edi
+	leal	.LC3@GOTOFF(%ebx), %eax
+	pushl	%eax
+	call	printf@PLT
+	addl	$32, %esp
+	testl	%edi, %edi
+	jle	.L7
+	leal	(%esi,%edi,4), %eax
+	movl	%eax, -36(%ebp)
+	leal	.LC4@GOTOFF(%ebx), %edi
+.L8:
+	subl	$8, %esp
+	pushl	(%esi)
+	pushl	%edi
+	call	printf@PLT
+	addl	$4, %esi
+	addl	$16, %esp
+	cmpl	-36(%ebp), %esi
+	jne	.L8
+.L7:
+	subl	$12, %esp
+	pushl	$10
+	call	putchar@PLT
+	addl	$4, %esp
+	pushl	-40(%ebp)
+	call	free@PLT
+	addl	$16, %esp
+	movl	$0, %eax
+	leal	-16(%ebp), %esp
+	popl	%ecx
+	.cfi_restore 1
+	.cfi_def_cfa 1, 0
+	popl	%ebx
+	.cfi_restore 3
+	popl	%esi
+	.cfi_restore 6
+	popl	%edi
+	.cfi_restore 7
+	popl	%ebp
+	.cfi_restore 5
+	leal	-4(%ecx), %esp
+	.cfi_def_cfa 4, 4
+	ret
+	.cfi_endproc
+.LFE23:
+	.size	main, .-main
+	.section	.text.__x86.get_pc_thunk.bx,"axG",@progbits,__x86.get_pc_thunk.bx,comdat
+	.globl	__x86.get_pc_thunk.bx
+	.hidden	__x86.get_pc_thunk.bx
+	.type	__x86.get_pc_thunk.bx, @function
+__x86.get_pc_thunk.bx:
+.LFB24:
+	.cfi_startproc
+	movl	(%esp), %ebx
+	ret
+	.cfi_endproc
+.LFE24:
+	.ident	"GCC: (Debian 8.3.0-6) 8.3.0"
+	.section	.note.GNU-stack,"",@progbits
diff --git a/20230605/array-param-13.c b/20230605/array-param-13.c
new file mode 100644
index 0000000000000000000000000000000000000000..f567dde9d33b404eac52fe463c5f6dd92c6ddb19
--- /dev/null
+++ b/20230605/array-param-13.c
@@ -0,0 +1,34 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+typedef struct
+{
+  int *data;
+  int n;
+}
+dyn_array;
+
+void read_something (dyn_array *a)
+{
+  printf ("Wie viele Zahlen? ");
+  scanf ("%d", &a->n);
+  int *b = malloc (a->n * sizeof (int));
+  for (int i = 0; i < a->n; i++)
+    {
+      printf ("%d. Zahl: ", i + 1);
+      scanf ("%d", b + i);  /* andere Schreibweise: &a[i] */
+    }
+  a->data = b;
+}
+
+int main (void)
+{
+  dyn_array x;
+  read_something (&x);
+  printf ("%d eingegebene Zahlen:", x.n);
+  for (int i = 0; i < x.n; i++)
+    printf (" %d", x.data[i]);
+  printf ("\n");
+  free (x.data);
+  return 0;
+}
diff --git a/20230605/array-param-13.s32 b/20230605/array-param-13.s32
new file mode 100644
index 0000000000000000000000000000000000000000..da9c08ef718cdcefa540236def12dedb1caf7710
--- /dev/null
+++ b/20230605/array-param-13.s32
@@ -0,0 +1,194 @@
+	.file	"array-param-13.c"
+	.text
+	.section	.rodata.str1.1,"aMS",@progbits,1
+.LC0:
+	.string	"Wie viele Zahlen? "
+.LC1:
+	.string	"%d"
+.LC2:
+	.string	"%d. Zahl: "
+	.text
+	.globl	read_something
+	.type	read_something, @function
+read_something:
+.LFB22:
+	.cfi_startproc
+	pushl	%ebp
+	.cfi_def_cfa_offset 8
+	.cfi_offset 5, -8
+	pushl	%edi
+	.cfi_def_cfa_offset 12
+	.cfi_offset 7, -12
+	pushl	%esi
+	.cfi_def_cfa_offset 16
+	.cfi_offset 6, -16
+	pushl	%ebx
+	.cfi_def_cfa_offset 20
+	.cfi_offset 3, -20
+	subl	$40, %esp
+	.cfi_def_cfa_offset 60
+	call	__x86.get_pc_thunk.bx                      ; #include <stdio.h>
+	addl	$_GLOBAL_OFFSET_TABLE_, %ebx               ; #include <stdlib.h>
+	movl	60(%esp), %edi                             ; 
+	leal	.LC0@GOTOFF(%ebx), %eax                    ; typedef struct
+	pushl	%eax                                       ; {
+	.cfi_def_cfa_offset 64                             ;   int *data;
+	call	printf@PLT                                 ;   int n;
+	addl	$8, %esp                                   ; }
+	.cfi_def_cfa_offset 56                             ; dyn_array;
+	leal	4(%edi), %eax                              ; 
+	pushl	%eax                                       ; void read_something (dyn_array *a)
+	.cfi_def_cfa_offset 60                             ; {
+	leal	.LC1@GOTOFF(%ebx), %eax                    ;   printf ("Wie viele Zahlen? ");
+	pushl	%eax                                       ;   scanf ("%d", &a->n);
+	.cfi_def_cfa_offset 64                             ;   int *b = malloc (a->n * sizeof (int));
+	call	__isoc99_scanf@PLT                         ;   for (int i = 0; i < a->n; i++)
+	movl	4(%edi), %esi                              ;     {
+	leal	0(,%esi,4), %eax                           ;       printf ("%d. Zahl: ", i + 1);
+	movl	%eax, (%esp)                               ;       scanf ("%d", b + i);  /* andere Schreibweise: &a[i] */
+	call	malloc@PLT                                 ;     }
+	movl	%eax, 28(%esp)                             ;   a->data = b;
+	addl	$16, %esp                                  ; }
+	.cfi_def_cfa_offset 48                             ; 
+	testl	%esi, %esi                                 ; int main (void)
+	jle	.L2                                        ; {
+	movl	%eax, %ebp                                 ;   dyn_array x;
+	movl	$0, %esi                                   ;   read_something (&x);
+	leal	.LC2@GOTOFF(%ebx), %eax                    ;   printf ("%d eingegebene Zahlen:", x.n);
+	movl	%eax, 4(%esp)                              ;   for (int i = 0; i < x.n; i++)
+	leal	.LC1@GOTOFF(%ebx), %eax                    ;     printf (" %d", x.data[i]);
+	movl	%eax, 8(%esp)                              ;   printf ("\n");
+.L3:                                                       ;   free (x.data);
+	addl	$1, %esi                                   ;   return 0;
+	subl	$8, %esp                                   ; }
+	.cfi_def_cfa_offset 56
+	pushl	%esi
+	.cfi_def_cfa_offset 60
+	pushl	16(%esp)
+	.cfi_def_cfa_offset 64
+	call	printf@PLT
+	addl	$8, %esp
+	.cfi_def_cfa_offset 56
+	pushl	%ebp
+	.cfi_def_cfa_offset 60
+	pushl	20(%esp)
+	.cfi_def_cfa_offset 64
+	call	__isoc99_scanf@PLT
+	addl	$4, %ebp
+	addl	$16, %esp
+	.cfi_def_cfa_offset 48
+	cmpl	4(%edi), %esi
+	jl	.L3
+.L2:
+	movl	12(%esp), %eax
+	movl	%eax, (%edi)
+	addl	$28, %esp
+	.cfi_def_cfa_offset 20
+	popl	%ebx
+	.cfi_restore 3
+	.cfi_def_cfa_offset 16
+	popl	%esi
+	.cfi_restore 6
+	.cfi_def_cfa_offset 12
+	popl	%edi
+	.cfi_restore 7
+	.cfi_def_cfa_offset 8
+	popl	%ebp
+	.cfi_restore 5
+	.cfi_def_cfa_offset 4
+	ret
+	.cfi_endproc
+.LFE22:
+	.size	read_something, .-read_something
+	.section	.rodata.str1.1
+.LC3:
+	.string	"%d eingegebene Zahlen:"
+.LC4:
+	.string	" %d"
+	.text
+	.globl	main
+	.type	main, @function
+main:
+.LFB23:
+	.cfi_startproc
+	leal	4(%esp), %ecx
+	.cfi_def_cfa 1, 0
+	andl	$-16, %esp
+	pushl	-4(%ecx)
+	pushl	%ebp
+	.cfi_escape 0x10,0x5,0x2,0x75,0
+	movl	%esp, %ebp
+	pushl	%edi
+	pushl	%esi
+	pushl	%ebx
+	pushl	%ecx
+	.cfi_escape 0xf,0x3,0x75,0x70,0x6
+	.cfi_escape 0x10,0x7,0x2,0x75,0x7c
+	.cfi_escape 0x10,0x6,0x2,0x75,0x78
+	.cfi_escape 0x10,0x3,0x2,0x75,0x74
+	subl	$36, %esp
+	call	__x86.get_pc_thunk.bx
+	addl	$_GLOBAL_OFFSET_TABLE_, %ebx
+	leal	-32(%ebp), %eax
+	pushl	%eax
+	call	read_something
+	addl	$8, %esp
+	pushl	-28(%ebp)
+	leal	.LC3@GOTOFF(%ebx), %eax
+	pushl	%eax
+	call	printf@PLT
+	addl	$16, %esp
+	cmpl	$0, -28(%ebp)
+	jle	.L7
+	movl	$0, %esi
+	leal	.LC4@GOTOFF(%ebx), %edi
+.L8:
+	subl	$8, %esp
+	movl	-32(%ebp), %eax
+	pushl	(%eax,%esi,4)
+	pushl	%edi
+	call	printf@PLT
+	addl	$1, %esi
+	addl	$16, %esp
+	cmpl	%esi, -28(%ebp)
+	jg	.L8
+.L7:
+	subl	$12, %esp
+	pushl	$10
+	call	putchar@PLT
+	addl	$4, %esp
+	pushl	-32(%ebp)
+	call	free@PLT
+	addl	$16, %esp
+	movl	$0, %eax
+	leal	-16(%ebp), %esp
+	popl	%ecx
+	.cfi_restore 1
+	.cfi_def_cfa 1, 0
+	popl	%ebx
+	.cfi_restore 3
+	popl	%esi
+	.cfi_restore 6
+	popl	%edi
+	.cfi_restore 7
+	popl	%ebp
+	.cfi_restore 5
+	leal	-4(%ecx), %esp
+	.cfi_def_cfa 4, 4
+	ret
+	.cfi_endproc
+.LFE23:
+	.size	main, .-main
+	.section	.text.__x86.get_pc_thunk.bx,"axG",@progbits,__x86.get_pc_thunk.bx,comdat
+	.globl	__x86.get_pc_thunk.bx
+	.hidden	__x86.get_pc_thunk.bx
+	.type	__x86.get_pc_thunk.bx, @function
+__x86.get_pc_thunk.bx:
+.LFB24:
+	.cfi_startproc
+	movl	(%esp), %ebx
+	ret
+	.cfi_endproc
+.LFE24:
+	.ident	"GCC: (Debian 8.3.0-6) 8.3.0"
+	.section	.note.GNU-stack,"",@progbits