40ffee:	b8 fe ff ff 7f       	mov    $0x7ffffffe,%eax
40fff3:	2b c2                	sub    %edx,%eax
40fff5:	3b c1                	cmp    %ecx,%eax
40fff7:	0f 82 91 00 00 00    	jb     0x41008e
40fffd:	8b 45 fc             	mov    -0x4(%ebp),%eax
410000:	83 c8 07             	or     $0x7,%eax
410003:	3d fe ff ff 7f       	cmp    $0x7ffffffe,%eax
410008:	76 07                	jbe    0x410011
41000a:	b8 fe ff ff 7f       	mov    $0x7ffffffe,%eax
41000f:	eb 0a                	jmp    0x41001b
410011:	b9 0a 00 00 00       	mov    $0xa,%ecx
410016:	3b c1                	cmp    %ecx,%eax
410018:	0f 42 c1             	cmovb  %ecx,%eax
41001b:	33 c9                	xor    %ecx,%ecx
41001d:	89 45 f8             	mov    %eax,-0x8(%ebp)
410020:	83 c0 01             	add    $0x1,%eax
410023:	0f 92 c1             	setb   %cl
410026:	f7 d9                	neg    %ecx
410028:	0b c8                	or     %eax,%ecx
41002a:	51                   	push   %ecx
41002b:	8b ce                	mov    %esi,%ecx
41002d:	e8 7e 30 ff ff       	call   0x4030b0
410032:	8b c8                	mov    %eax,%ecx
410034:	8b 45 fc             	mov    -0x4(%ebp),%eax
410037:	89 46 10             	mov    %eax,0x10(%esi)
41003a:	8b 45 f8             	mov    -0x8(%ebp),%eax
41003d:	89 0e                	mov    %ecx,(%esi)
41003f:	89 46 14             	mov    %eax,0x14(%esi)
410042:	83 7f 14 08          	cmpl   $0x8,0x14(%edi)
410046:	89 4d ec             	mov    %ecx,-0x14(%ebp)
410049:	72 02                	jb     0x41004d
41004b:	8b 3f                	mov    (%edi),%edi
41004d:	8b 45 f4             	mov    -0xc(%ebp),%eax
410050:	03 c0                	add    %eax,%eax
410052:	50                   	push   %eax
410053:	57                   	push   %edi
410054:	51                   	push   %ecx
410055:	89 45 f4             	mov    %eax,-0xc(%ebp)
410058:	e8 23 b6 00 00       	call   0x41b680
41005d:	83 c4 0c             	add    $0xc,%esp
410060:	83 7b 14 08          	cmpl   $0x8,0x14(%ebx)
410064:	72 02                	jb     0x410068
410066:	8b 1b                	mov    (%ebx),%ebx
410068:	8b 4d f0             	mov    -0x10(%ebp),%ecx
41006b:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
410072:	51                   	push   %ecx
410073:	8b 4d f4             	mov    -0xc(%ebp),%ecx
410076:	03 4d ec             	add    -0x14(%ebp),%ecx
410079:	53                   	push   %ebx
41007a:	51                   	push   %ecx
41007b:	e8 00 b6 00 00       	call   0x41b680
410080:	83 c4 0c             	add    $0xc,%esp
410083:	8b c6                	mov    %esi,%eax
410085:	5f                   	pop    %edi
410086:	5e                   	pop    %esi
410087:	5b                   	pop    %ebx
410088:	8b e5                	mov    %ebp,%esp
41008a:	5d                   	pop    %ebp
41008b:	c2 0c 00             	ret    $0xc
41008e:	e8 cd 12 ff ff       	call   0x401360
410093:	cc                   	int3
410094:	cc                   	int3
410095:	cc                   	int3
410096:	cc                   	int3
410097:	cc                   	int3
410098:	cc                   	int3
410099:	cc                   	int3
41009a:	cc                   	int3
41009b:	cc                   	int3
41009c:	cc                   	int3
41009d:	cc                   	int3
41009e:	cc                   	int3
41009f:	cc                   	int3
4100a0:	55                   	push   %ebp
4100a1:	8b ec                	mov    %esp,%ebp
4100a3:	83 ec 14             	sub    $0x14,%esp
4100a6:	8b 55 10             	mov    0x10(%ebp),%edx
4100a9:	53                   	push   %ebx
4100aa:	8b 5d 0c             	mov    0xc(%ebp),%ebx
4100ad:	56                   	push   %esi
4100ae:	57                   	push   %edi
4100af:	8b f9                	mov    %ecx,%edi
4100b1:	89 5d fc             	mov    %ebx,-0x4(%ebp)
4100b4:	89 55 f0             	mov    %edx,-0x10(%ebp)
4100b7:	8b 4f 14             	mov    0x14(%edi),%ecx
4100ba:	8b c1                	mov    %ecx,%eax
4100bc:	8b 77 10             	mov    0x10(%edi),%esi
4100bf:	2b c6                	sub    %esi,%eax
4100c1:	89 75 ec             	mov    %esi,-0x14(%ebp)
4100c4:	89 4d f4             	mov    %ecx,-0xc(%ebp)
4100c7:	3b d0                	cmp    %eax,%edx
4100c9:	0f 87 8c 00 00 00    	ja     0x41015b
4100cf:	83 7d f4 08          	cmpl   $0x8,-0xc(%ebp)
4100d3:	8d 04 32             	lea    (%edx,%esi,1),%eax
4100d6:	89 47 10             	mov    %eax,0x10(%edi)
4100d9:	8b cf                	mov    %edi,%ecx
4100db:	89 7d f8             	mov    %edi,-0x8(%ebp)
4100de:	72 05                	jb     0x4100e5
4100e0:	8b 0f                	mov    (%edi),%ecx
4100e2:	89 4d f8             	mov    %ecx,-0x8(%ebp)
4100e5:	8d 04 12             	lea    (%edx,%edx,1),%eax
4100e8:	89 45 f4             	mov    %eax,-0xc(%ebp)
4100eb:	03 c3                	add    %ebx,%eax
4100ed:	3b c1                	cmp    %ecx,%eax
4100ef:	76 18                	jbe    0x410109
4100f1:	8d 04 71             	lea    (%ecx,%esi,2),%eax
4100f4:	3b d8                	cmp    %eax,%ebx
4100f6:	77 11                	ja     0x410109
4100f8:	3b cb                	cmp    %ebx,%ecx
4100fa:	77 04                	ja     0x410100
4100fc:	33 db                	xor    %ebx,%ebx
4100fe:	eb 0b                	jmp    0x41010b
410100:	8b d9                	mov    %ecx,%ebx
410102:	2b 5d fc             	sub    -0x4(%ebp),%ebx
410105:	d1 fb                	sar    $1,%ebx
410107:	eb 02                	jmp    0x41010b
410109:	8b da                	mov    %edx,%ebx
41010b:	8d 04 75 02 00 00 00 	lea    0x2(,%esi,2),%eax
410112:	50                   	push   %eax
410113:	8b 45 f4             	mov    -0xc(%ebp),%eax
410116:	51                   	push   %ecx
410117:	03 c1                	add    %ecx,%eax
410119:	50                   	push   %eax
41011a:	e8 61 b5 00 00       	call   0x41b680
41011f:	8d 34 1b             	lea    (%ebx,%ebx,1),%esi
410122:	56                   	push   %esi
410123:	ff 75 fc             	push   -0x4(%ebp)
410126:	ff 75 f8             	push   -0x8(%ebp)
410129:	e8 52 b5 00 00       	call   0x41b680
41012e:	8b 45 f0             	mov    -0x10(%ebp),%eax
410131:	8b c8                	mov    %eax,%ecx
410133:	2b cb                	sub    %ebx,%ecx
410135:	03 c9                	add    %ecx,%ecx
410137:	51                   	push   %ecx
410138:	8d 0c 18             	lea    (%eax,%ebx,1),%ecx
41013b:	8b 45 fc             	mov    -0x4(%ebp),%eax
41013e:	8d 0c 48             	lea    (%eax,%ecx,2),%ecx
410141:	51                   	push   %ecx
410142:	8b 4d f8             	mov    -0x8(%ebp),%ecx
410145:	03 ce                	add    %esi,%ecx
410147:	51                   	push   %ecx
410148:	e8 33 b5 00 00       	call   0x41b680
41014d:	83 c4 24             	add    $0x24,%esp
410150:	8b c7                	mov    %edi,%eax
410152:	5f                   	pop    %edi
410153:	5e                   	pop    %esi
410154:	5b                   	pop    %ebx
410155:	8b e5                	mov    %ebp,%esp
410157:	5d                   	pop    %ebp
410158:	c2 0c 00             	ret    $0xc
41015b:	b8 fe ff ff 7f       	mov    $0x7ffffffe,%eax
410160:	2b c6                	sub    %esi,%eax
410162:	3b c2                	cmp    %edx,%eax
410164:	0f 82 f4 00 00 00    	jb     0x41025e
41016a:	8d 04 16             	lea    (%esi,%edx,1),%eax
41016d:	8b f0                	mov    %eax,%esi
41016f:	89 45 f8             	mov    %eax,-0x8(%ebp)
410172:	83 ce 07             	or     $0x7,%esi
410175:	81 fe fe ff ff 7f    	cmp    $0x7ffffffe,%esi
41017b:	76 07                	jbe    0x410184
41017d:	be fe ff ff 7f       	mov    $0x7ffffffe,%esi
410182:	eb 1e                	jmp    0x4101a2
410184:	8b d1                	mov    %ecx,%edx
410186:	b8 fe ff ff 7f       	mov    $0x7ffffffe,%eax
41018b:	d1 ea                	shr    $1,%edx
41018d:	2b c2                	sub    %edx,%eax
41018f:	3b c8                	cmp    %eax,%ecx
410191:	76 07                	jbe    0x41019a
410193:	be fe ff ff 7f       	mov    $0x7ffffffe,%esi
410198:	eb 08                	jmp    0x4101a2
41019a:	8d 04 0a             	lea    (%edx,%ecx,1),%eax
41019d:	3b f0                	cmp    %eax,%esi
41019f:	0f 42 f0             	cmovb  %eax,%esi
4101a2:	33 c9                	xor    %ecx,%ecx
4101a4:	8b c6                	mov    %esi,%eax
4101a6:	83 c0 01             	add    $0x1,%eax
4101a9:	0f 92 c1             	setb   %cl
4101ac:	f7 d9                	neg    %ecx
4101ae:	0b c8                	or     %eax,%ecx
4101b0:	51                   	push   %ecx
4101b1:	8b cf                	mov    %edi,%ecx
4101b3:	e8 f8 2e ff ff       	call   0x4030b0
4101b8:	83 7d f4 08          	cmpl   $0x8,-0xc(%ebp)
4101bc:	8b c8                	mov    %eax,%ecx
4101be:	8b 45 f8             	mov    -0x8(%ebp),%eax
4101c1:	89 47 10             	mov    %eax,0x10(%edi)
4101c4:	8b 45 f0             	mov    -0x10(%ebp),%eax
4101c7:	89 77 14             	mov    %esi,0x14(%edi)
4101ca:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4101cd:	8d 14 00             	lea    (%eax,%eax,1),%edx
4101d0:	8b 45 ec             	mov    -0x14(%ebp),%eax
4101d3:	52                   	push   %edx
4101d4:	53                   	push   %ebx
4101d5:	51                   	push   %ecx
4101d6:	8d 34 45 02 00 00 00 	lea    0x2(,%eax,2),%esi
4101dd:	8d 04 0a             	lea    (%edx,%ecx,1),%eax
4101e0:	89 75 ec             	mov    %esi,-0x14(%ebp)
4101e3:	89 45 f0             	mov    %eax,-0x10(%ebp)
4101e6:	72 54                	jb     0x41023c
4101e8:	8b 37                	mov    (%edi),%esi
4101ea:	e8 91 b4 00 00       	call   0x41b680
4101ef:	ff 75 ec             	push   -0x14(%ebp)
4101f2:	56                   	push   %esi
4101f3:	ff 75 f0             	push   -0x10(%ebp)
4101f6:	e8 85 b4 00 00       	call   0x41b680
4101fb:	8b 45 f4             	mov    -0xc(%ebp),%eax
4101fe:	83 c4 18             	add    $0x18,%esp
410201:	8d 0c 45 02 00 00 00 	lea    0x2(,%eax,2),%ecx
410208:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
41020e:	72 12                	jb     0x410222
410210:	8b 56 fc             	mov    -0x4(%esi),%edx
410213:	83 c1 23             	add    $0x23,%ecx
410216:	2b f2                	sub    %edx,%esi
410218:	8d 46 fc             	lea    -0x4(%esi),%eax
41021b:	83 f8 1f             	cmp    $0x1f,%eax
41021e:	77 43                	ja     0x410263
410220:	8b f2                	mov    %edx,%esi
410222:	51                   	push   %ecx
410223:	56                   	push   %esi
410224:	e8 8f 99 00 00       	call   0x419bb8
410229:	8b 45 fc             	mov    -0x4(%ebp),%eax
41022c:	83 c4 08             	add    $0x8,%esp
41022f:	89 07                	mov    %eax,(%edi)
410231:	8b c7                	mov    %edi,%eax
410233:	5f                   	pop    %edi
410234:	5e                   	pop    %esi
410235:	5b                   	pop    %ebx
410236:	8b e5                	mov    %ebp,%esp
410238:	5d                   	pop    %ebp
410239:	c2 0c 00             	ret    $0xc
41023c:	e8 3f b4 00 00       	call   0x41b680
410241:	56                   	push   %esi
410242:	57                   	push   %edi
410243:	ff 75 f0             	push   -0x10(%ebp)
410246:	e8 35 b4 00 00       	call   0x41b680
41024b:	8b 45 fc             	mov    -0x4(%ebp),%eax
41024e:	83 c4 18             	add    $0x18,%esp
410251:	89 07                	mov    %eax,(%edi)
410253:	8b c7                	mov    %edi,%eax
410255:	5f                   	pop    %edi
410256:	5e                   	pop    %esi
410257:	5b                   	pop    %ebx
410258:	8b e5                	mov    %ebp,%esp
41025a:	5d                   	pop    %ebp
41025b:	c2 0c 00             	ret    $0xc
41025e:	e8 fd 10 ff ff       	call   0x401360
410263:	e8 2b f7 00 00       	call   0x41f993
410268:	cc                   	int3
410269:	cc                   	int3
41026a:	cc                   	int3
41026b:	cc                   	int3
41026c:	cc                   	int3
41026d:	cc                   	int3
41026e:	cc                   	int3
41026f:	cc                   	int3
410270:	55                   	push   %ebp
410271:	8b ec                	mov    %esp,%ebp
410273:	51                   	push   %ecx
410274:	8b 45 08             	mov    0x8(%ebp),%eax
410277:	53                   	push   %ebx
410278:	57                   	push   %edi
410279:	8b 7d 0c             	mov    0xc(%ebp),%edi
41027c:	8b d9                	mov    %ecx,%ebx
41027e:	89 45 fc             	mov    %eax,-0x4(%ebp)
410281:	80 7f 0d 00          	cmpb   $0x0,0xd(%edi)
410285:	75 71                	jne    0x4102f8
410287:	56                   	push   %esi
410288:	ff 77 08             	push   0x8(%edi)
41028b:	8b cb                	mov    %ebx,%ecx
41028d:	50                   	push   %eax
41028e:	e8 dd ff ff ff       	call   0x410270
410293:	8b f7                	mov    %edi,%esi
410295:	8b 3f                	mov    (%edi),%edi
410297:	8b 4e 24             	mov    0x24(%esi),%ecx
41029a:	83 f9 08             	cmp    $0x8,%ecx
41029d:	72 2e                	jb     0x4102cd
41029f:	8b 46 10             	mov    0x10(%esi),%eax
4102a2:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
4102a9:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
4102af:	72 12                	jb     0x4102c3
4102b1:	8b 50 fc             	mov    -0x4(%eax),%edx
4102b4:	83 c1 23             	add    $0x23,%ecx
4102b7:	2b c2                	sub    %edx,%eax
4102b9:	83 c0 fc             	add    $0xfffffffc,%eax
4102bc:	83 f8 1f             	cmp    $0x1f,%eax
4102bf:	77 3f                	ja     0x410300
4102c1:	8b c2                	mov    %edx,%eax
4102c3:	51                   	push   %ecx
4102c4:	50                   	push   %eax
4102c5:	e8 ee 98 00 00       	call   0x419bb8
4102ca:	83 c4 08             	add    $0x8,%esp
4102cd:	33 c0                	xor    %eax,%eax
4102cf:	c7 46 20 00 00 00 00 	movl   $0x0,0x20(%esi)
4102d6:	6a 2c                	push   $0x2c
4102d8:	56                   	push   %esi
4102d9:	c7 46 24 07 00 00 00 	movl   $0x7,0x24(%esi)
4102e0:	66 89 46 10          	mov    %ax,0x10(%esi)
4102e4:	e8 cf 98 00 00       	call   0x419bb8
4102e9:	83 c4 08             	add    $0x8,%esp
4102ec:	80 7f 0d 00          	cmpb   $0x0,0xd(%edi)
4102f0:	75 05                	jne    0x4102f7
4102f2:	8b 45 fc             	mov    -0x4(%ebp),%eax
4102f5:	eb 91                	jmp    0x410288
4102f7:	5e                   	pop    %esi
4102f8:	5f                   	pop    %edi
4102f9:	5b                   	pop    %ebx
4102fa:	8b e5                	mov    %ebp,%esp
4102fc:	5d                   	pop    %ebp
4102fd:	c2 08 00             	ret    $0x8
410300:	e8 8e f6 00 00       	call   0x41f993
410305:	cc                   	int3
410306:	cc                   	int3
410307:	cc                   	int3
410308:	cc                   	int3
410309:	cc                   	int3
41030a:	cc                   	int3
41030b:	cc                   	int3
41030c:	cc                   	int3
41030d:	cc                   	int3
41030e:	cc                   	int3
41030f:	cc                   	int3
410310:	55                   	push   %ebp
410311:	8b ec                	mov    %esp,%ebp
410313:	51                   	push   %ecx
410314:	8b 45 08             	mov    0x8(%ebp),%eax
410317:	53                   	push   %ebx
410318:	56                   	push   %esi
410319:	8b 75 0c             	mov    0xc(%ebp),%esi
41031c:	8b d9                	mov    %ecx,%ebx
41031e:	89 45 fc             	mov    %eax,-0x4(%ebp)
410321:	80 7e 0d 00          	cmpb   $0x0,0xd(%esi)
410325:	75 2d                	jne    0x410354
410327:	57                   	push   %edi
410328:	ff 76 08             	push   0x8(%esi)
41032b:	8b cb                	mov    %ebx,%ecx
41032d:	50                   	push   %eax
41032e:	e8 dd ff ff ff       	call   0x410310
410333:	8b fe                	mov    %esi,%edi
410335:	8b 36                	mov    (%esi),%esi
410337:	8d 4f 10             	lea    0x10(%edi),%ecx
41033a:	e8 d1 09 00 00       	call   0x410d10
41033f:	6a 40                	push   $0x40
410341:	57                   	push   %edi
410342:	e8 71 98 00 00       	call   0x419bb8
410347:	8b 45 fc             	mov    -0x4(%ebp),%eax
41034a:	83 c4 08             	add    $0x8,%esp
41034d:	80 7e 0d 00          	cmpb   $0x0,0xd(%esi)
410351:	74 d5                	je     0x410328
410353:	5f                   	pop    %edi
410354:	5e                   	pop    %esi