41a46b:	8d 46 01             	lea    0x1(%esi),%eax
41a46e:	89 45 b8             	mov    %eax,-0x48(%ebp)
41a471:	8a 06                	mov    (%esi),%al
41a473:	46                   	inc    %esi
41a474:	84 c0                	test   %al,%al
41a476:	75 f9                	jne    0x41a471
41a478:	2b 75 b8             	sub    -0x48(%ebp),%esi
41a47b:	3b f2                	cmp    %edx,%esi
41a47d:	1b c0                	sbb    %eax,%eax
41a47f:	47                   	inc    %edi
41a480:	03 c7                	add    %edi,%eax
41a482:	03 c3                	add    %ebx,%eax
41a484:	ff 74 85 bc          	push   -0x44(%ebp,%eax,4)
41a488:	52                   	push   %edx
41a489:	51                   	push   %ecx
41a48a:	e8 d6 d6 ff ff       	call   0x417b65
41a48f:	83 c4 0c             	add    $0xc,%esp
41a492:	5f                   	pop    %edi
41a493:	5e                   	pop    %esi
41a494:	85 c0                	test   %eax,%eax
41a496:	0f 84 41 ff ff ff    	je     0x41a3dd
41a49c:	33 c0                	xor    %eax,%eax
41a49e:	50                   	push   %eax
41a49f:	50                   	push   %eax
41a4a0:	50                   	push   %eax
41a4a1:	50                   	push   %eax
41a4a2:	50                   	push   %eax
41a4a3:	e8 67 18 ff ff       	call   0x40bd0f
41a4a8:	cc                   	int3
41a4a9:	8b ff                	mov    %edi,%edi
41a4ab:	55                   	push   %ebp
41a4ac:	8b ec                	mov    %esp,%ebp
41a4ae:	8b 55 14             	mov    0x14(%ebp),%edx
41a4b1:	85 d2                	test   %edx,%edx
41a4b3:	74 26                	je     0x41a4db
41a4b5:	56                   	push   %esi
41a4b6:	8b 75 10             	mov    0x10(%ebp),%esi
41a4b9:	8b ce                	mov    %esi,%ecx
41a4bb:	57                   	push   %edi
41a4bc:	8d 79 01             	lea    0x1(%ecx),%edi
41a4bf:	8a 01                	mov    (%ecx),%al
41a4c1:	41                   	inc    %ecx
41a4c2:	84 c0                	test   %al,%al
41a4c4:	75 f9                	jne    0x41a4bf
41a4c6:	2b cf                	sub    %edi,%ecx
41a4c8:	8d 41 01             	lea    0x1(%ecx),%eax
41a4cb:	50                   	push   %eax
41a4cc:	8d 04 16             	lea    (%esi,%edx,1),%eax
41a4cf:	56                   	push   %esi
41a4d0:	50                   	push   %eax
41a4d1:	e8 4a d5 fe ff       	call   0x407a20
41a4d6:	83 c4 0c             	add    $0xc,%esp
41a4d9:	5f                   	pop    %edi
41a4da:	5e                   	pop    %esi
41a4db:	5d                   	pop    %ebp
41a4dc:	c3                   	ret
41a4dd:	8b ff                	mov    %edi,%edi
41a4df:	55                   	push   %ebp
41a4e0:	8b ec                	mov    %esp,%ebp
41a4e2:	51                   	push   %ecx
41a4e3:	51                   	push   %ecx
41a4e4:	56                   	push   %esi
41a4e5:	57                   	push   %edi
41a4e6:	8b 7d 0c             	mov    0xc(%ebp),%edi
41a4e9:	85 ff                	test   %edi,%edi
41a4eb:	75 16                	jne    0x41a503
41a4ed:	e8 79 a5 ff ff       	call   0x414a6b
41a4f2:	6a 16                	push   $0x16
41a4f4:	5e                   	pop    %esi
41a4f5:	89 30                	mov    %esi,(%eax)
41a4f7:	e8 e6 17 ff ff       	call   0x40bce2
41a4fc:	8b c6                	mov    %esi,%eax
41a4fe:	e9 1e 01 00 00       	jmp    0x41a621
41a503:	53                   	push   %ebx
41a504:	8b 5d 10             	mov    0x10(%ebp),%ebx
41a507:	85 db                	test   %ebx,%ebx
41a509:	74 0c                	je     0x41a517
41a50b:	83 7d 14 00          	cmpl   $0x0,0x14(%ebp)
41a50f:	74 06                	je     0x41a517
41a511:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
41a515:	77 16                	ja     0x41a52d
41a517:	e8 4f a5 ff ff       	call   0x414a6b
41a51c:	6a 16                	push   $0x16
41a51e:	5e                   	pop    %esi
41a51f:	89 30                	mov    %esi,(%eax)
41a521:	e8 bc 17 ff ff       	call   0x40bce2
41a526:	8b c6                	mov    %esi,%eax
41a528:	e9 f3 00 00 00       	jmp    0x41a620
41a52d:	8b 75 1c             	mov    0x1c(%ebp),%esi
41a530:	83 fe 41             	cmp    $0x41,%esi
41a533:	74 13                	je     0x41a548
41a535:	83 fe 45             	cmp    $0x45,%esi
41a538:	74 0e                	je     0x41a548
41a53a:	83 fe 46             	cmp    $0x46,%esi
41a53d:	74 09                	je     0x41a548
41a53f:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
41a543:	83 fe 47             	cmp    $0x47,%esi
41a546:	75 04                	jne    0x41a54c
41a548:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
41a54c:	8b 45 24             	mov    0x24(%ebp),%eax
41a54f:	83 e0 08             	and    $0x8,%eax
41a552:	83 c8 00             	or     $0x0,%eax
41a555:	75 32                	jne    0x41a589
41a557:	ff 75 08             	push   0x8(%ebp)
41a55a:	e8 b3 f6 ff ff       	call   0x419c12
41a55f:	89 45 f8             	mov    %eax,-0x8(%ebp)
41a562:	59                   	pop    %ecx
41a563:	85 c0                	test   %eax,%eax
41a565:	74 22                	je     0x41a589
41a567:	ff 75 fc             	push   -0x4(%ebp)
41a56a:	53                   	push   %ebx
41a56b:	57                   	push   %edi
41a56c:	ff 75 08             	push   0x8(%ebp)
41a56f:	e8 0a f7 ff ff       	call   0x419c7e
41a574:	59                   	pop    %ecx
41a575:	0f b6 c0             	movzbl %al,%eax
41a578:	50                   	push   %eax
41a579:	ff 75 f8             	push   -0x8(%ebp)
41a57c:	e8 30 fe ff ff       	call   0x41a3b1
41a581:	83 c4 14             	add    $0x14,%esp
41a584:	e9 97 00 00 00       	jmp    0x41a620
41a589:	8b 45 24             	mov    0x24(%ebp),%eax
41a58c:	83 e0 10             	and    $0x10,%eax
41a58f:	83 c8 00             	or     $0x0,%eax
41a592:	74 04                	je     0x41a598
41a594:	6a 03                	push   $0x3
41a596:	eb 02                	jmp    0x41a59a
41a598:	6a 02                	push   $0x2
41a59a:	58                   	pop    %eax
41a59b:	83 fe 61             	cmp    $0x61,%esi
41a59e:	7f 28                	jg     0x41a5c8
41a5a0:	74 0a                	je     0x41a5ac
41a5a2:	83 ee 41             	sub    $0x41,%esi
41a5a5:	74 05                	je     0x41a5ac
41a5a7:	83 ee 04             	sub    $0x4,%esi
41a5aa:	eb 1f                	jmp    0x41a5cb
41a5ac:	ff 75 2c             	push   0x2c(%ebp)
41a5af:	50                   	push   %eax
41a5b0:	ff 75 fc             	push   -0x4(%ebp)
41a5b3:	ff 75 20             	push   0x20(%ebp)
41a5b6:	ff 75 18             	push   0x18(%ebp)
41a5b9:	ff 75 14             	push   0x14(%ebp)
41a5bc:	53                   	push   %ebx
41a5bd:	57                   	push   %edi
41a5be:	ff 75 08             	push   0x8(%ebp)
41a5c1:	e8 d6 f6 ff ff       	call   0x419c9c
41a5c6:	eb 55                	jmp    0x41a61d
41a5c8:	83 ee 65             	sub    $0x65,%esi
41a5cb:	ff 75 2c             	push   0x2c(%ebp)
41a5ce:	74 36                	je     0x41a606
41a5d0:	83 ee 01             	sub    $0x1,%esi
41a5d3:	74 19                	je     0x41a5ee
41a5d5:	50                   	push   %eax
41a5d6:	ff 75 fc             	push   -0x4(%ebp)
41a5d9:	ff 75 20             	push   0x20(%ebp)
41a5dc:	ff 75 18             	push   0x18(%ebp)
41a5df:	ff 75 14             	push   0x14(%ebp)
41a5e2:	53                   	push   %ebx
41a5e3:	57                   	push   %edi
41a5e4:	ff 75 08             	push   0x8(%ebp)
41a5e7:	e8 fd fc ff ff       	call   0x41a2e9
41a5ec:	eb 2f                	jmp    0x41a61d
41a5ee:	ff 75 20             	push   0x20(%ebp)
41a5f1:	ff 75 18             	push   0x18(%ebp)
41a5f4:	ff 75 14             	push   0x14(%ebp)
41a5f7:	53                   	push   %ebx
41a5f8:	57                   	push   %edi
41a5f9:	ff 75 08             	push   0x8(%ebp)
41a5fc:	e8 84 fb ff ff       	call   0x41a185
41a601:	83 c4 1c             	add    $0x1c,%esp
41a604:	eb 1a                	jmp    0x41a620
41a606:	50                   	push   %eax
41a607:	ff 75 fc             	push   -0x4(%ebp)
41a60a:	ff 75 20             	push   0x20(%ebp)
41a60d:	ff 75 18             	push   0x18(%ebp)
41a610:	ff 75 14             	push   0x14(%ebp)
41a613:	53                   	push   %ebx
41a614:	57                   	push   %edi
41a615:	ff 75 08             	push   0x8(%ebp)
41a618:	e8 82 f9 ff ff       	call   0x419f9f
41a61d:	83 c4 24             	add    $0x24,%esp
41a620:	5b                   	pop    %ebx
41a621:	5f                   	pop    %edi
41a622:	5e                   	pop    %esi
41a623:	8b e5                	mov    %ebp,%esp
41a625:	5d                   	pop    %ebp
41a626:	c3                   	ret
41a627:	8b ff                	mov    %edi,%edi
41a629:	55                   	push   %ebp
41a62a:	8b ec                	mov    %esp,%ebp
41a62c:	8b 45 0c             	mov    0xc(%ebp),%eax
41a62f:	83 40 08 fe          	addl   $0xfffffffe,0x8(%eax)
41a633:	8b 55 0c             	mov    0xc(%ebp),%edx
41a636:	83 7a 08 00          	cmpl   $0x0,0x8(%edx)
41a63a:	7d 0f                	jge    0x41a64b
41a63c:	0f b7 45 08          	movzwl 0x8(%ebp),%eax
41a640:	52                   	push   %edx
41a641:	50                   	push   %eax
41a642:	e8 97 a1 00 00       	call   0x4247de
41a647:	59                   	pop    %ecx
41a648:	59                   	pop    %ecx
41a649:	5d                   	pop    %ebp
41a64a:	c3                   	ret
41a64b:	8b 0a                	mov    (%edx),%ecx
41a64d:	66 8b 45 08          	mov    0x8(%ebp),%ax
41a651:	66 89 01             	mov    %ax,(%ecx)
41a654:	83 02 02             	addl   $0x2,(%edx)
41a657:	5d                   	pop    %ebp
41a658:	c3                   	ret
41a659:	8b ff                	mov    %edi,%edi
41a65b:	55                   	push   %ebp
41a65c:	8b ec                	mov    %esp,%ebp
41a65e:	83 ec 10             	sub    $0x10,%esp
41a661:	a1 28 ba 43 00       	mov    0x43ba28,%eax
41a666:	33 c5                	xor    %ebp,%eax
41a668:	89 45 fc             	mov    %eax,-0x4(%ebp)
41a66b:	57                   	push   %edi
41a66c:	8b 7d 0c             	mov    0xc(%ebp),%edi
41a66f:	8b 47 0c             	mov    0xc(%edi),%eax
41a672:	c1 e8 0c             	shr    $0xc,%eax
41a675:	a8 01                	test   $0x1,%al
41a677:	74 10                	je     0x41a689
41a679:	57                   	push   %edi
41a67a:	ff 75 08             	push   0x8(%ebp)
41a67d:	e8 a5 ff ff ff       	call   0x41a627
41a682:	59                   	pop    %ecx
41a683:	59                   	pop    %ecx
41a684:	e9 e7 00 00 00       	jmp    0x41a770
41a689:	53                   	push   %ebx
41a68a:	56                   	push   %esi
41a68b:	57                   	push   %edi
41a68c:	e8 ee 00 00 00       	call   0x41a77f
41a691:	bb a8 bb 43 00       	mov    $0x43bba8,%ebx
41a696:	59                   	pop    %ecx
41a697:	83 f8 ff             	cmp    $0xffffffff,%eax
41a69a:	74 2e                	je     0x41a6ca
41a69c:	57                   	push   %edi
41a69d:	e8 dd 00 00 00       	call   0x41a77f
41a6a2:	59                   	pop    %ecx
41a6a3:	83 f8 fe             	cmp    $0xfffffffe,%eax
41a6a6:	74 22                	je     0x41a6ca
41a6a8:	57                   	push   %edi
41a6a9:	e8 d1 00 00 00       	call   0x41a77f
41a6ae:	8b f0                	mov    %eax,%esi
41a6b0:	57                   	push   %edi
41a6b1:	c1 fe 06             	sar    $0x6,%esi
41a6b4:	e8 c6 00 00 00       	call   0x41a77f
41a6b9:	83 e0 3f             	and    $0x3f,%eax
41a6bc:	6b c0 30             	imul   $0x30,%eax,%eax
41a6bf:	59                   	pop    %ecx
41a6c0:	59                   	pop    %ecx
41a6c1:	03 04 b5 c0 9d 83 02 	add    0x2839dc0(,%esi,4),%eax
41a6c8:	eb 02                	jmp    0x41a6cc
41a6ca:	8b c3                	mov    %ebx,%eax
41a6cc:	8a 40 29             	mov    0x29(%eax),%al
41a6cf:	3c 02                	cmp    $0x2,%al
41a6d1:	0f 84 8c 00 00 00    	je     0x41a763
41a6d7:	3c 01                	cmp    $0x1,%al
41a6d9:	0f 84 84 00 00 00    	je     0x41a763
41a6df:	57                   	push   %edi
41a6e0:	e8 9a 00 00 00       	call   0x41a77f
41a6e5:	59                   	pop    %ecx
41a6e6:	83 f8 ff             	cmp    $0xffffffff,%eax
41a6e9:	74 2c                	je     0x41a717
41a6eb:	57                   	push   %edi
41a6ec:	e8 8e 00 00 00       	call   0x41a77f
41a6f1:	59                   	pop    %ecx
41a6f2:	83 f8 fe             	cmp    $0xfffffffe,%eax
41a6f5:	74 20                	je     0x41a717
41a6f7:	57                   	push   %edi
41a6f8:	e8 82 00 00 00       	call   0x41a77f
41a6fd:	8b f0                	mov    %eax,%esi
41a6ff:	57                   	push   %edi
41a700:	c1 fe 06             	sar    $0x6,%esi
41a703:	e8 77 00 00 00       	call   0x41a77f
41a708:	83 e0 3f             	and    $0x3f,%eax
41a70b:	6b d8 30             	imul   $0x30,%eax,%ebx
41a70e:	59                   	pop    %ecx
41a70f:	59                   	pop    %ecx
41a710:	03 1c b5 c0 9d 83 02 	add    0x2839dc0(,%esi,4),%ebx
41a717:	f6 43 28 80          	testb  $0x80,0x28(%ebx)
41a71b:	74 46                	je     0x41a763
41a71d:	ff 75 08             	push   0x8(%ebp)
41a720:	8d 45 f4             	lea    -0xc(%ebp),%eax
41a723:	6a 05                	push   $0x5
41a725:	50                   	push   %eax
41a726:	8d 45 f0             	lea    -0x10(%ebp),%eax
41a729:	50                   	push   %eax
41a72a:	e8 6c f4 ff ff       	call   0x419b9b
41a72f:	83 c4 10             	add    $0x10,%esp
41a732:	85 c0                	test   %eax,%eax
41a734:	75 26                	jne    0x41a75c
41a736:	33 f6                	xor    %esi,%esi
41a738:	39 75 f0             	cmp    %esi,-0x10(%ebp)
41a73b:	7e 19                	jle    0x41a756
41a73d:	0f be 44 35 f4       	movsbl -0xc(%ebp,%esi,1),%eax
41a742:	57                   	push   %edi
41a743:	50                   	push   %eax
41a744:	e8 5c 00 00 00       	call   0x41a7a5
41a749:	59                   	pop    %ecx
41a74a:	59                   	pop    %ecx
41a74b:	83 f8 ff             	cmp    $0xffffffff,%eax
41a74e:	74 0c                	je     0x41a75c
41a750:	46                   	inc    %esi
41a751:	3b 75 f0             	cmp    -0x10(%ebp),%esi
41a754:	7c e7                	jl     0x41a73d
41a756:	66 8b 45 08          	mov    0x8(%ebp),%ax
41a75a:	eb 12                	jmp    0x41a76e
41a75c:	b8 ff ff 00 00       	mov    $0xffff,%eax
41a761:	eb 0b                	jmp    0x41a76e
41a763:	57                   	push   %edi
41a764:	ff 75 08             	push   0x8(%ebp)
41a767:	e8 bb fe ff ff       	call   0x41a627
41a76c:	59                   	pop    %ecx
41a76d:	59                   	pop    %ecx
41a76e:	5e                   	pop    %esi
41a76f:	5b                   	pop    %ebx
41a770:	8b 4d fc             	mov    -0x4(%ebp),%ecx
41a773:	33 cd                	xor    %ebp,%ecx
41a775:	5f                   	pop    %edi
41a776:	e8 e5 c8 fe ff       	call   0x407060
41a77b:	8b e5                	mov    %ebp,%esp
41a77d:	5d                   	pop    %ebp
41a77e:	c3                   	ret
41a77f:	8b ff                	mov    %edi,%edi
41a781:	55                   	push   %ebp
41a782:	8b ec                	mov    %esp,%ebp
41a784:	8b 45 08             	mov    0x8(%ebp),%eax
41a787:	85 c0                	test   %eax,%eax
41a789:	75 15                	jne    0x41a7a0
41a78b:	e8 db a2 ff ff       	call   0x414a6b
41a790:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
41a796:	e8 47 15 ff ff       	call   0x40bce2
41a79b:	83 c8 ff             	or     $0xffffffff,%eax
41a79e:	5d                   	pop    %ebp
41a79f:	c3                   	ret
41a7a0:	8b 40 10             	mov    0x10(%eax),%eax
41a7a3:	5d                   	pop    %ebp
41a7a4:	c3                   	ret
41a7a5:	8b ff                	mov    %edi,%edi
41a7a7:	55                   	push   %ebp
41a7a8:	8b ec                	mov    %esp,%ebp
41a7aa:	8b 55 0c             	mov    0xc(%ebp),%edx
41a7ad:	83 6a 08 01          	subl   $0x1,0x8(%edx)
41a7b1:	79 0d                	jns    0x41a7c0
41a7b3:	52                   	push   %edx
41a7b4:	ff 75 08             	push   0x8(%ebp)
41a7b7:	e8 17 a0 00 00       	call   0x4247d3
41a7bc:	59                   	pop    %ecx
41a7bd:	59                   	pop    %ecx