409646:	8b 45 b4             	mov    -0x4c(%ebp),%eax
409649:	83 c4 04             	add    $0x4,%esp
40964c:	89 7d ac             	mov    %edi,-0x54(%ebp)
40964f:	85 c0                	test   %eax,%eax
409651:	74 2c                	je     0x40967f
409653:	8b 00                	mov    (%eax),%eax
409655:	8b 70 08             	mov    0x8(%eax),%esi
409658:	8b ce                	mov    %esi,%ecx
40965a:	ff 15 5c e2 43 00    	call   *0x43e25c
409660:	8b 4d b4             	mov    -0x4c(%ebp),%ecx
409663:	ff d6                	call   *%esi
409665:	89 45 b4             	mov    %eax,-0x4c(%ebp)
409668:	85 c0                	test   %eax,%eax
40966a:	74 13                	je     0x40967f
40966c:	8b 00                	mov    (%eax),%eax
40966e:	6a 01                	push   $0x1
409670:	8b 30                	mov    (%eax),%esi
409672:	8b ce                	mov    %esi,%ecx
409674:	ff 15 5c e2 43 00    	call   *0x43e25c
40967a:	8b 4d b4             	mov    -0x4c(%ebp),%ecx
40967d:	ff d6                	call   *%esi
40967f:	8b 07                	mov    (%edi),%eax
409681:	8d 4d bc             	lea    -0x44(%ebp),%ecx
409684:	51                   	push   %ecx
409685:	8b 70 14             	mov    0x14(%eax),%esi
409688:	8b ce                	mov    %esi,%ecx
40968a:	ff 15 5c e2 43 00    	call   *0x43e25c
409690:	8b cf                	mov    %edi,%ecx
409692:	ff d6                	call   *%esi
409694:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
409698:	8b 07                	mov    (%edi),%eax
40969a:	8b 70 10             	mov    0x10(%eax),%esi
40969d:	8b ce                	mov    %esi,%ecx
40969f:	ff 15 5c e2 43 00    	call   *0x43e25c
4096a5:	8b cf                	mov    %edi,%ecx
4096a7:	ff d6                	call   *%esi
4096a9:	8b 7d 98             	mov    -0x68(%ebp),%edi
4096ac:	0f b7 f0             	movzwl %ax,%esi
4096af:	89 75 b4             	mov    %esi,-0x4c(%ebp)
4096b2:	3b df                	cmp    %edi,%ebx
4096b4:	74 2c                	je     0x4096e2
4096b6:	8b 45 ac             	mov    -0x54(%ebp),%eax
4096b9:	8b 00                	mov    (%eax),%eax
4096bb:	8b 70 0c             	mov    0xc(%eax),%esi
4096be:	8b ce                	mov    %esi,%ecx
4096c0:	ff 15 5c e2 43 00    	call   *0x43e25c
4096c6:	8b 4d ac             	mov    -0x54(%ebp),%ecx
4096c9:	ff d6                	call   *%esi
4096cb:	83 7d e8 08          	cmpl   $0x8,-0x18(%ebp)
4096cf:	8b 75 b4             	mov    -0x4c(%ebp),%esi
4096d2:	0f b7 c8             	movzwl %ax,%ecx
4096d5:	8d 45 d4             	lea    -0x2c(%ebp),%eax
4096d8:	0f 43 45 d4          	cmovae -0x2c(%ebp),%eax
4096dc:	3b df                	cmp    %edi,%ebx
4096de:	66 89 0c 58          	mov    %cx,(%eax,%ebx,2)
4096e2:	0f 44 5d a8          	cmove  -0x58(%ebp),%ebx
4096e6:	8d 7d bc             	lea    -0x44(%ebp),%edi
4096e9:	83 7d d0 10          	cmpl   $0x10,-0x30(%ebp)
4096ed:	0f 43 7d bc          	cmovae -0x44(%ebp),%edi
4096f1:	8a 07                	mov    (%edi),%al
4096f3:	3c 7f                	cmp    $0x7f,%al
4096f5:	0f 84 91 00 00 00    	je     0x40978c
4096fb:	0f 1f 44 00 00       	nopl   0x0(%eax,%eax,1)
409700:	8b 55 b8             	mov    -0x48(%ebp),%edx
409703:	84 c0                	test   %al,%al
409705:	0f 8e 84 00 00 00    	jle    0x40978f
40970b:	0f be c8             	movsbl %al,%ecx
40970e:	8b c3                	mov    %ebx,%eax
409710:	2b c2                	sub    %edx,%eax
409712:	3b c8                	cmp    %eax,%ecx
409714:	73 79                	jae    0x40978f
409716:	2b d9                	sub    %ecx,%ebx
409718:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40971b:	3b cb                	cmp    %ebx,%ecx
40971d:	0f 82 3d 02 00 00    	jb     0x409960
409723:	8b 55 e8             	mov    -0x18(%ebp),%edx
409726:	8b c2                	mov    %edx,%eax
409728:	2b c1                	sub    %ecx,%eax
40972a:	83 f8 01             	cmp    $0x1,%eax
40972d:	72 34                	jb     0x409763
40972f:	8d 41 01             	lea    0x1(%ecx),%eax
409732:	83 fa 08             	cmp    $0x8,%edx
409735:	89 45 e4             	mov    %eax,-0x1c(%ebp)
409738:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40973b:	0f 43 45 d4          	cmovae -0x2c(%ebp),%eax
40973f:	2b cb                	sub    %ebx,%ecx
409741:	8d 34 58             	lea    (%eax,%ebx,2),%esi
409744:	8d 04 4d 02 00 00 00 	lea    0x2(,%ecx,2),%eax
40974b:	50                   	push   %eax
40974c:	8d 46 02             	lea    0x2(%esi),%eax
40974f:	56                   	push   %esi
409750:	50                   	push   %eax
409751:	e8 2a 1f 01 00       	call   0x41b680
409756:	8b 45 b4             	mov    -0x4c(%ebp),%eax
409759:	83 c4 0c             	add    $0xc,%esp
40975c:	66 89 06             	mov    %ax,(%esi)
40975f:	8b f0                	mov    %eax,%esi
409761:	eb 15                	jmp    0x409778
409763:	56                   	push   %esi
409764:	6a 01                	push   $0x1
409766:	53                   	push   %ebx
409767:	c6 45 a8 00          	movb   $0x0,-0x58(%ebp)
40976b:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
40976e:	ff 75 a8             	push   -0x58(%ebp)
409771:	6a 01                	push   $0x1
409773:	e8 a8 0e 00 00       	call   0x40a620
409778:	80 7f 01 00          	cmpb   $0x0,0x1(%edi)
40977c:	8d 47 01             	lea    0x1(%edi),%eax
40977f:	0f 4f f8             	cmovg  %eax,%edi
409782:	8a 07                	mov    (%edi),%al
409784:	3c 7f                	cmp    $0x7f,%al
409786:	0f 85 74 ff ff ff    	jne    0x409700
40978c:	8b 55 b8             	mov    -0x48(%ebp),%edx
40978f:	8b 4d 9c             	mov    -0x64(%ebp),%ecx
409792:	8b 45 e4             	mov    -0x1c(%ebp),%eax
409795:	89 45 b4             	mov    %eax,-0x4c(%ebp)
409798:	83 79 24 00          	cmpl   $0x0,0x24(%ecx)
40979c:	8b 79 20             	mov    0x20(%ecx),%edi
40979f:	7c 0e                	jl     0x4097af
4097a1:	7f 04                	jg     0x4097a7
4097a3:	85 ff                	test   %edi,%edi
4097a5:	74 08                	je     0x4097af
4097a7:	3b f8                	cmp    %eax,%edi
4097a9:	76 04                	jbe    0x4097af
4097ab:	2b f8                	sub    %eax,%edi
4097ad:	eb 02                	jmp    0x4097b1
4097af:	33 ff                	xor    %edi,%edi
4097b1:	8b 41 14             	mov    0x14(%ecx),%eax
4097b4:	8b 75 1c             	mov    0x1c(%ebp),%esi
4097b7:	25 c0 01 00 00       	and    $0x1c0,%eax
4097bc:	8b 5d 08             	mov    0x8(%ebp),%ebx
4097bf:	83 f8 40             	cmp    $0x40,%eax
4097c2:	0f 84 84 00 00 00    	je     0x40984c
4097c8:	3d 00 01 00 00       	cmp    $0x100,%eax
4097cd:	74 40                	je     0x40980f
4097cf:	57                   	push   %edi
4097d0:	56                   	push   %esi
4097d1:	ff 75 14             	push   0x14(%ebp)
4097d4:	8d 45 a0             	lea    -0x60(%ebp),%eax
4097d7:	ff 75 10             	push   0x10(%ebp)
4097da:	50                   	push   %eax
4097db:	53                   	push   %ebx
4097dc:	e8 3f f7 ff ff       	call   0x408f20
4097e1:	8b 75 b8             	mov    -0x48(%ebp),%esi
4097e4:	33 ff                	xor    %edi,%edi
4097e6:	83 7d e8 08          	cmpl   $0x8,-0x18(%ebp)
4097ea:	56                   	push   %esi
4097eb:	8b 10                	mov    (%eax),%edx
4097ed:	8b 48 04             	mov    0x4(%eax),%ecx
4097f0:	8d 45 d4             	lea    -0x2c(%ebp),%eax
4097f3:	0f 43 45 d4          	cmovae -0x2c(%ebp),%eax
4097f7:	50                   	push   %eax
4097f8:	51                   	push   %ecx
4097f9:	52                   	push   %edx
4097fa:	8d 45 a0             	lea    -0x60(%ebp),%eax
4097fd:	89 55 10             	mov    %edx,0x10(%ebp)
409800:	50                   	push   %eax
409801:	53                   	push   %ebx
409802:	89 4d 14             	mov    %ecx,0x14(%ebp)
409805:	e8 a6 f7 ff ff       	call   0x408fb0
40980a:	83 c4 30             	add    $0x30,%esp
40980d:	eb 60                	jmp    0x40986f
40980f:	83 7d e8 08          	cmpl   $0x8,-0x18(%ebp)
409813:	8d 45 d4             	lea    -0x2c(%ebp),%eax
409816:	52                   	push   %edx
409817:	0f 43 45 d4          	cmovae -0x2c(%ebp),%eax
40981b:	50                   	push   %eax
40981c:	ff 75 14             	push   0x14(%ebp)
40981f:	8d 45 a0             	lea    -0x60(%ebp),%eax
409822:	ff 75 10             	push   0x10(%ebp)
409825:	50                   	push   %eax
409826:	53                   	push   %ebx
409827:	e8 84 f7 ff ff       	call   0x408fb0
40982c:	57                   	push   %edi
40982d:	56                   	push   %esi
40982e:	8b 08                	mov    (%eax),%ecx
409830:	8b 40 04             	mov    0x4(%eax),%eax
409833:	50                   	push   %eax
409834:	89 45 14             	mov    %eax,0x14(%ebp)
409837:	8d 45 a0             	lea    -0x60(%ebp),%eax
40983a:	51                   	push   %ecx
40983b:	50                   	push   %eax
40983c:	53                   	push   %ebx
40983d:	89 4d 10             	mov    %ecx,0x10(%ebp)
409840:	e8 db f6 ff ff       	call   0x408f20
409845:	83 c4 30             	add    $0x30,%esp
409848:	33 ff                	xor    %edi,%edi
40984a:	eb 20                	jmp    0x40986c
40984c:	83 7d e8 08          	cmpl   $0x8,-0x18(%ebp)
409850:	8d 45 d4             	lea    -0x2c(%ebp),%eax
409853:	52                   	push   %edx
409854:	0f 43 45 d4          	cmovae -0x2c(%ebp),%eax
409858:	50                   	push   %eax
409859:	ff 75 14             	push   0x14(%ebp)
40985c:	8d 45 a0             	lea    -0x60(%ebp),%eax
40985f:	ff 75 10             	push   0x10(%ebp)
409862:	50                   	push   %eax
409863:	53                   	push   %ebx
409864:	e8 47 f7 ff ff       	call   0x408fb0
409869:	83 c4 18             	add    $0x18,%esp
40986c:	8b 75 b8             	mov    -0x48(%ebp),%esi
40986f:	8b 10                	mov    (%eax),%edx
409871:	8b 48 04             	mov    0x4(%eax),%ecx
409874:	8d 45 d4             	lea    -0x2c(%ebp),%eax
409877:	83 7d e8 08          	cmpl   $0x8,-0x18(%ebp)
40987b:	89 55 10             	mov    %edx,0x10(%ebp)
40987e:	0f 43 45 d4          	cmovae -0x2c(%ebp),%eax
409882:	29 75 b4             	sub    %esi,-0x4c(%ebp)
409885:	ff 75 b4             	push   -0x4c(%ebp)
409888:	89 4d 14             	mov    %ecx,0x14(%ebp)
40988b:	8d 04 70             	lea    (%eax,%esi,2),%eax
40988e:	50                   	push   %eax
40988f:	51                   	push   %ecx
409890:	52                   	push   %edx
409891:	8d 45 a0             	lea    -0x60(%ebp),%eax
409894:	50                   	push   %eax
409895:	53                   	push   %ebx
409896:	e8 15 f7 ff ff       	call   0x408fb0
40989b:	8b 55 9c             	mov    -0x64(%ebp),%edx
40989e:	8b 75 94             	mov    -0x6c(%ebp),%esi
4098a1:	57                   	push   %edi
4098a2:	8b 08                	mov    (%eax),%ecx
4098a4:	8b 40 04             	mov    0x4(%eax),%eax
4098a7:	ff 75 1c             	push   0x1c(%ebp)
4098aa:	89 4d 10             	mov    %ecx,0x10(%ebp)
4098ad:	50                   	push   %eax
4098ae:	51                   	push   %ecx
4098af:	56                   	push   %esi
4098b0:	53                   	push   %ebx
4098b1:	89 45 14             	mov    %eax,0x14(%ebp)
4098b4:	c7 42 20 00 00 00 00 	movl   $0x0,0x20(%edx)
4098bb:	c7 42 24 00 00 00 00 	movl   $0x0,0x24(%edx)
4098c2:	e8 59 f6 ff ff       	call   0x408f20
4098c7:	8b 4d d0             	mov    -0x30(%ebp),%ecx
4098ca:	83 c4 30             	add    $0x30,%esp
4098cd:	83 f9 10             	cmp    $0x10,%ecx
4098d0:	72 28                	jb     0x4098fa
4098d2:	8b 55 bc             	mov    -0x44(%ebp),%edx
4098d5:	41                   	inc    %ecx
4098d6:	8b c2                	mov    %edx,%eax
4098d8:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
4098de:	72 10                	jb     0x4098f0
4098e0:	8b 50 fc             	mov    -0x4(%eax),%edx
4098e3:	83 c1 23             	add    $0x23,%ecx
4098e6:	2b c2                	sub    %edx,%eax
4098e8:	83 c0 fc             	add    $0xfffffffc,%eax
4098eb:	83 f8 1f             	cmp    $0x1f,%eax
4098ee:	77 75                	ja     0x409965
4098f0:	51                   	push   %ecx
4098f1:	52                   	push   %edx
4098f2:	e8 c1 02 01 00       	call   0x419bb8
4098f7:	83 c4 08             	add    $0x8,%esp
4098fa:	8b 4d e8             	mov    -0x18(%ebp),%ecx
4098fd:	c7 45 cc 00 00 00 00 	movl   $0x0,-0x34(%ebp)
409904:	c7 45 d0 0f 00 00 00 	movl   $0xf,-0x30(%ebp)
40990b:	c6 45 bc 00          	movb   $0x0,-0x44(%ebp)
40990f:	83 f9 08             	cmp    $0x8,%ecx
409912:	72 2e                	jb     0x409942
409914:	8b 55 d4             	mov    -0x2c(%ebp),%edx
409917:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
40991e:	8b c2                	mov    %edx,%eax
409920:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
409926:	72 10                	jb     0x409938
409928:	8b 50 fc             	mov    -0x4(%eax),%edx
40992b:	83 c1 23             	add    $0x23,%ecx
40992e:	2b c2                	sub    %edx,%eax
409930:	83 c0 fc             	add    $0xfffffffc,%eax
409933:	83 f8 1f             	cmp    $0x1f,%eax
409936:	77 2d                	ja     0x409965
409938:	51                   	push   %ecx
409939:	52                   	push   %edx
40993a:	e8 79 02 01 00       	call   0x419bb8
40993f:	83 c4 08             	add    $0x8,%esp
409942:	8b c6                	mov    %esi,%eax
409944:	8b 4d f4             	mov    -0xc(%ebp),%ecx
409947:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40994e:	59                   	pop    %ecx
40994f:	5f                   	pop    %edi
409950:	5e                   	pop    %esi
409951:	5b                   	pop    %ebx
409952:	8b 4d f0             	mov    -0x10(%ebp),%ecx
409955:	33 cd                	xor    %ebp,%ecx
409957:	e8 4e 02 01 00       	call   0x419baa
40995c:	8b e5                	mov    %ebp,%esp
40995e:	5d                   	pop    %ebp
40995f:	c3                   	ret
409960:	e8 9b b6 ff ff       	call   0x405000
409965:	e8 29 60 01 00       	call   0x41f993
40996a:	cc                   	int3
40996b:	cc                   	int3
40996c:	cc                   	int3
40996d:	cc                   	int3
40996e:	cc                   	int3
40996f:	cc                   	int3
409970:	55                   	push   %ebp
409971:	8b ec                	mov    %esp,%ebp
409973:	8b 55 14             	mov    0x14(%ebp),%edx
409976:	56                   	push   %esi
409977:	8b 75 0c             	mov    0xc(%ebp),%esi
40997a:	c6 06 25             	movb   $0x25,(%esi)
40997d:	8d 46 01             	lea    0x1(%esi),%eax
409980:	f6 c2 20             	test   $0x20,%dl
409983:	74 04                	je     0x409989
409985:	c6 00 2b             	movb   $0x2b,(%eax)
409988:	40                   	inc    %eax
409989:	f6 c2 10             	test   $0x10,%dl
40998c:	74 04                	je     0x409992
40998e:	c6 00 23             	movb   $0x23,(%eax)
409991:	40                   	inc    %eax
409992:	8a 4d 10             	mov    0x10(%ebp),%cl
409995:	66 c7 00 2e 2a       	movw   $0x2a2e,(%eax)
40999a:	83 c0 02             	add    $0x2,%eax
40999d:	84 c9                	test   %cl,%cl
40999f:	74 03                	je     0x4099a4
4099a1:	88 08                	mov    %cl,(%eax)
4099a3:	40                   	inc    %eax
4099a4:	8b ca                	mov    %edx,%ecx
4099a6:	81 e1 00 30 00 00    	and    $0x3000,%ecx
4099ac:	f6 c2 04             	test   $0x4,%dl
4099af:	74 38                	je     0x4099e9
4099b1:	81 f9 00 20 00 00    	cmp    $0x2000,%ecx
4099b7:	74 38                	je     0x4099f1
4099b9:	81 f9 00 30 00 00    	cmp    $0x3000,%ecx
4099bf:	75 0d                	jne    0x4099ce
4099c1:	b1 41                	mov    $0x41,%cl
4099c3:	88 08                	mov    %cl,(%eax)
4099c5:	c6 40 01 00          	movb   $0x0,0x1(%eax)
4099c9:	8b c6                	mov    %esi,%eax
4099cb:	5e                   	pop    %esi
4099cc:	5d                   	pop    %ebp
4099cd:	c3                   	ret
4099ce:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
4099d4:	0f 95 c1             	setne  %cl
4099d7:	8d 0c 4d 45 00 00 00 	lea    0x45(,%ecx,2),%ecx
4099de:	88 08                	mov    %cl,(%eax)
4099e0:	c6 40 01 00          	movb   $0x0,0x1(%eax)
4099e4:	8b c6                	mov    %esi,%eax
4099e6:	5e                   	pop    %esi
4099e7:	5d                   	pop    %ebp
4099e8:	c3                   	ret
4099e9:	81 f9 00 20 00 00    	cmp    $0x2000,%ecx
4099ef:	75 0d                	jne    0x4099fe
4099f1:	b1 66                	mov    $0x66,%cl
4099f3:	88 08                	mov    %cl,(%eax)
4099f5:	c6 40 01 00          	movb   $0x0,0x1(%eax)
4099f9:	8b c6                	mov    %esi,%eax
4099fb:	5e                   	pop    %esi
4099fc:	5d                   	pop    %ebp
4099fd:	c3                   	ret
4099fe:	81 f9 00 30 00 00    	cmp    $0x3000,%ecx