41a518:	8b ec                	mov    %esp,%ebp
41a51a:	83 ec 10             	sub    $0x10,%esp
41a51d:	6a 00                	push   $0x0
41a51f:	8d 4d f0             	lea    -0x10(%ebp),%ecx
41a522:	e8 57 17 ff ff       	call   0x40bc7e
41a527:	8b 45 f4             	mov    -0xc(%ebp),%eax
41a52a:	ba e9 fd 00 00       	mov    $0xfde9,%edx
41a52f:	39 50 08             	cmp    %edx,0x8(%eax)
41a532:	74 0c                	je     0x41a540
41a534:	e8 6c 8f ff ff       	call   0x4134a5
41a539:	33 d2                	xor    %edx,%edx
41a53b:	85 c0                	test   %eax,%eax
41a53d:	75 01                	jne    0x41a540
41a53f:	42                   	inc    %edx
41a540:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
41a544:	74 0a                	je     0x41a550
41a546:	8b 4d f0             	mov    -0x10(%ebp),%ecx
41a549:	83 a1 50 03 00 00 fd 	andl   $0xfffffffd,0x350(%ecx)
41a550:	8b c2                	mov    %edx,%eax
41a552:	c9                   	leave
41a553:	c3                   	ret
41a554:	8b ff                	mov    %edi,%edi
41a556:	55                   	push   %ebp
41a557:	8b ec                	mov    %esp,%ebp
41a559:	83 ec 10             	sub    $0x10,%esp
41a55c:	ff 75 0c             	push   0xc(%ebp)
41a55f:	8d 4d f0             	lea    -0x10(%ebp),%ecx
41a562:	e8 17 17 ff ff       	call   0x40bc7e
41a567:	8b 45 f4             	mov    -0xc(%ebp),%eax
41a56a:	68 00 80 00 00       	push   $0x8000
41a56f:	ff 75 08             	push   0x8(%ebp)
41a572:	ff 30                	push   (%eax)
41a574:	e8 e9 25 ff ff       	call   0x40cb62
41a579:	83 c4 0c             	add    $0xc,%esp
41a57c:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
41a580:	74 0a                	je     0x41a58c
41a582:	8b 4d f0             	mov    -0x10(%ebp),%ecx
41a585:	83 a1 50 03 00 00 fd 	andl   $0xfffffffd,0x350(%ecx)
41a58c:	c9                   	leave
41a58d:	c3                   	ret
41a58e:	8b ff                	mov    %edi,%edi
41a590:	55                   	push   %ebp
41a591:	8b ec                	mov    %esp,%ebp
41a593:	53                   	push   %ebx
41a594:	56                   	push   %esi
41a595:	57                   	push   %edi
41a596:	8b 7d 08             	mov    0x8(%ebp),%edi
41a599:	85 ff                	test   %edi,%edi
41a59b:	74 13                	je     0x41a5b0
41a59d:	8b 4d 0c             	mov    0xc(%ebp),%ecx
41a5a0:	85 c9                	test   %ecx,%ecx
41a5a2:	74 0c                	je     0x41a5b0
41a5a4:	8b 5d 10             	mov    0x10(%ebp),%ebx
41a5a7:	85 db                	test   %ebx,%ebx
41a5a9:	75 1b                	jne    0x41a5c6
41a5ab:	33 c0                	xor    %eax,%eax
41a5ad:	66 89 07             	mov    %ax,(%edi)
41a5b0:	e8 46 48 ff ff       	call   0x40edfb
41a5b5:	6a 16                	push   $0x16
41a5b7:	5e                   	pop    %esi
41a5b8:	89 30                	mov    %esi,(%eax)
41a5ba:	e8 c2 2a ff ff       	call   0x40d081
41a5bf:	5f                   	pop    %edi
41a5c0:	8b c6                	mov    %esi,%eax
41a5c2:	5e                   	pop    %esi
41a5c3:	5b                   	pop    %ebx
41a5c4:	5d                   	pop    %ebp
41a5c5:	c3                   	ret
41a5c6:	8b d7                	mov    %edi,%edx
41a5c8:	33 f6                	xor    %esi,%esi
41a5ca:	66 39 32             	cmp    %si,(%edx)
41a5cd:	74 08                	je     0x41a5d7
41a5cf:	83 c2 02             	add    $0x2,%edx
41a5d2:	83 e9 01             	sub    $0x1,%ecx
41a5d5:	75 f3                	jne    0x41a5ca
41a5d7:	85 c9                	test   %ecx,%ecx
41a5d9:	74 d0                	je     0x41a5ab
41a5db:	2b da                	sub    %edx,%ebx
41a5dd:	0f b7 04 13          	movzwl (%ebx,%edx,1),%eax
41a5e1:	66 89 02             	mov    %ax,(%edx)
41a5e4:	8d 52 02             	lea    0x2(%edx),%edx
41a5e7:	66 85 c0             	test   %ax,%ax
41a5ea:	74 05                	je     0x41a5f1
41a5ec:	83 e9 01             	sub    $0x1,%ecx
41a5ef:	75 ec                	jne    0x41a5dd
41a5f1:	85 c9                	test   %ecx,%ecx
41a5f3:	75 ca                	jne    0x41a5bf
41a5f5:	33 c0                	xor    %eax,%eax
41a5f7:	66 89 07             	mov    %ax,(%edi)
41a5fa:	e8 fc 47 ff ff       	call   0x40edfb
41a5ff:	6a 22                	push   $0x22
41a601:	eb b4                	jmp    0x41a5b7
41a603:	8b ff                	mov    %edi,%edi
41a605:	55                   	push   %ebp
41a606:	8b ec                	mov    %esp,%ebp
41a608:	8b 4d 08             	mov    0x8(%ebp),%ecx
41a60b:	53                   	push   %ebx
41a60c:	8b 5d 10             	mov    0x10(%ebp),%ebx
41a60f:	56                   	push   %esi
41a610:	8b 75 14             	mov    0x14(%ebp),%esi
41a613:	85 f6                	test   %esi,%esi
41a615:	75 1e                	jne    0x41a635
41a617:	85 c9                	test   %ecx,%ecx
41a619:	75 1e                	jne    0x41a639
41a61b:	39 75 0c             	cmp    %esi,0xc(%ebp)
41a61e:	74 29                	je     0x41a649
41a620:	e8 d6 47 ff ff       	call   0x40edfb
41a625:	6a 16                	push   $0x16
41a627:	5e                   	pop    %esi
41a628:	89 30                	mov    %esi,(%eax)
41a62a:	e8 52 2a ff ff       	call   0x40d081
41a62f:	8b c6                	mov    %esi,%eax
41a631:	5e                   	pop    %esi
41a632:	5b                   	pop    %ebx
41a633:	5d                   	pop    %ebp
41a634:	c3                   	ret
41a635:	85 c9                	test   %ecx,%ecx
41a637:	74 e7                	je     0x41a620
41a639:	8b 45 0c             	mov    0xc(%ebp),%eax
41a63c:	85 c0                	test   %eax,%eax
41a63e:	74 e0                	je     0x41a620
41a640:	85 f6                	test   %esi,%esi
41a642:	75 09                	jne    0x41a64d
41a644:	33 c0                	xor    %eax,%eax
41a646:	66 89 01             	mov    %ax,(%ecx)
41a649:	33 c0                	xor    %eax,%eax
41a64b:	eb e4                	jmp    0x41a631
41a64d:	85 db                	test   %ebx,%ebx
41a64f:	75 07                	jne    0x41a658
41a651:	33 c0                	xor    %eax,%eax
41a653:	66 89 01             	mov    %ax,(%ecx)
41a656:	eb c8                	jmp    0x41a620
41a658:	2b d9                	sub    %ecx,%ebx
41a65a:	8b d1                	mov    %ecx,%edx
41a65c:	57                   	push   %edi
41a65d:	8b f8                	mov    %eax,%edi
41a65f:	83 fe ff             	cmp    $0xffffffff,%esi
41a662:	75 16                	jne    0x41a67a
41a664:	0f b7 04 13          	movzwl (%ebx,%edx,1),%eax
41a668:	66 89 02             	mov    %ax,(%edx)
41a66b:	8d 52 02             	lea    0x2(%edx),%edx
41a66e:	66 85 c0             	test   %ax,%ax
41a671:	74 2e                	je     0x41a6a1
41a673:	83 ef 01             	sub    $0x1,%edi
41a676:	75 ec                	jne    0x41a664
41a678:	eb 27                	jmp    0x41a6a1
41a67a:	8b ce                	mov    %esi,%ecx
41a67c:	0f b7 04 13          	movzwl (%ebx,%edx,1),%eax
41a680:	66 89 02             	mov    %ax,(%edx)
41a683:	8d 52 02             	lea    0x2(%edx),%edx
41a686:	66 85 c0             	test   %ax,%ax
41a689:	74 0a                	je     0x41a695
41a68b:	83 ef 01             	sub    $0x1,%edi
41a68e:	74 05                	je     0x41a695
41a690:	83 e9 01             	sub    $0x1,%ecx
41a693:	75 e7                	jne    0x41a67c
41a695:	85 c9                	test   %ecx,%ecx
41a697:	8b 4d 08             	mov    0x8(%ebp),%ecx
41a69a:	75 05                	jne    0x41a6a1
41a69c:	33 c0                	xor    %eax,%eax
41a69e:	66 89 02             	mov    %ax,(%edx)
41a6a1:	85 ff                	test   %edi,%edi
41a6a3:	5f                   	pop    %edi
41a6a4:	75 a3                	jne    0x41a649
41a6a6:	83 fe ff             	cmp    $0xffffffff,%esi
41a6a9:	75 12                	jne    0x41a6bd
41a6ab:	8b 45 0c             	mov    0xc(%ebp),%eax
41a6ae:	33 d2                	xor    %edx,%edx
41a6b0:	6a 50                	push   $0x50
41a6b2:	66 89 54 41 fe       	mov    %dx,-0x2(%ecx,%eax,2)
41a6b7:	58                   	pop    %eax
41a6b8:	e9 74 ff ff ff       	jmp    0x41a631
41a6bd:	33 c0                	xor    %eax,%eax
41a6bf:	66 89 01             	mov    %ax,(%ecx)
41a6c2:	e8 34 47 ff ff       	call   0x40edfb
41a6c7:	6a 22                	push   $0x22
41a6c9:	e9 59 ff ff ff       	jmp    0x41a627
41a6ce:	8b ff                	mov    %edi,%edi
41a6d0:	55                   	push   %ebp
41a6d1:	8b ec                	mov    %esp,%ebp
41a6d3:	5d                   	pop    %ebp
41a6d4:	e9 2a ff ff ff       	jmp    0x41a603
41a6d9:	8b ff                	mov    %edi,%edi
41a6db:	55                   	push   %ebp
41a6dc:	8b ec                	mov    %esp,%ebp
41a6de:	8b 45 0c             	mov    0xc(%ebp),%eax
41a6e1:	3b 45 08             	cmp    0x8(%ebp),%eax
41a6e4:	76 05                	jbe    0x41a6eb
41a6e6:	83 c8 ff             	or     $0xffffffff,%eax
41a6e9:	5d                   	pop    %ebp
41a6ea:	c3                   	ret
41a6eb:	1b c0                	sbb    %eax,%eax
41a6ed:	f7 d8                	neg    %eax
41a6ef:	5d                   	pop    %ebp
41a6f0:	c3                   	ret
41a6f1:	8b ff                	mov    %edi,%edi
41a6f3:	55                   	push   %ebp
41a6f4:	8b ec                	mov    %esp,%ebp
41a6f6:	83 ec 34             	sub    $0x34,%esp
41a6f9:	a1 14 30 43 00       	mov    0x433014,%eax
41a6fe:	33 c5                	xor    %ebp,%eax
41a700:	89 45 fc             	mov    %eax,-0x4(%ebp)
41a703:	8b 45 0c             	mov    0xc(%ebp),%eax
41a706:	89 45 e0             	mov    %eax,-0x20(%ebp)
41a709:	56                   	push   %esi
41a70a:	8b 75 08             	mov    0x8(%ebp),%esi
41a70d:	89 75 ec             	mov    %esi,-0x14(%ebp)
41a710:	85 c0                	test   %eax,%eax
41a712:	75 14                	jne    0x41a728
41a714:	e8 e2 46 ff ff       	call   0x40edfb
41a719:	6a 16                	push   $0x16
41a71b:	5e                   	pop    %esi
41a71c:	89 30                	mov    %esi,(%eax)
41a71e:	e8 5e 29 ff ff       	call   0x40d081
41a723:	e9 d7 01 00 00       	jmp    0x41a8ff
41a728:	53                   	push   %ebx
41a729:	57                   	push   %edi
41a72a:	33 ff                	xor    %edi,%edi
41a72c:	89 38                	mov    %edi,(%eax)
41a72e:	8b df                	mov    %edi,%ebx
41a730:	8b 06                	mov    (%esi),%eax
41a732:	8b cf                	mov    %edi,%ecx
41a734:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
41a737:	89 4d d8             	mov    %ecx,-0x28(%ebp)
41a73a:	89 7d dc             	mov    %edi,-0x24(%ebp)
41a73d:	85 c0                	test   %eax,%eax
41a73f:	74 6c                	je     0x41a7ad
41a741:	6a 2a                	push   $0x2a
41a743:	59                   	pop    %ecx
41a744:	66 89 4d f4          	mov    %cx,-0xc(%ebp)
41a748:	6a 3f                	push   $0x3f
41a74a:	59                   	pop    %ecx
41a74b:	66 89 4d f6          	mov    %cx,-0xa(%ebp)
41a74f:	33 c9                	xor    %ecx,%ecx
41a751:	66 89 4d f8          	mov    %cx,-0x8(%ebp)
41a755:	8d 4d f4             	lea    -0xc(%ebp),%ecx
41a758:	51                   	push   %ecx
41a759:	50                   	push   %eax
41a75a:	e8 a0 1d 00 00       	call   0x41c4ff
41a75f:	59                   	pop    %ecx
41a760:	59                   	pop    %ecx
41a761:	8b 0e                	mov    (%esi),%ecx
41a763:	85 c0                	test   %eax,%eax
41a765:	75 16                	jne    0x41a77d
41a767:	8d 45 d4             	lea    -0x2c(%ebp),%eax
41a76a:	50                   	push   %eax
41a76b:	57                   	push   %edi
41a76c:	57                   	push   %edi
41a76d:	51                   	push   %ecx
41a76e:	e8 a6 01 00 00       	call   0x41a919
41a773:	8b f0                	mov    %eax,%esi
41a775:	83 c4 10             	add    $0x10,%esp
41a778:	89 75 f0             	mov    %esi,-0x10(%ebp)
41a77b:	eb 13                	jmp    0x41a790
41a77d:	8d 55 d4             	lea    -0x2c(%ebp),%edx
41a780:	52                   	push   %edx
41a781:	50                   	push   %eax
41a782:	51                   	push   %ecx
41a783:	e8 45 02 00 00       	call   0x41a9cd
41a788:	83 c4 0c             	add    $0xc,%esp
41a78b:	89 45 f0             	mov    %eax,-0x10(%ebp)
41a78e:	8b f0                	mov    %eax,%esi
41a790:	85 f6                	test   %esi,%esi
41a792:	0f 85 8f 00 00 00    	jne    0x41a827
41a798:	8b 75 ec             	mov    -0x14(%ebp),%esi
41a79b:	83 c6 04             	add    $0x4,%esi
41a79e:	89 75 ec             	mov    %esi,-0x14(%ebp)
41a7a1:	8b 06                	mov    (%esi),%eax
41a7a3:	85 c0                	test   %eax,%eax
41a7a5:	75 9a                	jne    0x41a741
41a7a7:	8b 5d d4             	mov    -0x2c(%ebp),%ebx
41a7aa:	8b 4d d8             	mov    -0x28(%ebp),%ecx
41a7ad:	8b c1                	mov    %ecx,%eax
41a7af:	89 7d f0             	mov    %edi,-0x10(%ebp)
41a7b2:	2b c3                	sub    %ebx,%eax
41a7b4:	8b f3                	mov    %ebx,%esi
41a7b6:	8b d0                	mov    %eax,%edx
41a7b8:	89 75 ec             	mov    %esi,-0x14(%ebp)
41a7bb:	c1 fa 02             	sar    $0x2,%edx
41a7be:	83 c0 03             	add    $0x3,%eax
41a7c1:	42                   	inc    %edx
41a7c2:	c1 e8 02             	shr    $0x2,%eax
41a7c5:	3b ce                	cmp    %esi,%ecx
41a7c7:	89 55 e4             	mov    %edx,-0x1c(%ebp)
41a7ca:	1b f6                	sbb    %esi,%esi
41a7cc:	f7 d6                	not    %esi
41a7ce:	23 f0                	and    %eax,%esi
41a7d0:	74 36                	je     0x41a808
41a7d2:	8b c3                	mov    %ebx,%eax
41a7d4:	8b d7                	mov    %edi,%edx
41a7d6:	8b 08                	mov    (%eax),%ecx
41a7d8:	8d 41 02             	lea    0x2(%ecx),%eax
41a7db:	89 45 e8             	mov    %eax,-0x18(%ebp)
41a7de:	66 8b 01             	mov    (%ecx),%ax
41a7e1:	83 c1 02             	add    $0x2,%ecx
41a7e4:	66 3b c7             	cmp    %di,%ax
41a7e7:	75 f5                	jne    0x41a7de
41a7e9:	2b 4d e8             	sub    -0x18(%ebp),%ecx
41a7ec:	8b 45 f0             	mov    -0x10(%ebp),%eax
41a7ef:	40                   	inc    %eax
41a7f0:	d1 f9                	sar    $1,%ecx
41a7f2:	03 c1                	add    %ecx,%eax
41a7f4:	89 45 f0             	mov    %eax,-0x10(%ebp)
41a7f7:	8b 45 ec             	mov    -0x14(%ebp),%eax
41a7fa:	83 c0 04             	add    $0x4,%eax
41a7fd:	42                   	inc    %edx
41a7fe:	89 45 ec             	mov    %eax,-0x14(%ebp)
41a801:	3b d6                	cmp    %esi,%edx
41a803:	75 d1                	jne    0x41a7d6
41a805:	8b 55 e4             	mov    -0x1c(%ebp),%edx
41a808:	6a 02                	push   $0x2
41a80a:	ff 75 f0             	push   -0x10(%ebp)
41a80d:	52                   	push   %edx
41a80e:	e8 80 57 ff ff       	call   0x40ff93
41a813:	8b f0                	mov    %eax,%esi
41a815:	83 c4 0c             	add    $0xc,%esp
41a818:	85 f6                	test   %esi,%esi
41a81a:	75 13                	jne    0x41a82f
41a81c:	83 ce ff             	or     $0xffffffff,%esi
41a81f:	89 75 f0             	mov    %esi,-0x10(%ebp)
41a822:	e9 92 00 00 00       	jmp    0x41a8b9
41a827:	8b 5d d4             	mov    -0x2c(%ebp),%ebx
41a82a:	e9 91 00 00 00       	jmp    0x41a8c0
41a82f:	8b 45 e4             	mov    -0x1c(%ebp),%eax
41a832:	89 5d ec             	mov    %ebx,-0x14(%ebp)
41a835:	8d 04 86             	lea    (%esi,%eax,4),%eax
41a838:	8b d0                	mov    %eax,%edx
41a83a:	89 45 cc             	mov    %eax,-0x34(%ebp)
41a83d:	8b c3                	mov    %ebx,%eax
41a83f:	89 55 e4             	mov    %edx,-0x1c(%ebp)
41a842:	3b 45 d8             	cmp    -0x28(%ebp),%eax
41a845:	74 68                	je     0x41a8af
41a847:	8b ce                	mov    %esi,%ecx
41a849:	2b cb                	sub    %ebx,%ecx
41a84b:	89 4d f4             	mov    %ecx,-0xc(%ebp)
41a84e:	8b 00                	mov    (%eax),%eax
41a850:	8b c8                	mov    %eax,%ecx
41a852:	89 45 d0             	mov    %eax,-0x30(%ebp)
41a855:	8d 41 02             	lea    0x2(%ecx),%eax
41a858:	89 45 e8             	mov    %eax,-0x18(%ebp)
41a85b:	66 8b 01             	mov    (%ecx),%ax
41a85e:	83 c1 02             	add    $0x2,%ecx
41a861:	66 3b c7             	cmp    %di,%ax
41a864:	75 f5                	jne    0x41a85b
41a866:	2b 4d e8             	sub    -0x18(%ebp),%ecx
41a869:	d1 f9                	sar    $1,%ecx
41a86b:	8d 41 01             	lea    0x1(%ecx),%eax
41a86e:	8b ca                	mov    %edx,%ecx
41a870:	2b 4d cc             	sub    -0x34(%ebp),%ecx
41a873:	50                   	push   %eax