40a585:	0f b7 c0             	movzwl %ax,%eax
40a588:	50                   	push   %eax
40a589:	57                   	push   %edi
40a58a:	51                   	push   %ecx
40a58b:	56                   	push   %esi
40a58c:	e8 b8 68 01 00       	call   0x420e49
40a591:	83 c4 10             	add    $0x10,%esp
40a594:	eb 1b                	jmp    0x40a5b1
40a596:	8d 45 13             	lea    0x13(%ebp),%eax
40a599:	2b cf                	sub    %edi,%ecx
40a59b:	50                   	push   %eax
40a59c:	51                   	push   %ecx
40a59d:	8d 04 3e             	lea    (%esi,%edi,1),%eax
40a5a0:	50                   	push   %eax
40a5a1:	e8 a2 e5 ff ff       	call   0x408b48
40a5a6:	83 c4 0c             	add    $0xc,%esp
40a5a9:	eb 08                	jmp    0x40a5b3
40a5ab:	57                   	push   %edi
40a5ac:	e8 4b 78 01 00       	call   0x421dfc
40a5b1:	8b f0                	mov    %eax,%esi
40a5b3:	8b 4d 08             	mov    0x8(%ebp),%ecx
40a5b6:	56                   	push   %esi
40a5b7:	8d 04 39             	lea    (%ecx,%edi,1),%eax
40a5ba:	50                   	push   %eax
40a5bb:	51                   	push   %ecx
40a5bc:	e8 5e e5 ff ff       	call   0x408b1f
40a5c1:	83 c4 0c             	add    $0xc,%esp
40a5c4:	8b c6                	mov    %esi,%eax
40a5c6:	5f                   	pop    %edi
40a5c7:	5e                   	pop    %esi
40a5c8:	5b                   	pop    %ebx
40a5c9:	5d                   	pop    %ebp
40a5ca:	c2 0c 00             	ret    $0xc
40a5cd:	55                   	push   %ebp
40a5ce:	8b ec                	mov    %esp,%ebp
40a5d0:	8b 55 0c             	mov    0xc(%ebp),%edx
40a5d3:	83 ec 0c             	sub    $0xc,%esp
40a5d6:	8a 42 14             	mov    0x14(%edx),%al
40a5d9:	56                   	push   %esi
40a5da:	57                   	push   %edi
40a5db:	8b f9                	mov    %ecx,%edi
40a5dd:	84 c0                	test   %al,%al
40a5df:	74 04                	je     0x40a5e5
40a5e1:	3c 73                	cmp    $0x73,%al
40a5e3:	75 2c                	jne    0x40a611
40a5e5:	8b 45 08             	mov    0x8(%ebp),%eax
40a5e8:	8b 30                	mov    (%eax),%esi
40a5ea:	8b 40 04             	mov    0x4(%eax),%eax
40a5ed:	85 c0                	test   %eax,%eax
40a5ef:	75 04                	jne    0x40a5f5
40a5f1:	85 f6                	test   %esi,%esi
40a5f3:	74 27                	je     0x40a61c
40a5f5:	8b 4a 10             	mov    0x10(%edx),%ecx
40a5f8:	85 c9                	test   %ecx,%ecx
40a5fa:	78 05                	js     0x40a601
40a5fc:	3b c8                	cmp    %eax,%ecx
40a5fe:	0f 42 c1             	cmovb  %ecx,%eax
40a601:	52                   	push   %edx
40a602:	50                   	push   %eax
40a603:	56                   	push   %esi
40a604:	8b cf                	mov    %edi,%ecx
40a606:	e8 33 ff ff ff       	call   0x40a53e
40a60b:	5f                   	pop    %edi
40a60c:	5e                   	pop    %esi
40a60d:	c9                   	leave
40a60e:	c2 08 00             	ret    $0x8
40a611:	68 70 65 49 00       	push   $0x496570
40a616:	50                   	push   %eax
40a617:	e8 f2 80 01 00       	call   0x42270e
40a61c:	51                   	push   %ecx
40a61d:	8b cc                	mov    %esp,%ecx
40a61f:	68 78 65 49 00       	push   $0x496578
40a624:	e8 17 00 00 00       	call   0x40a640
40a629:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40a62c:	e8 b1 16 00 00       	call   0x40bce2
40a631:	68 24 16 4b 00       	push   $0x4b1624
40a636:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a639:	50                   	push   %eax
40a63a:	e8 83 9b 03 00       	call   0x4441c2
40a63f:	cc                   	int3
40a640:	55                   	push   %ebp
40a641:	8b ec                	mov    %esp,%ebp
40a643:	8b 45 08             	mov    0x8(%ebp),%eax
40a646:	89 01                	mov    %eax,(%ecx)
40a648:	8b c1                	mov    %ecx,%eax
40a64a:	5d                   	pop    %ebp
40a64b:	c2 04 00             	ret    $0x4
40a64e:	6a 04                	push   $0x4
40a650:	b8 28 b0 48 00       	mov    $0x48b028,%eax
40a655:	e8 f0 53 03 00       	call   0x43fa4a
40a65a:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40a65d:	8b 75 08             	mov    0x8(%ebp),%esi
40a660:	33 d2                	xor    %edx,%edx
40a662:	8b 45 0c             	mov    0xc(%ebp),%eax
40a665:	8b f9                	mov    %ecx,%edi
40a667:	89 11                	mov    %edx,(%ecx)
40a669:	89 51 04             	mov    %edx,0x4(%ecx)
40a66c:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40a66d:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40a66e:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40a66f:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40a670:	89 41 18             	mov    %eax,0x18(%ecx)
40a673:	8d 41 1c             	lea    0x1c(%ecx),%eax
40a676:	89 51 10             	mov    %edx,0x10(%ecx)
40a679:	89 45 08             	mov    %eax,0x8(%ebp)
40a67c:	89 10                	mov    %edx,(%eax)
40a67e:	89 50 04             	mov    %edx,0x4(%eax)
40a681:	89 50 08             	mov    %edx,0x8(%eax)
40a684:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40a688:	8b c1                	mov    %ecx,%eax
40a68a:	e8 84 53 03 00       	call   0x43fa13
40a68f:	c2 08 00             	ret    $0x8
40a692:	6a 04                	push   $0x4
40a694:	b8 56 b0 48 00       	mov    $0x48b056,%eax
40a699:	e8 ac 53 03 00       	call   0x43fa4a
40a69e:	8b f1                	mov    %ecx,%esi
40a6a0:	89 75 f0             	mov    %esi,-0x10(%ebp)
40a6a3:	8d 4e 08             	lea    0x8(%esi),%ecx
40a6a6:	c7 06 68 49 49 00    	movl   $0x494968,(%esi)
40a6ac:	89 4e 04             	mov    %ecx,0x4(%esi)
40a6af:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40a6b3:	ff 75 08             	push   0x8(%ebp)
40a6b6:	c7 06 70 49 49 00    	movl   $0x494970,(%esi)
40a6bc:	e8 4b 00 00 00       	call   0x40a70c
40a6c1:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40a6c5:	8b c6                	mov    %esi,%eax
40a6c7:	e8 47 53 03 00       	call   0x43fa13
40a6cc:	c2 04 00             	ret    $0x4
40a6cf:	6a 04                	push   $0x4
40a6d1:	b8 84 b0 48 00       	mov    $0x48b084,%eax
40a6d6:	e8 6f 53 03 00       	call   0x43fa4a
40a6db:	8b f1                	mov    %ecx,%esi
40a6dd:	89 75 f0             	mov    %esi,-0x10(%ebp)
40a6e0:	8d 4e 08             	lea    0x8(%esi),%ecx
40a6e3:	c7 06 68 49 49 00    	movl   $0x494968,(%esi)
40a6e9:	89 4e 04             	mov    %ecx,0x4(%esi)
40a6ec:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40a6f0:	ff 75 08             	push   0x8(%ebp)
40a6f3:	c7 06 3c 4a 49 00    	movl   $0x494a3c,(%esi)
40a6f9:	e8 4c 00 00 00       	call   0x40a74a
40a6fe:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40a702:	8b c6                	mov    %esi,%eax
40a704:	e8 0a 53 03 00       	call   0x43fa13
40a709:	c2 04 00             	ret    $0x4
40a70c:	6a 04                	push   $0x4
40a70e:	b8 a7 b0 48 00       	mov    $0x48b0a7,%eax
40a713:	e8 32 53 03 00       	call   0x43fa4a
40a718:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40a71b:	83 61 08 00          	andl   $0x0,0x8(%ecx)
40a71f:	8d 41 10             	lea    0x10(%ecx),%eax
40a722:	c7 01 d8 48 49 00    	movl   $0x4948d8,(%ecx)
40a728:	89 41 04             	mov    %eax,0x4(%ecx)
40a72b:	c7 41 0c f4 01 00 00 	movl   $0x1f4,0xc(%ecx)
40a732:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40a736:	c7 01 e4 48 49 00    	movl   $0x4948e4,(%ecx)
40a73c:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40a740:	8b c1                	mov    %ecx,%eax
40a742:	e8 cc 52 03 00       	call   0x43fa13
40a747:	c2 04 00             	ret    $0x4
40a74a:	6a 04                	push   $0x4
40a74c:	b8 d5 b0 48 00       	mov    $0x48b0d5,%eax
40a751:	e8 f4 52 03 00       	call   0x43fa4a
40a756:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40a759:	33 c0                	xor    %eax,%eax
40a75b:	c7 01 d8 48 49 00    	movl   $0x4948d8,(%ecx)
40a761:	89 41 04             	mov    %eax,0x4(%ecx)
40a764:	89 41 08             	mov    %eax,0x8(%ecx)
40a767:	89 41 0c             	mov    %eax,0xc(%ecx)
40a76a:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a76d:	c7 01 30 4a 49 00    	movl   $0x494a30,(%ecx)
40a773:	89 41 20             	mov    %eax,0x20(%ecx)
40a776:	c7 41 24 0f 00 00 00 	movl   $0xf,0x24(%ecx)
40a77d:	88 41 10             	mov    %al,0x10(%ecx)
40a780:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40a784:	8b c1                	mov    %ecx,%eax
40a786:	e8 88 52 03 00       	call   0x43fa13
40a78b:	c2 04 00             	ret    $0x4
40a78e:	6a 04                	push   $0x4
40a790:	b8 03 b1 48 00       	mov    $0x48b103,%eax
40a795:	e8 b0 52 03 00       	call   0x43fa4a
40a79a:	8b f1                	mov    %ecx,%esi
40a79c:	89 75 f0             	mov    %esi,-0x10(%ebp)
40a79f:	8b 55 08             	mov    0x8(%ebp),%edx
40a7a2:	8d 4e 04             	lea    0x4(%esi),%ecx
40a7a5:	8b 02                	mov    (%edx),%eax
40a7a7:	89 06                	mov    %eax,(%esi)
40a7a9:	8d 42 04             	lea    0x4(%edx),%eax
40a7ac:	50                   	push   %eax
40a7ad:	e8 db 07 00 00       	call   0x40af8d
40a7b2:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40a7b6:	8b c6                	mov    %esi,%eax
40a7b8:	e8 56 52 03 00       	call   0x43fa13
40a7bd:	c2 04 00             	ret    $0x4
40a7c0:	6a 04                	push   $0x4
40a7c2:	b8 31 b1 48 00       	mov    $0x48b131,%eax
40a7c7:	e8 7e 52 03 00       	call   0x43fa4a
40a7cc:	8b f1                	mov    %ecx,%esi
40a7ce:	89 75 f0             	mov    %esi,-0x10(%ebp)
40a7d1:	8b 55 08             	mov    0x8(%ebp),%edx
40a7d4:	8d 4e 04             	lea    0x4(%esi),%ecx
40a7d7:	8b 02                	mov    (%edx),%eax
40a7d9:	89 06                	mov    %eax,(%esi)
40a7db:	8d 42 04             	lea    0x4(%edx),%eax
40a7de:	50                   	push   %eax
40a7df:	e8 a9 07 00 00       	call   0x40af8d
40a7e4:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40a7e8:	8b c6                	mov    %esi,%eax
40a7ea:	e8 24 52 03 00       	call   0x43fa13
40a7ef:	c2 04 00             	ret    $0x4
40a7f2:	6a 08                	push   $0x8
40a7f4:	b8 67 b1 48 00       	mov    $0x48b167,%eax
40a7f9:	e8 4c 52 03 00       	call   0x43fa4a
40a7fe:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40a801:	33 d2                	xor    %edx,%edx
40a803:	8d 41 04             	lea    0x4(%ecx),%eax
40a806:	89 11                	mov    %edx,(%ecx)
40a808:	89 45 ec             	mov    %eax,-0x14(%ebp)
40a80b:	89 10                	mov    %edx,(%eax)
40a80d:	89 50 04             	mov    %edx,0x4(%eax)
40a810:	89 50 08             	mov    %edx,0x8(%eax)
40a813:	89 55 fc             	mov    %edx,-0x4(%ebp)
40a816:	89 50 0c             	mov    %edx,0xc(%eax)
40a819:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40a81d:	8b c1                	mov    %ecx,%eax
40a81f:	e8 ef 51 03 00       	call   0x43fa13
40a824:	c3                   	ret
40a825:	6a 04                	push   $0x4
40a827:	b8 95 b1 48 00       	mov    $0x48b195,%eax
40a82c:	e8 19 52 03 00       	call   0x43fa4a
40a831:	8b f1                	mov    %ecx,%esi
40a833:	89 75 f0             	mov    %esi,-0x10(%ebp)
40a836:	8b 55 08             	mov    0x8(%ebp),%edx
40a839:	8d 4e 04             	lea    0x4(%esi),%ecx
40a83c:	8b 02                	mov    (%edx),%eax
40a83e:	89 06                	mov    %eax,(%esi)
40a840:	8d 42 04             	lea    0x4(%edx),%eax
40a843:	50                   	push   %eax
40a844:	e8 44 07 00 00       	call   0x40af8d
40a849:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40a84d:	8b c6                	mov    %esi,%eax
40a84f:	e8 bf 51 03 00       	call   0x43fa13
40a854:	c2 04 00             	ret    $0x4
40a857:	6a 08                	push   $0x8
40a859:	b8 cb b1 48 00       	mov    $0x48b1cb,%eax
40a85e:	e8 e7 51 03 00       	call   0x43fa4a
40a863:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40a866:	33 d2                	xor    %edx,%edx
40a868:	8d 41 04             	lea    0x4(%ecx),%eax
40a86b:	89 11                	mov    %edx,(%ecx)
40a86d:	89 45 ec             	mov    %eax,-0x14(%ebp)
40a870:	89 10                	mov    %edx,(%eax)
40a872:	89 50 04             	mov    %edx,0x4(%eax)
40a875:	89 50 08             	mov    %edx,0x8(%eax)
40a878:	89 55 fc             	mov    %edx,-0x4(%ebp)
40a87b:	89 50 0c             	mov    %edx,0xc(%eax)
40a87e:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40a882:	8b c1                	mov    %ecx,%eax
40a884:	e8 8a 51 03 00       	call   0x43fa13
40a889:	c3                   	ret
40a88a:	6a 04                	push   $0x4
40a88c:	b8 f3 b1 48 00       	mov    $0x48b1f3,%eax
40a891:	e8 b4 51 03 00       	call   0x43fa4a
40a896:	8b f1                	mov    %ecx,%esi
40a898:	6a 24                	push   $0x24
40a89a:	e8 04 4a 03 00       	call   0x43f2a3
40a89f:	59                   	pop    %ecx
40a8a0:	8b c8                	mov    %eax,%ecx
40a8a2:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40a8a5:	33 c0                	xor    %eax,%eax
40a8a7:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a8aa:	85 c9                	test   %ecx,%ecx
40a8ac:	74 05                	je     0x40a8b3
40a8ae:	e8 65 22 00 00       	call   0x40cb18
40a8b3:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40a8b7:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40a8ba:	89 06                	mov    %eax,(%esi)
40a8bc:	89 46 04             	mov    %eax,0x4(%esi)
40a8bf:	8b 45 08             	mov    0x8(%ebp),%eax
40a8c2:	89 46 0c             	mov    %eax,0xc(%esi)
40a8c5:	8b c1                	mov    %ecx,%eax
40a8c7:	c1 e8 03             	shr    $0x3,%eax
40a8ca:	89 4e 08             	mov    %ecx,0x8(%esi)
40a8cd:	f7 d0                	not    %eax
40a8cf:	c1 e9 09             	shr    $0x9,%ecx
40a8d2:	25 00 01 00 00       	and    $0x100,%eax
40a8d7:	f7 d1                	not    %ecx
40a8d9:	89 46 10             	mov    %eax,0x10(%esi)
40a8dc:	83 e1 04             	and    $0x4,%ecx
40a8df:	8b c6                	mov    %esi,%eax
40a8e1:	89 4e 14             	mov    %ecx,0x14(%esi)
40a8e4:	e8 2a 51 03 00       	call   0x43fa13
40a8e9:	c2 08 00             	ret    $0x8
40a8ec:	6a 04                	push   $0x4
40a8ee:	b8 1b b2 48 00       	mov    $0x48b21b,%eax
40a8f3:	e8 52 51 03 00       	call   0x43fa4a
40a8f8:	8b f1                	mov    %ecx,%esi
40a8fa:	6a 24                	push   $0x24
40a8fc:	e8 a2 49 03 00       	call   0x43f2a3
40a901:	59                   	pop    %ecx
40a902:	8b c8                	mov    %eax,%ecx
40a904:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40a907:	33 c0                	xor    %eax,%eax
40a909:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a90c:	85 c9                	test   %ecx,%ecx
40a90e:	74 05                	je     0x40a915
40a910:	e8 03 22 00 00       	call   0x40cb18
40a915:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40a919:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40a91c:	89 06                	mov    %eax,(%esi)
40a91e:	89 46 04             	mov    %eax,0x4(%esi)
40a921:	8b 45 08             	mov    0x8(%ebp),%eax
40a924:	89 46 0c             	mov    %eax,0xc(%esi)
40a927:	8b c1                	mov    %ecx,%eax
40a929:	c1 e8 03             	shr    $0x3,%eax
40a92c:	89 4e 08             	mov    %ecx,0x8(%esi)
40a92f:	f7 d0                	not    %eax
40a931:	c1 e9 09             	shr    $0x9,%ecx
40a934:	25 00 01 00 00       	and    $0x100,%eax
40a939:	f7 d1                	not    %ecx
40a93b:	89 46 10             	mov    %eax,0x10(%esi)
40a93e:	83 e1 04             	and    $0x4,%ecx
40a941:	8b c6                	mov    %esi,%eax
40a943:	89 4e 14             	mov    %ecx,0x14(%esi)
40a946:	e8 c8 50 03 00       	call   0x43fa13
40a94b:	c2 08 00             	ret    $0x8
40a94e:	6a 04                	push   $0x4
40a950:	b8 54 b2 48 00       	mov    $0x48b254,%eax
40a955:	e8 f0 50 03 00       	call   0x43fa4a
40a95a:	8b f1                	mov    %ecx,%esi
40a95c:	89 75 f0             	mov    %esi,-0x10(%ebp)
40a95f:	e8 f9 04 00 00       	call   0x40ae5d
40a964:	33 db                	xor    %ebx,%ebx
40a966:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40a969:	8d 4e 20             	lea    0x20(%esi),%ecx
40a96c:	e8 ec 04 00 00       	call   0x40ae5d
40a971:	33 d2                	xor    %edx,%edx
40a973:	42                   	inc    %edx
40a974:	88 55 fc             	mov    %dl,-0x4(%ebp)
40a977:	8d 4e 40             	lea    0x40(%esi),%ecx
40a97a:	89 19                	mov    %ebx,(%ecx)
40a97c:	89 59 04             	mov    %ebx,0x4(%ecx)
40a97f:	89 59 08             	mov    %ebx,0x8(%ecx)
40a982:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40a986:	8b 45 0c             	mov    0xc(%ebp),%eax
40a989:	8b 7d 14             	mov    0x14(%ebp),%edi
40a98c:	8b 5d 20             	mov    0x20(%ebp),%ebx
40a98f:	89 46 50             	mov    %eax,0x50(%esi)
40a992:	8b 45 08             	mov    0x8(%ebp),%eax
40a995:	89 46 54             	mov    %eax,0x54(%esi)
40a998:	8b 45 1c             	mov    0x1c(%ebp),%eax