40b18e:	03 c7                	add    %edi,%eax
40b190:	50                   	push   %eax
40b191:	33 c0                	xor    %eax,%eax
40b193:	83 7d f4 2d          	cmpl   $0x2d,-0xc(%ebp)
40b197:	51                   	push   %ecx
40b198:	0f 94 c0             	sete   %al
40b19b:	03 c6                	add    %esi,%eax
40b19d:	50                   	push   %eax
40b19e:	e8 f5 68 00 00       	call   0x411a98
40b1a3:	83 c4 10             	add    $0x10,%esp
40b1a6:	85 c0                	test   %eax,%eax
40b1a8:	74 05                	je     0x40b1af
40b1aa:	c6 06 00             	movb   $0x0,(%esi)
40b1ad:	eb 16                	jmp    0x40b1c5
40b1af:	ff 75 20             	push   0x20(%ebp)
40b1b2:	8d 45 f4             	lea    -0xc(%ebp),%eax
40b1b5:	6a 00                	push   $0x0
40b1b7:	50                   	push   %eax
40b1b8:	57                   	push   %edi
40b1b9:	ff 75 10             	push   0x10(%ebp)
40b1bc:	56                   	push   %esi
40b1bd:	e8 09 00 00 00       	call   0x40b1cb
40b1c2:	83 c4 18             	add    $0x18,%esp
40b1c5:	5f                   	pop    %edi
40b1c6:	5e                   	pop    %esi
40b1c7:	8b e5                	mov    %ebp,%esp
40b1c9:	5d                   	pop    %ebp
40b1ca:	c3                   	ret
40b1cb:	8b ff                	mov    %edi,%edi
40b1cd:	55                   	push   %ebp
40b1ce:	8b ec                	mov    %esp,%ebp
40b1d0:	83 ec 10             	sub    $0x10,%esp
40b1d3:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40b1d6:	53                   	push   %ebx
40b1d7:	56                   	push   %esi
40b1d8:	57                   	push   %edi
40b1d9:	ff 75 1c             	push   0x1c(%ebp)
40b1dc:	e8 d0 a4 ff ff       	call   0x4056b1
40b1e1:	8b 55 14             	mov    0x14(%ebp),%edx
40b1e4:	8b 7d 10             	mov    0x10(%ebp),%edi
40b1e7:	8b 5d 08             	mov    0x8(%ebp),%ebx
40b1ea:	8b 4a 04             	mov    0x4(%edx),%ecx
40b1ed:	49                   	dec    %ecx
40b1ee:	80 7d 18 00          	cmpb   $0x0,0x18(%ebp)
40b1f2:	74 14                	je     0x40b208
40b1f4:	3b cf                	cmp    %edi,%ecx
40b1f6:	75 10                	jne    0x40b208
40b1f8:	33 c0                	xor    %eax,%eax
40b1fa:	83 3a 2d             	cmpl   $0x2d,(%edx)
40b1fd:	0f 94 c0             	sete   %al
40b200:	03 c1                	add    %ecx,%eax
40b202:	66 c7 04 18 30 00    	movw   $0x30,(%eax,%ebx,1)
40b208:	83 3a 2d             	cmpl   $0x2d,(%edx)
40b20b:	8b f3                	mov    %ebx,%esi
40b20d:	75 06                	jne    0x40b215
40b20f:	c6 03 2d             	movb   $0x2d,(%ebx)
40b212:	8d 73 01             	lea    0x1(%ebx),%esi
40b215:	8b 42 04             	mov    0x4(%edx),%eax
40b218:	85 c0                	test   %eax,%eax
40b21a:	7f 15                	jg     0x40b231
40b21c:	6a 01                	push   $0x1
40b21e:	56                   	push   %esi
40b21f:	ff 75 0c             	push   0xc(%ebp)
40b222:	53                   	push   %ebx
40b223:	e8 3a 02 00 00       	call   0x40b462
40b228:	83 c4 10             	add    $0x10,%esp
40b22b:	c6 06 30             	movb   $0x30,(%esi)
40b22e:	46                   	inc    %esi
40b22f:	eb 02                	jmp    0x40b233
40b231:	03 f0                	add    %eax,%esi
40b233:	85 ff                	test   %edi,%edi
40b235:	7e 52                	jle    0x40b289
40b237:	6a 01                	push   $0x1
40b239:	56                   	push   %esi
40b23a:	ff 75 0c             	push   0xc(%ebp)
40b23d:	53                   	push   %ebx
40b23e:	e8 1f 02 00 00       	call   0x40b462
40b243:	8b 45 f4             	mov    -0xc(%ebp),%eax
40b246:	83 c4 10             	add    $0x10,%esp
40b249:	8b 80 88 00 00 00    	mov    0x88(%eax),%eax
40b24f:	8b 00                	mov    (%eax),%eax
40b251:	8a 00                	mov    (%eax),%al
40b253:	88 06                	mov    %al,(%esi)
40b255:	46                   	inc    %esi
40b256:	8b 45 14             	mov    0x14(%ebp),%eax
40b259:	8b 48 04             	mov    0x4(%eax),%ecx
40b25c:	85 c9                	test   %ecx,%ecx
40b25e:	79 29                	jns    0x40b289
40b260:	80 7d 18 00          	cmpb   $0x0,0x18(%ebp)
40b264:	75 08                	jne    0x40b26e
40b266:	8b c1                	mov    %ecx,%eax
40b268:	f7 d8                	neg    %eax
40b26a:	3b c7                	cmp    %edi,%eax
40b26c:	7d 04                	jge    0x40b272
40b26e:	8b f9                	mov    %ecx,%edi
40b270:	f7 df                	neg    %edi
40b272:	57                   	push   %edi
40b273:	56                   	push   %esi
40b274:	ff 75 0c             	push   0xc(%ebp)
40b277:	53                   	push   %ebx
40b278:	e8 e5 01 00 00       	call   0x40b462
40b27d:	57                   	push   %edi
40b27e:	6a 30                	push   $0x30
40b280:	56                   	push   %esi
40b281:	e8 da 97 ff ff       	call   0x404a60
40b286:	83 c4 1c             	add    $0x1c,%esp
40b289:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
40b28d:	5f                   	pop    %edi
40b28e:	5e                   	pop    %esi
40b28f:	5b                   	pop    %ebx
40b290:	74 0a                	je     0x40b29c
40b292:	8b 45 f0             	mov    -0x10(%ebp),%eax
40b295:	83 a0 50 03 00 00 fd 	andl   $0xfffffffd,0x350(%eax)
40b29c:	33 c0                	xor    %eax,%eax
40b29e:	8b e5                	mov    %ebp,%esp
40b2a0:	5d                   	pop    %ebp
40b2a1:	c3                   	ret
40b2a2:	8b ff                	mov    %edi,%edi
40b2a4:	55                   	push   %ebp
40b2a5:	8b ec                	mov    %esp,%ebp
40b2a7:	83 ec 10             	sub    $0x10,%esp
40b2aa:	53                   	push   %ebx
40b2ab:	56                   	push   %esi
40b2ac:	57                   	push   %edi
40b2ad:	ff 75 18             	push   0x18(%ebp)
40b2b0:	33 c0                	xor    %eax,%eax
40b2b2:	8d 7d f0             	lea    -0x10(%ebp),%edi
40b2b5:	ff 75 14             	push   0x14(%ebp)
40b2b8:	ab                   	stos   %eax,%es:(%edi)
40b2b9:	ab                   	stos   %eax,%es:(%edi)
40b2ba:	ab                   	stos   %eax,%es:(%edi)
40b2bb:	8d 45 f0             	lea    -0x10(%ebp),%eax
40b2be:	8b 7d 1c             	mov    0x1c(%ebp),%edi
40b2c1:	50                   	push   %eax
40b2c2:	8b 45 08             	mov    0x8(%ebp),%eax
40b2c5:	57                   	push   %edi
40b2c6:	ff 70 04             	push   0x4(%eax)
40b2c9:	ff 30                	push   (%eax)
40b2cb:	e8 5e 6d 00 00       	call   0x41202e
40b2d0:	8b 45 f4             	mov    -0xc(%ebp),%eax
40b2d3:	33 c9                	xor    %ecx,%ecx
40b2d5:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40b2d8:	83 c4 18             	add    $0x18,%esp
40b2db:	83 7d f0 2d          	cmpl   $0x2d,-0x10(%ebp)
40b2df:	0f 94 c1             	sete   %cl
40b2e2:	48                   	dec    %eax
40b2e3:	89 45 fc             	mov    %eax,-0x4(%ebp)
40b2e6:	83 c8 ff             	or     $0xffffffff,%eax
40b2e9:	8d 34 19             	lea    (%ecx,%ebx,1),%esi
40b2ec:	39 45 10             	cmp    %eax,0x10(%ebp)
40b2ef:	74 05                	je     0x40b2f6
40b2f1:	8b 45 10             	mov    0x10(%ebp),%eax
40b2f4:	2b c1                	sub    %ecx,%eax
40b2f6:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40b2f9:	51                   	push   %ecx
40b2fa:	57                   	push   %edi
40b2fb:	50                   	push   %eax
40b2fc:	56                   	push   %esi
40b2fd:	e8 96 67 00 00       	call   0x411a98
40b302:	83 c4 10             	add    $0x10,%esp
40b305:	85 c0                	test   %eax,%eax
40b307:	74 05                	je     0x40b30e
40b309:	c6 03 00             	movb   $0x0,(%ebx)
40b30c:	eb 55                	jmp    0x40b363
40b30e:	8b 45 f4             	mov    -0xc(%ebp),%eax
40b311:	48                   	dec    %eax
40b312:	39 45 fc             	cmp    %eax,-0x4(%ebp)
40b315:	0f 9c c1             	setl   %cl
40b318:	83 f8 fc             	cmp    $0xfffffffc,%eax
40b31b:	7c 2a                	jl     0x40b347
40b31d:	3b c7                	cmp    %edi,%eax
40b31f:	7d 26                	jge    0x40b347
40b321:	84 c9                	test   %cl,%cl
40b323:	74 0a                	je     0x40b32f
40b325:	8a 06                	mov    (%esi),%al
40b327:	46                   	inc    %esi
40b328:	84 c0                	test   %al,%al
40b32a:	75 f9                	jne    0x40b325
40b32c:	88 46 fe             	mov    %al,-0x2(%esi)
40b32f:	ff 75 28             	push   0x28(%ebp)
40b332:	8d 45 f0             	lea    -0x10(%ebp),%eax
40b335:	6a 01                	push   $0x1
40b337:	50                   	push   %eax
40b338:	57                   	push   %edi
40b339:	ff 75 10             	push   0x10(%ebp)
40b33c:	53                   	push   %ebx
40b33d:	e8 89 fe ff ff       	call   0x40b1cb
40b342:	83 c4 18             	add    $0x18,%esp
40b345:	eb 1c                	jmp    0x40b363
40b347:	ff 75 28             	push   0x28(%ebp)
40b34a:	8d 45 f0             	lea    -0x10(%ebp),%eax
40b34d:	6a 01                	push   $0x1
40b34f:	50                   	push   %eax
40b350:	ff 75 24             	push   0x24(%ebp)
40b353:	ff 75 20             	push   0x20(%ebp)
40b356:	57                   	push   %edi
40b357:	ff 75 10             	push   0x10(%ebp)
40b35a:	53                   	push   %ebx
40b35b:	e8 93 fc ff ff       	call   0x40aff3
40b360:	83 c4 20             	add    $0x20,%esp
40b363:	5f                   	pop    %edi
40b364:	5e                   	pop    %esi
40b365:	5b                   	pop    %ebx
40b366:	8b e5                	mov    %ebp,%esp
40b368:	5d                   	pop    %ebp
40b369:	c3                   	ret
40b36a:	8b ff                	mov    %edi,%edi
40b36c:	55                   	push   %ebp
40b36d:	8b ec                	mov    %esp,%ebp
40b36f:	83 ec 48             	sub    $0x48,%esp
40b372:	a1 0c 30 42 00       	mov    0x42300c,%eax
40b377:	33 c5                	xor    %ebp,%eax
40b379:	89 45 fc             	mov    %eax,-0x4(%ebp)
40b37c:	8b 55 14             	mov    0x14(%ebp),%edx
40b37f:	8b 4d 10             	mov    0x10(%ebp),%ecx
40b382:	53                   	push   %ebx
40b383:	8a 5d 0c             	mov    0xc(%ebp),%bl
40b386:	0f b6 c3             	movzbl %bl,%eax
40b389:	83 c0 04             	add    $0x4,%eax
40b38c:	3b d0                	cmp    %eax,%edx
40b38e:	73 15                	jae    0x40b3a5
40b390:	6a 0c                	push   $0xc
40b392:	c6 01 00             	movb   $0x0,(%ecx)
40b395:	58                   	pop    %eax
40b396:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40b399:	33 cd                	xor    %ebp,%ecx
40b39b:	5b                   	pop    %ebx
40b39c:	e8 b5 7b ff ff       	call   0x402f56
40b3a1:	8b e5                	mov    %ebp,%esp
40b3a3:	5d                   	pop    %ebp
40b3a4:	c3                   	ret
40b3a5:	84 db                	test   %bl,%bl
40b3a7:	74 08                	je     0x40b3b1
40b3a9:	c6 01 2d             	movb   $0x2d,(%ecx)
40b3ac:	41                   	inc    %ecx
40b3ad:	4a                   	dec    %edx
40b3ae:	c6 01 00             	movb   $0x0,(%ecx)
40b3b1:	b8 d8 bf 41 00       	mov    $0x41bfd8,%eax
40b3b6:	c7 45 dc e8 bf 41 00 	movl   $0x41bfe8,-0x24(%ebp)
40b3bd:	89 45 bc             	mov    %eax,-0x44(%ebp)
40b3c0:	33 db                	xor    %ebx,%ebx
40b3c2:	38 5d 18             	cmp    %bl,0x18(%ebp)
40b3c5:	89 45 c0             	mov    %eax,-0x40(%ebp)
40b3c8:	b8 dc bf 41 00       	mov    $0x41bfdc,%eax
40b3cd:	89 45 c4             	mov    %eax,-0x3c(%ebp)
40b3d0:	0f 95 c3             	setne  %bl
40b3d3:	89 45 c8             	mov    %eax,-0x38(%ebp)
40b3d6:	4b                   	dec    %ebx
40b3d7:	b8 e4 bf 41 00       	mov    $0x41bfe4,%eax
40b3dc:	c7 45 e4 f4 bf 41 00 	movl   $0x41bff4,-0x1c(%ebp)
40b3e3:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40b3e6:	83 e3 02             	and    $0x2,%ebx
40b3e9:	89 45 d8             	mov    %eax,-0x28(%ebp)
40b3ec:	89 45 e8             	mov    %eax,-0x18(%ebp)
40b3ef:	89 45 f8             	mov    %eax,-0x8(%ebp)
40b3f2:	8b 45 08             	mov    0x8(%ebp),%eax
40b3f5:	56                   	push   %esi
40b3f6:	be e0 bf 41 00       	mov    $0x41bfe0,%esi
40b3fb:	c7 45 ec 00 c0 41 00 	movl   $0x41c000,-0x14(%ebp)
40b402:	57                   	push   %edi
40b403:	8d 3c 85 fc ff ff ff 	lea    -0x4(,%eax,4),%edi
40b40a:	89 75 cc             	mov    %esi,-0x34(%ebp)
40b40d:	8d 04 1f             	lea    (%edi,%ebx,1),%eax
40b410:	89 75 d0             	mov    %esi,-0x30(%ebp)
40b413:	89 75 e0             	mov    %esi,-0x20(%ebp)
40b416:	89 75 f0             	mov    %esi,-0x10(%ebp)
40b419:	c7 45 f4 0c c0 41 00 	movl   $0x41c00c,-0xc(%ebp)
40b420:	8b 74 85 bc          	mov    -0x44(%ebp,%eax,4),%esi
40b424:	8d 46 01             	lea    0x1(%esi),%eax
40b427:	89 45 b8             	mov    %eax,-0x48(%ebp)
40b42a:	8a 06                	mov    (%esi),%al
40b42c:	46                   	inc    %esi
40b42d:	84 c0                	test   %al,%al
40b42f:	75 f9                	jne    0x40b42a
40b431:	2b 75 b8             	sub    -0x48(%ebp),%esi
40b434:	3b f2                	cmp    %edx,%esi
40b436:	1b c0                	sbb    %eax,%eax
40b438:	47                   	inc    %edi
40b439:	03 c7                	add    %edi,%eax
40b43b:	03 c3                	add    %ebx,%eax
40b43d:	ff 74 85 bc          	push   -0x44(%ebp,%eax,4)
40b441:	52                   	push   %edx
40b442:	51                   	push   %ecx
40b443:	e8 3f e3 ff ff       	call   0x409787
40b448:	83 c4 0c             	add    $0xc,%esp
40b44b:	5f                   	pop    %edi
40b44c:	5e                   	pop    %esi
40b44d:	85 c0                	test   %eax,%eax
40b44f:	0f 84 41 ff ff ff    	je     0x40b396
40b455:	33 c0                	xor    %eax,%eax
40b457:	50                   	push   %eax
40b458:	50                   	push   %eax
40b459:	50                   	push   %eax
40b45a:	50                   	push   %eax
40b45b:	50                   	push   %eax
40b45c:	e8 fa c7 ff ff       	call   0x407c5b
40b461:	cc                   	int3
40b462:	8b ff                	mov    %edi,%edi
40b464:	55                   	push   %ebp
40b465:	8b ec                	mov    %esp,%ebp
40b467:	8b 55 14             	mov    0x14(%ebp),%edx
40b46a:	85 d2                	test   %edx,%edx
40b46c:	74 26                	je     0x40b494
40b46e:	56                   	push   %esi
40b46f:	8b 75 10             	mov    0x10(%ebp),%esi
40b472:	8b ce                	mov    %esi,%ecx
40b474:	57                   	push   %edi
40b475:	8d 79 01             	lea    0x1(%ecx),%edi
40b478:	8a 01                	mov    (%ecx),%al
40b47a:	41                   	inc    %ecx
40b47b:	84 c0                	test   %al,%al
40b47d:	75 f9                	jne    0x40b478
40b47f:	2b cf                	sub    %edi,%ecx
40b481:	8d 41 01             	lea    0x1(%ecx),%eax
40b484:	50                   	push   %eax
40b485:	8d 04 16             	lea    (%esi,%edx,1),%eax
40b488:	56                   	push   %esi
40b489:	50                   	push   %eax
40b48a:	e8 11 8a ff ff       	call   0x403ea0
40b48f:	83 c4 0c             	add    $0xc,%esp
40b492:	5f                   	pop    %edi
40b493:	5e                   	pop    %esi
40b494:	5d                   	pop    %ebp
40b495:	c3                   	ret
40b496:	8b ff                	mov    %edi,%edi
40b498:	55                   	push   %ebp
40b499:	8b ec                	mov    %esp,%ebp
40b49b:	51                   	push   %ecx
40b49c:	51                   	push   %ecx
40b49d:	56                   	push   %esi
40b49e:	57                   	push   %edi
40b49f:	8b 7d 0c             	mov    0xc(%ebp),%edi
40b4a2:	85 ff                	test   %edi,%edi
40b4a4:	75 16                	jne    0x40b4bc
40b4a6:	e8 5c c8 ff ff       	call   0x407d07
40b4ab:	6a 16                	push   $0x16
40b4ad:	5e                   	pop    %esi
40b4ae:	89 30                	mov    %esi,(%eax)
40b4b0:	e8 79 c7 ff ff       	call   0x407c2e
40b4b5:	8b c6                	mov    %esi,%eax
40b4b7:	e9 1e 01 00 00       	jmp    0x40b5da
40b4bc:	53                   	push   %ebx
40b4bd:	8b 5d 10             	mov    0x10(%ebp),%ebx
40b4c0:	85 db                	test   %ebx,%ebx
40b4c2:	74 0c                	je     0x40b4d0
40b4c4:	83 7d 14 00          	cmpl   $0x0,0x14(%ebp)
40b4c8:	74 06                	je     0x40b4d0
40b4ca:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
40b4ce:	77 16                	ja     0x40b4e6
40b4d0:	e8 32 c8 ff ff       	call   0x407d07