|
|
1.1 root 1: / module name malloc
2: .alignoff
3:
4: .text
5: newarena:
6: enter $4, $0
7: push %esi
8: push %edi
9: push %ebx
10: cmpb .L3, $0
11: je .L4
12: subl %eax, %eax
13: jmp .L2
14: .L4:
15: push $0
16: call sbrk
17: pop %ecx
18: andl %eax, $3
19: movl -4(%ebp), %eax
20: orl %eax, %eax
21: je .L5
22: movl %eax, $4
23: subl %eax, -4(%ebp)
24: push %eax
25: call sbrk
26: pop %ecx
27: cmpl %eax, $-1
28: jne .L5
29: movb .L3, $1
30: jmp .L20002
31: .L5:
32: movl %eax, 8(%ebp)
33: addl %eax, $4104
34: decl %eax
35: andl %eax, $-4096
36: movl -4(%ebp), %eax
37: cmpl %eax, 8(%ebp)
38: jae .L6
39: movl %eax, 8(%ebp)
40: movl -4(%ebp), %eax
41: .L6:
42: movl %eax, __a_first
43: movl __a_scanp, %eax
44: .L8:
45: push -4(%ebp)
46: call sbrk
47: pop %ecx
48: movl %ebx, %eax
49: cmpl %eax, $-1
50: jne .L7
51: movb .L3, $1
52: movl %eax, -4(%ebp)
53: cmpl %eax, $256
54: jbe .L20002
55: subl -4(%ebp), $256
56: movl %eax, -4(%ebp)
57: cmpl %eax, $8
58: jae .L8
59: movl -4(%ebp), $8
60: jmp .L8
61: .L7:
62: cmpl __a_top, $0
63: jne .L11
64: movl __a_count, $2
65: movl %eax, %ebx
66: movl %edi, %eax
67: movl __a_scanp, %eax
68: movl __a_first, %eax
69: jmp .L12
70: .L11:
71: cmpl %ebx, __a_top
72: jne .L13
73: subl %ebx, $8
74: addl -4(%ebp), $8
75: movl %edi, 4(%ebx)
76: incl __a_count
77: jmp .L12
78: .L13:
79: movl %eax, __a_top
80: subl %eax, $8
81: movl %esi, %eax
82: movl %edi, 4(%esi)
83: movl 4(%esi), %ebx
84: addl __a_count, $2
85: .L12:
86: movl %eax, -4(%ebp)
87: subl %eax, $8
88: orl %eax, $1
89: movl (%ebx), %eax
90: movl %eax, %ebx
91: addl %eax, -4(%ebp)
92: movl __a_top, %eax
93: subl %eax, $8
94: movl %esi, %eax
95: movl (%esi), $0
96: movl 4(%esi), %edi
97: .L20002:
98: movl %eax, $1
99: .L2:
100: pop %ebx
101: pop %edi
102: pop %esi
103: leave
104: ret
105: .align 4
106: .globl malloc
107: malloc:
108: enter $8, $0
109: push %esi
110: push %edi
111: push %ebx
112: cmpl 8(%ebp), $0
113: jne .L17
114: .L20004:
115: subl %eax, %eax
116: jmp .L15
117: .L17:
118: movl %eax, 8(%ebp)
119: addl %eax, $8
120: decl %eax
121: andl %eax, $-4
122: movl -4(%ebp), %eax
123: cmpl %eax, 8(%ebp)
124: jb .L20004
125: .L21:
126: subl %esi, %esi
127: movl %ebx, __a_scanp
128: movl %eax, __a_count
129: movl -8(%ebp), %eax
130: .L23:
131: movl %eax, -8(%ebp)
132: decl -8(%ebp)
133: orl %eax, %eax
134: je .L22
135: movl %ecx, (%ebx)
136: movl %edi, %ecx
137: testl %ecx, $1
138: jne .L24
139: subl %esi, %esi
140: .L25:
141: orl %edi, %edi
142: je .L10001
143: movl %eax, %edi
144: andl %eax, $-2
145: addl %eax, %ebx
146: jmp .L10002
147: .L10001:
148: movl %eax, 4(%ebx)
149: .L10002:
150: movl %ebx, %eax
151: jmp .L23
152: .L22:
153: cmpl %ebx, __a_scanp
154: je .L20
155: push $24
156: push $.L16
157: push $2
158: call write
159: addl %esp, $12
160: call abort
161: .L20:
162: push -4(%ebp)
163: call newarena
164: pop %ecx
165: orl %eax, %eax
166: jne .L21
167: jmp .L20004
168: .L24:
169: orl %esi, %esi
170: je .L26
171: movl %ebx, %esi
172: movl %eax, %edi
173: andl %eax, $-2
174: addl (%ebx), %eax
175: movl %eax, (%ebx)
176: movl %edi, %eax
177: decl __a_count
178: .L26:
179: cmpl %edi, -4(%ebp)
180: jae .L27
181: movl %esi, %ebx
182: jmp .L25
183: .L27:
184: movl %eax, -4(%ebp)
185: subl %edi, %eax
186: movl %eax, %edi
187: cmpl %eax, $8
188: jae .L29
189: movl %eax, (%ebx)
190: andl %eax, $-2
191: movl -4(%ebp), %eax
192: movl (%ebx), %eax
193: movl %eax, %ebx
194: addl %eax, -4(%ebp)
195: movl __a_scanp, %eax
196: jmp .L30
197: .L29:
198: movl %eax, -4(%ebp)
199: movl (%ebx), %eax
200: movl %eax, %ebx
201: addl %eax, -4(%ebp)
202: movl __a_scanp, %eax
203: movl %ecx, __a_scanp
204: movl (%ecx), %edi
205: incl __a_count
206: .L30:
207: lea %eax, 4(%ebx)
208: .L15:
209: pop %ebx
210: pop %edi
211: pop %esi
212: leave
213: ret
214: .align 4
215: .globl free
216: free:
217: push %ebp
218: movl %ebp, %esp
219: push %esi
220: push %edi
221: push %ebx
222: cmpl 8(%ebp), $0
223: je .L32
224: movl %eax, 8(%ebp)
225: subl %eax, $4
226: movl %ebx, %eax
227: movl %esi, (%ebx)
228: cmpl %esi, $2
229: jae .L34
230: push $22
231: push $.L35
232: push $2
233: call write
234: addl %esp, $12
235: call abort
236: .L34:
237: orl (%ebx), $1
238: movl %edi, %esi
239: andl %edi, $-2
240: movl %eax, %ebx
241: addl %eax, %edi
242: cmpl %eax, __a_scanp
243: je .L10003
244: movl %edi, __a_scanp
245: testl (%edi), $1
246: jne .L32
247: .L10003:
248: movl __a_scanp, %ebx
249: .L32:
250: pop %ebx
251: pop %edi
252: pop %esi
253: leave
254: ret
255: .align 4
256: .align 4
257:
258: .data
259: .align 4
260: .globl __a_scanp
261: __a_scanp:
262: .long 0
263: .align 4
264: .globl __a_first
265: __a_first:
266: .long 0
267: .align 4
268: .globl __a_top
269: __a_top:
270: .long 0
271: .align 4
272: .globl __a_count
273: __a_count:
274: .long 0
275: .align 1
276: .L3:
277: .byte 0
278: .align 1
279: .L16:
280: .byte 66
281: .byte 97
282: .byte 100
283: .byte 32
284: .byte 112
285: .byte 111
286: .byte 105
287: .byte 110
288: .byte 116
289: .byte 101
290: .byte 114
291: .byte 32
292: .byte 105
293: .byte 110
294: .byte 32
295: .byte 109
296: .byte 97
297: .byte 108
298: .byte 108
299: .byte 111
300: .byte 99
301: .byte 46
302: .byte 13
303: .byte 10
304: .byte 0
305: .align 1
306: .L35:
307: .byte 66
308: .byte 97
309: .byte 100
310: .byte 32
311: .byte 112
312: .byte 111
313: .byte 105
314: .byte 110
315: .byte 116
316: .byte 101
317: .byte 114
318: .byte 32
319: .byte 105
320: .byte 110
321: .byte 32
322: .byte 102
323: .byte 114
324: .byte 101
325: .byte 101
326: .byte 46
327: .byte 13
328: .byte 10
329: .byte 0
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.