41e562:	8b 47 04             	mov    0x4(%edi),%eax
41e565:	51                   	push   %ecx
41e566:	89 48 14             	mov    %ecx,0x14(%eax)
41e569:	8b 47 04             	mov    0x4(%edi),%eax
41e56c:	ff 70 0c             	push   0xc(%eax)
41e56f:	ff 15 68 71 4a 00    	call   *0x4a7168
41e575:	8b 4f 04             	mov    0x4(%edi),%ecx
41e578:	89 41 18             	mov    %eax,0x18(%ecx)
41e57b:	8b 0d 34 58 4a 00    	mov    0x4a5834,%ecx
41e581:	85 c9                	test   %ecx,%ecx
41e583:	74 17                	je     0x41e59c
41e585:	8b 4f 04             	mov    0x4(%edi),%ecx
41e588:	8b 49 0c             	mov    0xc(%ecx),%ecx
41e58b:	e8 f9 ef 00 00       	call   0x42d589
41e590:	8b 4f 04             	mov    0x4(%edi),%ecx
41e593:	89 41 24             	mov    %eax,0x24(%ecx)
41e596:	8b 0d 34 58 4a 00    	mov    0x4a5834,%ecx
41e59c:	83 25 60 58 4a 00 00 	andl   $0x0,0x4a5860
41e5a3:	8b 57 04             	mov    0x4(%edi),%edx
41e5a6:	8b 42 24             	mov    0x24(%edx),%eax
41e5a9:	89 44 24 10          	mov    %eax,0x10(%esp)
41e5ad:	85 c0                	test   %eax,%eax
41e5af:	74 58                	je     0x41e609
41e5b1:	85 c9                	test   %ecx,%ecx
41e5b3:	74 2d                	je     0x41e5e2
41e5b5:	6a 00                	push   $0x0
41e5b7:	ff 70 04             	push   0x4(%eax)
41e5ba:	ff 72 0c             	push   0xc(%edx)
41e5bd:	ff 15 6c 71 4a 00    	call   *0x4a716c
41e5c3:	8b 4f 04             	mov    0x4(%edi),%ecx
41e5c6:	89 41 28             	mov    %eax,0x28(%ecx)
41e5c9:	8b 47 04             	mov    0x4(%edi),%eax
41e5cc:	ff 70 0c             	push   0xc(%eax)
41e5cf:	ff 15 70 71 4a 00    	call   *0x4a7170
41e5d5:	8b 47 04             	mov    0x4(%edi),%eax
41e5d8:	8b 40 24             	mov    0x24(%eax),%eax
41e5db:	a3 60 58 4a 00       	mov    %eax,0x4a5860
41e5e0:	eb 27                	jmp    0x41e609
41e5e2:	8b 00                	mov    (%eax),%eax
41e5e4:	6a 01                	push   $0x1
41e5e6:	8b 70 04             	mov    0x4(%eax),%esi
41e5e9:	8b ce                	mov    %esi,%ecx
41e5eb:	ff 15 2c 81 4a 00    	call   *0x4a812c
41e5f1:	8b 4c 24 14          	mov    0x14(%esp),%ecx
41e5f5:	ff d6                	call   *%esi
41e5f7:	8b 47 04             	mov    0x4(%edi),%eax
41e5fa:	8b 74 24 14          	mov    0x14(%esp),%esi
41e5fe:	83 60 24 00          	andl   $0x0,0x24(%eax)
41e602:	8b 47 04             	mov    0x4(%edi),%eax
41e605:	83 60 28 00          	andl   $0x0,0x28(%eax)
41e609:	8b 15 40 47 4a 00    	mov    0x4a4740,%edx
41e60f:	85 d2                	test   %edx,%edx
41e611:	74 15                	je     0x41e628
41e613:	8b cf                	mov    %edi,%ecx
41e615:	e8 02 fd ff ff       	call   0x41e31c
41e61a:	48                   	dec    %eax
41e61b:	8b ca                	mov    %edx,%ecx
41e61d:	f7 d8                	neg    %eax
41e61f:	1b c0                	sbb    %eax,%eax
41e621:	40                   	inc    %eax
41e622:	50                   	push   %eax
41e623:	e8 c7 6a 00 00       	call   0x4250ef
41e628:	85 f6                	test   %esi,%esi
41e62a:	74 09                	je     0x41e635
41e62c:	ff 77 30             	push   0x30(%edi)
41e62f:	ff 15 50 72 4a 00    	call   *0x4a7250
41e635:	8b cf                	mov    %edi,%ecx
41e637:	e8 e0 fc ff ff       	call   0x41e31c
41e63c:	83 f8 01             	cmp    $0x1,%eax
41e63f:	75 0e                	jne    0x41e64f
41e641:	50                   	push   %eax
41e642:	50                   	push   %eax
41e643:	68 5c 01 00 00       	push   $0x15c
41e648:	8b cf                	mov    %edi,%ecx
41e64a:	e8 66 0e 00 00       	call   0x41f4b5
41e64f:	8b cf                	mov    %edi,%ecx
41e651:	e8 c6 fc ff ff       	call   0x41e31c
41e656:	8d 7c 24 18          	lea    0x18(%esp),%edi
41e65a:	6a 13                	push   $0x13
41e65c:	8d 48 ff             	lea    -0x1(%eax),%ecx
41e65f:	f7 d9                	neg    %ecx
41e661:	1b c9                	sbb    %ecx,%ecx
41e663:	33 c0                	xor    %eax,%eax
41e665:	ab                   	stos   %eax,%es:(%edi)
41e666:	41                   	inc    %ecx
41e667:	ab                   	stos   %eax,%es:(%edi)
41e668:	ab                   	stos   %eax,%es:(%edi)
41e669:	ab                   	stos   %eax,%es:(%edi)
41e66a:	58                   	pop    %eax
41e66b:	66 89 44 24 18       	mov    %ax,0x18(%esp)
41e670:	89 4c 24 20          	mov    %ecx,0x20(%esp)
41e674:	ff 15 58 75 4a 00    	call   *0x4a7558
41e67a:	8d 4c 24 18          	lea    0x18(%esp),%ecx
41e67e:	51                   	push   %ecx
41e67f:	68 e4 f8 40 00       	push   $0x40f8e4
41e684:	8b 40 04             	mov    0x4(%eax),%eax
41e687:	68 c5 54 00 00       	push   $0x54c5
41e68c:	8b 80 c8 00 00 00    	mov    0xc8(%eax),%eax
41e692:	50                   	push   %eax
41e693:	8b 30                	mov    (%eax),%esi
41e695:	8b 4e 20             	mov    0x20(%esi),%ecx
41e698:	ff 15 2c 81 4a 00    	call   *0x4a812c
41e69e:	ff 56 20             	call   *0x20(%esi)
41e6a1:	ff 15 58 75 4a 00    	call   *0x4a7558
41e6a7:	be b8 f7 40 00       	mov    $0x40f7b8,%esi
41e6ac:	56                   	push   %esi
41e6ad:	8b 48 04             	mov    0x4(%eax),%ecx
41e6b0:	51                   	push   %ecx
41e6b1:	68 c6 54 00 00       	push   $0x54c6
41e6b6:	e8 fa 32 03 00       	call   0x4519b5
41e6bb:	ff 15 58 75 4a 00    	call   *0x4a7558
41e6c1:	56                   	push   %esi
41e6c2:	8b 48 04             	mov    0x4(%eax),%ecx
41e6c5:	51                   	push   %ecx
41e6c6:	68 c7 54 00 00       	push   $0x54c7
41e6cb:	e8 e5 32 03 00       	call   0x4519b5
41e6d0:	33 c0                	xor    %eax,%eax
41e6d2:	40                   	inc    %eax
41e6d3:	eb 1b                	jmp    0x41e6f0
41e6d5:	6a 01                	push   $0x1
41e6d7:	b9 e0 55 4a 00       	mov    $0x4a55e0,%ecx
41e6dc:	e8 98 f5 02 00       	call   0x44dc79
41e6e1:	85 f6                	test   %esi,%esi
41e6e3:	74 09                	je     0x41e6ee
41e6e5:	ff 77 30             	push   0x30(%edi)
41e6e8:	ff 15 50 72 4a 00    	call   *0x4a7250
41e6ee:	33 c0                	xor    %eax,%eax
41e6f0:	5f                   	pop    %edi
41e6f1:	5e                   	pop    %esi
41e6f2:	8b e5                	mov    %ebp,%esp
41e6f4:	5d                   	pop    %ebp
41e6f5:	c3                   	ret
41e6f6:	8b ff                	mov    %edi,%edi
41e6f8:	55                   	push   %ebp
41e6f9:	8b ec                	mov    %esp,%ebp
41e6fb:	83 e4 f8             	and    $0xfffffff8,%esp
41e6fe:	81 ec 84 04 00 00    	sub    $0x484,%esp
41e704:	a1 dc 38 4a 00       	mov    0x4a38dc,%eax
41e709:	33 c4                	xor    %esp,%eax
41e70b:	89 84 24 80 04 00 00 	mov    %eax,0x480(%esp)
41e712:	8b 45 0c             	mov    0xc(%ebp),%eax
41e715:	33 d2                	xor    %edx,%edx
41e717:	53                   	push   %ebx
41e718:	8b 5d 08             	mov    0x8(%ebp),%ebx
41e71b:	56                   	push   %esi
41e71c:	57                   	push   %edi
41e71d:	8b f9                	mov    %ecx,%edi
41e71f:	89 7c 24 2c          	mov    %edi,0x2c(%esp)
41e723:	85 c0                	test   %eax,%eax
41e725:	74 0e                	je     0x41e735
41e727:	83 f8 02             	cmp    $0x2,%eax
41e72a:	74 09                	je     0x41e735
41e72c:	89 54 24 10          	mov    %edx,0x10(%esp)
41e730:	83 f8 03             	cmp    $0x3,%eax
41e733:	75 08                	jne    0x41e73d
41e735:	c7 44 24 10 01 00 00 	movl   $0x1,0x10(%esp)
41e73c:	00
41e73d:	8b 47 30             	mov    0x30(%edi),%eax
41e740:	39 57 04             	cmp    %edx,0x4(%edi)
41e743:	0f 85 d4 00 00 00    	jne    0x41e81d
41e749:	85 c0                	test   %eax,%eax
41e74b:	0f 84 e7 00 00 00    	je     0x41e838
41e751:	50                   	push   %eax
41e752:	ff 15 54 72 4a 00    	call   *0x4a7254
41e758:	8b 7f 38             	mov    0x38(%edi),%edi
41e75b:	8b f0                	mov    %eax,%esi
41e75d:	83 64 24 1c 00       	andl   $0x0,0x1c(%esp)
41e762:	8b ce                	mov    %esi,%ecx
41e764:	89 74 24 28          	mov    %esi,0x28(%esp)
41e768:	89 7c 24 20          	mov    %edi,0x20(%esp)
41e76c:	89 7c 24 0c          	mov    %edi,0xc(%esp)
41e770:	89 74 24 14          	mov    %esi,0x14(%esp)
41e774:	e8 f9 f1 00 00       	call   0x42d972
41e779:	0f b7 c0             	movzwl %ax,%eax
41e77c:	03 06                	add    (%esi),%eax
41e77e:	83 7d 0c 03          	cmpl   $0x3,0xc(%ebp)
41e782:	8b c8                	mov    %eax,%ecx
41e784:	89 44 24 24          	mov    %eax,0x24(%esp)
41e788:	89 4c 24 18          	mov    %ecx,0x18(%esp)
41e78c:	0f 85 09 01 00 00    	jne    0x41e89b
41e792:	6a 28                	push   $0x28
41e794:	58                   	pop    %eax
41e795:	39 06                	cmp    %eax,(%esi)
41e797:	0f 83 bd 00 00 00    	jae    0x41e85a
41e79d:	33 c9                	xor    %ecx,%ecx
41e79f:	89 44 24 40          	mov    %eax,0x40(%esp)
41e7a3:	89 4c 24 54          	mov    %ecx,0x54(%esp)
41e7a7:	33 d2                	xor    %edx,%edx
41e7a9:	89 4c 24 58          	mov    %ecx,0x58(%esp)
41e7ad:	42                   	inc    %edx
41e7ae:	89 4c 24 5c          	mov    %ecx,0x5c(%esp)
41e7b2:	89 4c 24 60          	mov    %ecx,0x60(%esp)
41e7b6:	89 4c 24 64          	mov    %ecx,0x64(%esp)
41e7ba:	0f b7 46 04          	movzwl 0x4(%esi),%eax
41e7be:	89 44 24 44          	mov    %eax,0x44(%esp)
41e7c2:	0f b7 46 06          	movzwl 0x6(%esi),%eax
41e7c6:	89 44 24 48          	mov    %eax,0x48(%esp)
41e7ca:	66 8b 46 08          	mov    0x8(%esi),%ax
41e7ce:	66 89 44 24 4c       	mov    %ax,0x4c(%esp)
41e7d3:	66 8b 46 0a          	mov    0xa(%esi),%ax
41e7d7:	89 4c 24 50          	mov    %ecx,0x50(%esp)
41e7db:	8b ce                	mov    %esi,%ecx
41e7dd:	66 89 44 24 4e       	mov    %ax,0x4e(%esp)
41e7e2:	e8 4e f1 00 00       	call   0x42d935
41e7e7:	0f b7 c8             	movzwl %ax,%ecx
41e7ea:	2b ca                	sub    %edx,%ecx
41e7ec:	78 51                	js     0x41e83f
41e7ee:	6b d1 03             	imul   $0x3,%ecx,%edx
41e7f1:	83 c2 0d             	add    $0xd,%edx
41e7f4:	03 d6                	add    %esi,%edx
41e7f6:	8a 42 ff             	mov    -0x1(%edx),%al
41e7f9:	88 44 8c 68          	mov    %al,0x68(%esp,%ecx,4)
41e7fd:	8a 02                	mov    (%edx),%al
41e7ff:	8d 52 fd             	lea    -0x3(%edx),%edx
41e802:	88 44 8c 69          	mov    %al,0x69(%esp,%ecx,4)
41e806:	8a 42 04             	mov    0x4(%edx),%al
41e809:	88 44 8c 6a          	mov    %al,0x6a(%esp,%ecx,4)
41e80d:	c6 44 8c 6b 00       	movb   $0x0,0x6b(%esp,%ecx,4)
41e812:	83 e9 01             	sub    $0x1,%ecx
41e815:	79 df                	jns    0x41e7f6
41e817:	8b 74 24 40          	mov    0x40(%esp),%esi
41e81b:	eb 25                	jmp    0x41e842
41e81d:	8b c8                	mov    %eax,%ecx
41e81f:	85 c0                	test   %eax,%eax
41e821:	75 0b                	jne    0x41e82e
41e823:	52                   	push   %edx
41e824:	8b cf                	mov    %edi,%ecx
41e826:	e8 49 12 00 00       	call   0x41fa74
41e82b:	8b 4f 30             	mov    0x30(%edi),%ecx
41e82e:	8b c1                	mov    %ecx,%eax
41e830:	85 c9                	test   %ecx,%ecx
41e832:	0f 85 19 ff ff ff    	jne    0x41e751
41e838:	33 c0                	xor    %eax,%eax
41e83a:	e9 b3 01 00 00       	jmp    0x41e9f2
41e83f:	6a 28                	push   $0x28
41e841:	5e                   	pop    %esi
41e842:	8d 44 24 40          	lea    0x40(%esp),%eax
41e846:	8b c8                	mov    %eax,%ecx
41e848:	89 44 24 14          	mov    %eax,0x14(%esp)
41e84c:	e8 21 f1 00 00       	call   0x42d972
41e851:	0f b7 c8             	movzwl %ax,%ecx
41e854:	03 ce                	add    %esi,%ecx
41e856:	89 4c 24 18          	mov    %ecx,0x18(%esp)
41e85a:	8b c1                	mov    %ecx,%eax
41e85c:	2b 44 24 24          	sub    0x24(%esp),%eax
41e860:	03 f8                	add    %eax,%edi
41e862:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
41e867:	89 7c 24 20          	mov    %edi,0x20(%esp)
41e86b:	89 7c 24 0c          	mov    %edi,0xc(%esp)
41e86f:	74 12                	je     0x41e883
41e871:	8d 47 2d             	lea    0x2d(%edi),%eax
41e874:	c7 44 24 1c 0e 00 00 	movl   $0xe,0x1c(%esp)
41e87b:	00
41e87c:	83 e0 e0             	and    $0xffffffe0,%eax
41e87f:	89 44 24 0c          	mov    %eax,0xc(%esp)
41e883:	8b 03                	mov    (%ebx),%eax
41e885:	8d 4c 24 0c          	lea    0xc(%esp),%ecx
41e889:	6a 04                	push   $0x4
41e88b:	51                   	push   %ecx
41e88c:	8b 70 40             	mov    0x40(%eax),%esi
41e88f:	8b ce                	mov    %esi,%ecx
41e891:	ff 15 2c 81 4a 00    	call   *0x4a812c
41e897:	8b cb                	mov    %ebx,%ecx
41e899:	ff d6                	call   *%esi
41e89b:	83 7c 24 10 00       	cmpl   $0x0,0x10(%esp)
41e8a0:	74 48                	je     0x41e8ea
41e8a2:	8b 74 24 14          	mov    0x14(%esp),%esi
41e8a6:	b8 42 4d 00 00       	mov    $0x4d42,%eax
41e8ab:	66 89 44 24 30       	mov    %ax,0x30(%esp)
41e8b0:	8b ce                	mov    %esi,%ecx
41e8b2:	8d 47 0e             	lea    0xe(%edi),%eax
41e8b5:	89 44 24 32          	mov    %eax,0x32(%esp)
41e8b9:	33 c0                	xor    %eax,%eax
41e8bb:	89 44 24 36          	mov    %eax,0x36(%esp)
41e8bf:	e8 ae f0 00 00       	call   0x42d972
41e8c4:	0f b7 c8             	movzwl %ax,%ecx
41e8c7:	8b 06                	mov    (%esi),%eax
41e8c9:	83 c0 0e             	add    $0xe,%eax
41e8cc:	03 c1                	add    %ecx,%eax
41e8ce:	8d 4c 24 30          	lea    0x30(%esp),%ecx
41e8d2:	89 44 24 3a          	mov    %eax,0x3a(%esp)
41e8d6:	8b 03                	mov    (%ebx),%eax
41e8d8:	6a 0e                	push   $0xe
41e8da:	51                   	push   %ecx
41e8db:	8b 70 40             	mov    0x40(%eax),%esi
41e8de:	8b ce                	mov    %esi,%ecx
41e8e0:	ff 15 2c 81 4a 00    	call   *0x4a812c
41e8e6:	8b cb                	mov    %ebx,%ecx
41e8e8:	ff d6                	call   *%esi
41e8ea:	8b 03                	mov    (%ebx),%eax
41e8ec:	8b 70 14             	mov    0x14(%eax),%esi
41e8ef:	8b ce                	mov    %esi,%ecx
41e8f1:	ff 15 2c 81 4a 00    	call   *0x4a812c
41e8f7:	8b cb                	mov    %ebx,%ecx
41e8f9:	ff d6                	call   *%esi
41e8fb:	8b 0b                	mov    (%ebx),%ecx
41e8fd:	8b f8                	mov    %eax,%edi
41e8ff:	2b 44 24 1c          	sub    0x1c(%esp),%eax
41e903:	03 44 24 0c          	add    0xc(%esp),%eax
41e907:	50                   	push   %eax
41e908:	8b 71 34             	mov    0x34(%ecx),%esi
41e90b:	8b ce                	mov    %esi,%ecx
41e90d:	ff 15 2c 81 4a 00    	call   *0x4a812c
41e913:	8b cb                	mov    %ebx,%ecx
41e915:	ff d6                	call   *%esi
41e917:	8b 03                	mov    (%ebx),%eax
41e919:	6a 00                	push   $0x0
41e91b:	57                   	push   %edi
41e91c:	8b 70 30             	mov    0x30(%eax),%esi
41e91f:	8b ce                	mov    %esi,%ecx
41e921:	ff 15 2c 81 4a 00    	call   *0x4a812c
41e927:	8b cb                	mov    %ebx,%ecx
41e929:	ff d6                	call   *%esi
41e92b:	8b 03                	mov    (%ebx),%eax
41e92d:	ff 74 24 18          	push   0x18(%esp)
41e931:	ff 74 24 18          	push   0x18(%esp)
41e935:	8b 70 40             	mov    0x40(%eax),%esi
41e938:	8b ce                	mov    %esi,%ecx
41e93a:	ff 15 2c 81 4a 00    	call   *0x4a812c
41e940:	8b cb                	mov    %ebx,%ecx
41e942:	ff d6                	call   *%esi
41e944:	8b 7c 24 20          	mov    0x20(%esp),%edi
41e948:	8b c7                	mov    %edi,%eax
41e94a:	2b 44 24 18          	sub    0x18(%esp),%eax
41e94e:	8b 33                	mov    (%ebx),%esi
41e950:	50                   	push   %eax
41e951:	8b 44 24 2c          	mov    0x2c(%esp),%eax
41e955:	03 44 24 28          	add    0x28(%esp),%eax
41e959:	8b 4e 40             	mov    0x40(%esi),%ecx
41e95c:	50                   	push   %eax
41e95d:	ff 15 2c 81 4a 00    	call   *0x4a812c
41e963:	8b cb                	mov    %ebx,%ecx
41e965:	ff 56 40             	call   *0x40(%esi)
41e968:	8b 44 24 0c          	mov    0xc(%esp),%eax
41e96c:	2b 44 24 1c          	sub    0x1c(%esp),%eax
41e970:	89 44 24 0c          	mov    %eax,0xc(%esp)
41e974:	3b c7                	cmp    %edi,%eax
41e976:	76 55                	jbe    0x41e9cd
41e978:	8b 33                	mov    (%ebx),%esi
41e97a:	33 c9                	xor    %ecx,%ecx
41e97c:	2b c7                	sub    %edi,%eax
41e97e:	89 8c 24 6c 04 00 00 	mov    %ecx,0x46c(%esp)
41e985:	50                   	push   %eax
41e986:	8d 84 24 70 04 00 00 	lea    0x470(%esp),%eax
41e98d:	89 8c 24 74 04 00 00 	mov    %ecx,0x474(%esp)
41e994:	89 8c 24 78 04 00 00 	mov    %ecx,0x478(%esp)
41e99b:	89 8c 24 7c 04 00 00 	mov    %ecx,0x47c(%esp)
41e9a2:	89 8c 24 80 04 00 00 	mov    %ecx,0x480(%esp)
41e9a9:	89 8c 24 84 04 00 00 	mov    %ecx,0x484(%esp)
41e9b0:	89 8c 24 88 04 00 00 	mov    %ecx,0x488(%esp)