1 .globl code_s
2 .section .rodata
3 .align 8
4 .LC0:
5 .string "#!/usr/bin/python\n\nimport re\nimport sys\n\ndef print_uninterpreted(string):\n result = string\n result = re.sub(r\"\\\\\", r\"\\\\\\\\\", result)\n result = re.sub(r\"\\\"\", r\"\\\"\", result)\n result = re.sub(r\"\\n\", r\"\\\\n\", result)\n return result\n\ndef print_delimited(list, d):\n result = \"\"\n for l in range(len(list)):\n result += print_uninterpreted(list[l])\n if l < len(list)-1:\n result += d\n return result\n\ncode = [\n\"%s\"\n]\ndelimiter = [\n\"%s\"\n]\n\nlang = 0\nif len(sys.argv) > 1:\n lang = int(sys.argv[1])\n\nprint code[lang] %% (print_delimited(code, delimiter[lang]), print_delimited(delimiter, delimiter[lang]))"
6 .string "#!/bin/sh\n\nLANG=1\nif [ $# -ne 0 ];
7 .string "#include <stdlib.h>\n#include <stdio.h>\n#include <string.h>\n\n\nchar* code[] = { \n\"%s\"\n};
8 .string ".globl code_s\n .section .rodata\n .align 8\n.LC0:\n .string \"%s\"\n .string \"\"\n .data\n .align 8\n .type code_s, @object\n .size code_s, 8\ncode_s:\n .quad .LC0\n.globl delimiter_s\n .section .rodata\n.LC1:\n .string \"%s\"\n .string \"\"\n .data\n .align 8\n .type delimiter_s, @object\n .size delimiter_s, 8\ndelimiter_s:\n .quad .LC1\n.globl lang\n .align 4\n .type lang, @object\n .size lang, 4\nlang:\n .long 3\n .text\n.globl escape\n .type escape, @function\nescape:\n.LFB5:\n pushq %%rbp\n.LCFI0:\n movq %%rsp, %%rbp\n.LCFI1:\n subq $80, %%rsp\n.LCFI2:\n movq %%rdi, -40(%%rbp)\n movq -40(%%rbp), %%rax\n movq %%rax, -24(%%rbp)\n movq -24(%%rbp), %%rax\n movq $-1, %%rcx\n movq %%rax, -56(%%rbp)\n movl $0, %%eax\n cld\n movq -56(%%rbp), %%rdi\n repnz\n scasb\n movq %%rcx, %%rax\n notq %%rax\n decq %%rax\n addq %%rax, %%rax\n leaq 1(%%rax), %%rdi\n call malloc\n movq %%rax, -16(%%rbp)\n jmp .L2\n.L3:\n movzbl -1(%%rbp), %%eax\n movl %%eax, -44(%%rbp)\n cmpl $34, -44(%%rbp)\n je .L6\n cmpl $92, -44(%%rbp)\n je .L7\n cmpl $10, -44(%%rbp)\n je .L5\n jmp .L4\n.L7:\n movq -16(%%rbp), %%rax\n movq $-1, %%rcx\n movq %%rax, -64(%%rbp)\n movl $0, %%eax\n cld\n movq -64(%%rbp), %%rdi\n repnz\n scasb\n movq %%rcx, %%rax\n notq %%rax\n decq %%rax\n addq -16(%%rbp), %%rax\n movw $23644, (%%rax)\n movb $0, 2(%%rax)\n jmp .L8\n.L6:\n movq -16(%%rbp), %%rax\n movq $-1, %%rcx\n movq %%rax, -72(%%rbp)\n movl $0, %%eax\n cld\n movq -72(%%rbp), %%rdi\n repnz\n scasb\n movq %%rcx, %%rax\n notq %%rax\n decq %%rax\n addq -16(%%rbp), %%rax\n movw $8796, (%%rax)\n movb $0, 2(%%rax)\n jmp .L8\n.L5:\n movq -16(%%rbp), %%rax\n movq $-1, %%rcx\n movq %%rax, -80(%%rbp)\n movl $0, %%eax\n cld\n movq -80(%%rbp), %%rdi\n repnz\n scasb\n movq %%rcx, %%rax\n notq %%rax\n decq %%rax\n addq -16(%%rbp), %%rax\n movw $28252, (%%rax)\n movb $0, 2(%%rax)\n jmp .L8\n.L4:\n movq -24(%%rbp), %%rsi\n movq -16(%%rbp), %%rdi\n movl $1, %%edx\n call strncat\n.L8:\n incq -24(%%rbp)\n.L2:\n movq -24(%%rbp), %%rax\n movzbl (%%rax), %%eax\n movb %%al, -1(%%rbp)\n cmpb $0, -1(%%rbp)\n jne .L3\n movq -16(%%rbp), %%rax\n leave\n ret\n.LFE5:\n .size escape, .-escape\n.globl print_delimited\n .type print_delimited, @function\nprint_delimited:\n.LFB6:\n pushq %%rbp\n.LCFI3:\n movq %%rsp, %%rbp\n.LCFI4:\n subq $48, %%rsp\n.LCFI5:\n movq %%rdi, -24(%%rbp)\n movq %%rsi, -32(%%rbp)\n movl $0, %%edi\n call malloc\n movq %%rax, -16(%%rbp)\n movq -24(%%rbp), %%rax\n movq %%rax, -8(%%rbp)\n movq -8(%%rbp), %%rdi\n call escape\n movq %%rax, %%rsi\n movq -16(%%rbp), %%rdi\n call strcat\n movq -8(%%rbp), %%rax\n movq $-1, %%rcx\n movq %%rax, -40(%%rbp)\n movl $0, %%eax\n cld\n movq -40(%%rbp), %%rdi\n repnz\n scasb\n movq %%rcx, %%rax\n notq %%rax\n decq %%rax\n addq -8(%%rbp), %%rax\n incq %%rax\n movq %%rax, -8(%%rbp)\n jmp .L12\n.L13:\n movq -32(%%rbp), %%rsi\n movq -16(%%rbp), %%rdi\n call strcat\n movq -8(%%rbp), %%rdi\n call escape\n movq %%rax, %%rsi\n movq -16(%%rbp), %%rdi\n call strcat\n movq -8(%%rbp), %%rax\n movq $-1, %%rcx\n movq %%rax, -48(%%rbp)\n movl $0, %%eax\n cld\n movq -48(%%rbp), %%rdi\n repnz\n scasb\n movq %%rcx, %%rax\n notq %%rax\n decq %%rax\n addq -8(%%rbp), %%rax\n incq %%rax\n movq %%rax, -8(%%rbp)\n.L12:\n movq -8(%%rbp), %%rax\n movzbl (%%rax), %%eax\n testb %%al, %%al\n jne .L13\n movq -16(%%rbp), %%rax\n leave\n ret\n.LFE6:\n .size print_delimited, .-print_delimited\n.globl array_index\n .type array_index, @function\narray_index:\n.LFB7:\n pushq %%rbp\n.LCFI6:\n movq %%rsp, %%rbp\n.LCFI7:\n movq %%rdi, -24(%%rbp)\n movl %%esi, -28(%%rbp)\n movq -24(%%rbp), %%rax\n movq %%rax, -16(%%rbp)\n movl $0, -4(%%rbp)\n jmp .L17\n.L18:\n movq -16(%%rbp), %%rax\n movq $-1, %%rcx\n movq %%rax, -40(%%rbp)\n movl $0, %%eax\n cld\n movq -40(%%rbp), %%rdi\n repnz\n scasb\n movq %%rcx, %%rax\n notq %%rax\n decq %%rax\n addq -16(%%rbp), %%rax\n incq %%rax\n movq %%rax, -16(%%rbp)\n incl -4(%%rbp)\n.L17:\n movl -4(%%rbp), %%eax\n cmpl -28(%%rbp), %%eax\n jl .L18\n movq -16(%%rbp), %%rax\n leave\n ret\n.LFE7:\n .size array_index, .-array_index\n.globl main\n .type main, @function\nmain:\n.LFB8:\n pushq %%rbp\n.LCFI8:\n movq %%rsp, %%rbp\n.LCFI9:\n pushq %%r12\n.LCFI10:\n pushq %%rbx\n.LCFI11:\n subq $16, %%rsp\n.LCFI12:\n movl %%edi, -20(%%rbp)\n movq %%rsi, -32(%%rbp)\n cmpl $1, -20(%%rbp)\n jle .L22\n movq -32(%%rbp), %%rax\n addq $8, %%rax\n movq (%%rax), %%rdi\n call atoi\n movl %%eax, lang(%%rip)\n.L22:\n movl lang(%%rip), %%esi\n movq delimiter_s(%%rip), %%rdi\n call array_index\n movq %%rax, %%rsi\n movq delimiter_s(%%rip), %%rdi\n call print_delimited\n movq %%rax, %%r12\n movl lang(%%rip), %%esi\n movq delimiter_s(%%rip), %%rdi\n call array_index\n movq %%rax, %%rsi\n movq code_s(%%rip), %%rdi\n call print_delimited\n movq %%rax, %%rbx\n movl lang(%%rip), %%esi\n movq code_s(%%rip), %%rdi\n call array_index\n movq %%rax, %%rdi\n movq %%r12, %%rdx\n movq %%rbx, %%rsi\n movl $0, %%eax\n call printf\n movl $10, %%edi\n call putchar\n movl $0, %%eax\n addq $16, %%rsp\n popq %%rbx\n popq %%r12\n leave\n ret\n.LFE8:\n .size main, .-main\n .section .eh_frame,\"a\",@progbits\n.Lframe1:\n .long .LECIE1-.LSCIE1\n.LSCIE1:\n .long 0x0\n .byte 0x1\n .string \"zR\"\n .uleb128 0x1\n .sleb128 -8\n .byte 0x10\n .uleb128 0x1\n .byte 0x3\n .byte 0xc\n .uleb128 0x7\n .uleb128 0x8\n .byte 0x90\n .uleb128 0x1\n .align 8\n.LECIE1:\n.LSFDE1:\n .long .LEFDE1-.LASFDE1\n.LASFDE1:\n .long .LASFDE1-.Lframe1\n .long .LFB5\n .long .LFE5-.LFB5\n .uleb128 0x0\n .byte 0x4\n .long .LCFI0-.LFB5\n .byte 0xe\n .uleb128 0x10\n .byte 0x86\n .uleb128 0x2\n .byte 0x4\n .long .LCFI1-.LCFI0\n .byte 0xd\n .uleb128 0x6\n .align 8\n.LEFDE1:\n.LSFDE3:\n .long .LEFDE3-.LASFDE3\n.LASFDE3:\n .long .LASFDE3-.Lframe1\n .long .LFB6\n .long .LFE6-.LFB6\n .uleb128 0x0\n .byte 0x4\n .long .LCFI3-.LFB6\n .byte 0xe\n .uleb128 0x10\n .byte 0x86\n .uleb128 0x2\n .byte 0x4\n .long .LCFI4-.LCFI3\n .byte 0xd\n .uleb128 0x6\n .align 8\n.LEFDE3:\n.LSFDE5:\n .long .LEFDE5-.LASFDE5\n.LASFDE5:\n .long .LASFDE5-.Lframe1\n .long .LFB7\n .long .LFE7-.LFB7\n .uleb128 0x0\n .byte 0x4\n .long .LCFI6-.LFB7\n .byte 0xe\n .uleb128 0x10\n .byte 0x86\n .uleb128 0x2\n .byte 0x4\n .long .LCFI7-.LCFI6\n .byte 0xd\n .uleb128 0x6\n .align 8\n.LEFDE5:\n.LASFDE7:\n .long .LASFDE7-.Lframe1\n .long .LFB8\n .long .LFE8-.LFB8\n .uleb128 0x0\n .byte 0x4\n .long .LCFI8-.LFB8\n .byte 0xe\n .uleb128 0x10\n .byte 0x86\n .uleb128 0x2\n .byte 0x4\n .long .LCFI9-.LCFI8\n .byte 0xd\n .uleb128 0x6\n .byte 0x4\n .long .LCFI12-.LCFI9\n .byte 0x83\n .uleb128 0x4\n .byte 0x8c\n .uleb128 0x3\n .align 8"
9 .string ""
10 .data
11 .align 8
12 .type code_s, @object
13 .size code_s, 8
14 code_s:
15 .quad .LC0
16 .globl delimiter_s
17 .section .rodata
18 .LC1:
19 .string "\"\n,\n\""
20 .string "\n #"
21 .string "\"\n,\n\""
22 .string "\"\n .string \""
23 .string ""
24 .data
25 .align 8
26 .type delimiter_s, @object
27 .size delimiter_s, 8
28 delimiter_s:
29 .quad .LC1
30 .globl lang
31 .align 4
32 .type lang, @object
33 .size lang, 4
34 lang:
35 .long 3
36 .text
37 .globl escape
38 .type escape, @function
39 escape:
40 .LFB5:
41 pushq %rbp
42 .LCFI0:
43 movq %rsp, %rbp
44 .LCFI1:
45 subq $80, %rsp
46 .LCFI2:
47 movq %rdi, -40(%rbp)
48 movq -40(%rbp), %rax
49 movq %rax, -24(%rbp)
50 movq -24(%rbp), %rax
51 movq $-1, %rcx
52 movq %rax, -56(%rbp)
53 movl $0, %eax
54 cld
55 movq -56(%rbp), %rdi
56 repnz
57 scasb
58 movq %rcx, %rax
59 notq %rax
60 decq %rax
61 addq %rax, %rax
62 leaq 1(%rax), %rdi
63 call malloc
64 movq %rax, -16(%rbp)
65 jmp .L2
66 .L3:
67 movzbl -1(%rbp), %eax
68 movl %eax, -44(%rbp)
69 cmpl $34, -44(%rbp)
70 je .L6
71 cmpl $92, -44(%rbp)
72 je .L7
73 cmpl $10, -44(%rbp)
74 je .L5
75 jmp .L4
76 .L7:
77 movq -16(%rbp), %rax
78 movq $-1, %rcx
79 movq %rax, -64(%rbp)
80 movl $0, %eax
81 cld
82 movq -64(%rbp), %rdi
83 repnz
84 scasb
85 movq %rcx, %rax
86 notq %rax
87 decq %rax
88 addq -16(%rbp), %rax
89 movw $23644, (%rax)
90 movb $0, 2(%rax)
91 jmp .L8
92 .L6:
93 movq -16(%rbp), %rax
94 movq $-1, %rcx
95 movq %rax, -72(%rbp)
96 movl $0, %eax
97 cld
98 movq -72(%rbp), %rdi
99 repnz
100 scasb
101 movq %rcx, %rax
102 notq %rax
103 decq %rax
104 addq -16(%rbp), %rax
105 movw $8796, (%rax)
106 movb $0, 2(%rax)
107 jmp .L8
108 .L5:
109 movq -16(%rbp), %rax
110 movq $-1, %rcx
111 movq %rax, -80(%rbp)
112 movl $0, %eax
113 cld
114 movq -80(%rbp), %rdi
115 repnz
116 scasb
117 movq %rcx, %rax
118 notq %rax
119 decq %rax
120 addq -16(%rbp), %rax
121 movw $28252, (%rax)
122 movb $0, 2(%rax)
123 jmp .L8
124 .L4:
125 movq -24(%rbp), %rsi
126 movq -16(%rbp), %rdi
127 movl $1, %edx
128 call strncat
129 .L8:
130 incq -24(%rbp)
131 .L2:
132 movq -24(%rbp), %rax
133 movzbl (%rax), %eax
134 movb %al, -1(%rbp)
135 cmpb $0, -1(%rbp)
136 jne .L3
137 movq -16(%rbp), %rax
138 leave
139 ret
140 .LFE5:
141 .size escape, .-escape
142 .globl print_delimited
143 .type print_delimited, @function
144 print_delimited:
145 .LFB6:
146 pushq %rbp
147 .LCFI3:
148 movq %rsp, %rbp
149 .LCFI4:
150 subq $48, %rsp
151 .LCFI5:
152 movq %rdi, -24(%rbp)
153 movq %rsi, -32(%rbp)
154 movl $0, %edi
155 call malloc
156 movq %rax, -16(%rbp)
157 movq -24(%rbp), %rax
158 movq %rax, -8(%rbp)
159 movq -8(%rbp), %rdi
160 call escape
161 movq %rax, %rsi
162 movq -16(%rbp), %rdi
163 call strcat
164 movq -8(%rbp), %rax
165 movq $-1, %rcx
166 movq %rax, -40(%rbp)
167 movl $0, %eax
168 cld
169 movq -40(%rbp), %rdi
170 repnz
171 scasb
172 movq %rcx, %rax
173 notq %rax
174 decq %rax
175 addq -8(%rbp), %rax
176 incq %rax
177 movq %rax, -8(%rbp)
178 jmp .L12
179 .L13:
180 movq -32(%rbp), %rsi
181 movq -16(%rbp), %rdi
182 call strcat
183 movq -8(%rbp), %rdi
184 call escape
185 movq %rax, %rsi
186 movq -16(%rbp), %rdi
187 call strcat
188 movq -8(%rbp), %rax
189 movq $-1, %rcx
190 movq %rax, -48(%rbp)
191 movl $0, %eax
192 cld
193 movq -48(%rbp), %rdi
194 repnz
195 scasb
196 movq %rcx, %rax
197 notq %rax
198 decq %rax
199 addq -8(%rbp), %rax
200 incq %rax
201 movq %rax, -8(%rbp)
202 .L12:
203 movq -8(%rbp), %rax
204 movzbl (%rax), %eax
205 testb %al, %al
206 jne .L13
207 movq -16(%rbp), %rax
208 leave
209 ret
210 .LFE6:
211 .size print_delimited, .-print_delimited
212 .globl array_index
213 .type array_index, @function
214 array_index:
215 .LFB7:
216 pushq %rbp
217 .LCFI6:
218 movq %rsp, %rbp
219 .LCFI7:
220 movq %rdi, -24(%rbp)
221 movl %esi, -28(%rbp)
222 movq -24(%rbp), %rax
223 movq %rax, -16(%rbp)
224 movl $0, -4(%rbp)
225 jmp .L17
226 .L18:
227 movq -16(%rbp), %rax
228 movq $-1, %rcx
229 movq %rax, -40(%rbp)
230 movl $0, %eax
231 cld
232 movq -40(%rbp), %rdi
233 repnz
234 scasb
235 movq %rcx, %rax
236 notq %rax
237 decq %rax
238 addq -16(%rbp), %rax
239 incq %rax
240 movq %rax, -16(%rbp)
241 incl -4(%rbp)
242 .L17:
243 movl -4(%rbp), %eax
244 cmpl -28(%rbp), %eax
245 jl .L18
246 movq -16(%rbp), %rax
247 leave
248 ret
249 .LFE7:
250 .size array_index, .-array_index
251 .globl main
252 .type main, @function
253 main:
254 .LFB8:
255 pushq %rbp
256 .LCFI8:
257 movq %rsp, %rbp
258 .LCFI9:
259 pushq %r12
260 .LCFI10:
261 pushq %rbx
262 .LCFI11:
263 subq $16, %rsp
264 .LCFI12:
265 movl %edi, -20(%rbp)
266 movq %rsi, -32(%rbp)
267 cmpl $1, -20(%rbp)
268 jle .L22
269 movq -32(%rbp), %rax
270 addq $8, %rax
271 movq (%rax), %rdi
272 call atoi
273 movl %eax, lang(%rip)
274 .L22:
275 movl lang(%rip), %esi
276 movq delimiter_s(%rip), %rdi
277 call array_index
278 movq %rax, %rsi
279 movq delimiter_s(%rip), %rdi
280 call print_delimited
281 movq %rax, %r12
282 movl lang(%rip), %esi
283 movq delimiter_s(%rip), %rdi
284 call array_index
285 movq %rax, %rsi
286 movq code_s(%rip), %rdi
287 call print_delimited
288 movq %rax, %rbx
289 movl lang(%rip), %esi
290 movq code_s(%rip), %rdi
291 call array_index
292 movq %rax, %rdi
293 movq %r12, %rdx
294 movq %rbx, %rsi
295 movl $0, %eax
296 call printf
297 movl $10, %edi
298 call putchar
299 movl $0, %eax
300 addq $16, %rsp
301 popq %rbx
302 popq %r12
303 leave
304 ret
305 .LFE8:
306 .size main, .-main
307 .section .eh_frame,"a",@progbits
308 .Lframe1:
309 .long .LECIE1-.LSCIE1
310 .LSCIE1:
311 .long 0x0
312 .byte 0x1
313 .string "zR"
314 .uleb128 0x1
315 .sleb128 -8
316 .byte 0x10
317 .uleb128 0x1
318 .byte 0x3
319 .byte 0xc
320 .uleb128 0x7
321 .uleb128 0x8
322 .byte 0x90
323 .uleb128 0x1
324 .align 8
325 .LECIE1:
326 .LSFDE1:
327 .long .LEFDE1-.LASFDE1
328 .LASFDE1:
329 .long .LASFDE1-.Lframe1
330 .long .LFB5
331 .long .LFE5-.LFB5
332 .uleb128 0x0
333 .byte 0x4
334 .long .LCFI0-.LFB5
335 .byte 0xe
336 .uleb128 0x10
337 .byte 0x86
338 .uleb128 0x2
339 .byte 0x4
340 .long .LCFI1-.LCFI0
341 .byte 0xd
342 .uleb128 0x6
343 .align 8
344 .LEFDE1:
345 .LSFDE3:
346 .long .LEFDE3-.LASFDE3
347 .LASFDE3:
348 .long .LASFDE3-.Lframe1
349 .long .LFB6
350 .long .LFE6-.LFB6
351 .uleb128 0x0
352 .byte 0x4
353 .long .LCFI3-.LFB6
354 .byte 0xe
355 .uleb128 0x10
356 .byte 0x86
357 .uleb128 0x2
358 .byte 0x4
359 .long .LCFI4-.LCFI3
360 .byte 0xd
361 .uleb128 0x6
362 .align 8
363 .LEFDE3:
364 .LSFDE5:
365 .long .LEFDE5-.LASFDE5
366 .LASFDE5:
367 .long .LASFDE5-.Lframe1
368 .long .LFB7
369 .long .LFE7-.LFB7
370 .uleb128 0x0
371 .byte 0x4
372 .long .LCFI6-.LFB7
373 .byte 0xe
374 .uleb128 0x10
375 .byte 0x86
376 .uleb128 0x2
377 .byte 0x4
378 .long .LCFI7-.LCFI6
379 .byte 0xd
380 .uleb128 0x6
381 .align 8
382 .LEFDE5:
383 .LASFDE7:
384 .long .LASFDE7-.Lframe1
385 .long .LFB8
386 .long .LFE8-.LFB8
387 .uleb128 0x0
388 .byte 0x4
389 .long .LCFI8-.LFB8
390 .byte 0xe
391 .uleb128 0x10
392 .byte 0x86
393 .uleb128 0x2
394 .byte 0x4
395 .long .LCFI9-.LCFI8
396 .byte 0xd
397 .uleb128 0x6
398 .byte 0x4
399 .long .LCFI12-.LCFI9
400 .byte 0x83
401 .uleb128 0x4
402 .byte 0x8c
403 .uleb128 0x3
404 .align 8