4094e5:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
4094eb:	e8 f7 db ff ff       	call   0x4070e7
4094f0:	83 20 00             	andl   $0x0,(%eax)
4094f3:	83 c8 ff             	or     $0xffffffff,%eax
4094f6:	5e                   	pop    %esi
4094f7:	c3                   	ret
4094f8:	55                   	push   %ebp
4094f9:	8b ec                	mov    %esp,%ebp
4094fb:	81 ec 14 04 00 00    	sub    $0x414,%esp
409501:	53                   	push   %ebx
409502:	56                   	push   %esi
409503:	57                   	push   %edi
409504:	33 ff                	xor    %edi,%edi
409506:	39 7d 10             	cmp    %edi,0x10(%ebp)
409509:	89 7d f8             	mov    %edi,-0x8(%ebp)
40950c:	89 7d f0             	mov    %edi,-0x10(%ebp)
40950f:	75 07                	jne    0x409518
409511:	33 c0                	xor    %eax,%eax
409513:	e9 66 01 00 00       	jmp    0x40967e
409518:	8b 45 08             	mov    0x8(%ebp),%eax
40951b:	c1 f8 05             	sar    $0x5,%eax
40951e:	8d 1c 85 c0 1d 41 00 	lea    0x411dc0(,%eax,4),%ebx
409525:	8b 45 08             	mov    0x8(%ebp),%eax
409528:	83 e0 1f             	and    $0x1f,%eax
40952b:	8d 34 c0             	lea    (%eax,%eax,8),%esi
40952e:	8b 03                	mov    (%ebx),%eax
409530:	c1 e6 02             	shl    $0x2,%esi
409533:	f6 44 30 04 20       	testb  $0x20,0x4(%eax,%esi,1)
409538:	74 0e                	je     0x409548
40953a:	6a 02                	push   $0x2
40953c:	57                   	push   %edi
40953d:	ff 75 08             	push   0x8(%ebp)
409540:	e8 7b 04 00 00       	call   0x4099c0
409545:	83 c4 0c             	add    $0xc,%esp
409548:	8b 03                	mov    (%ebx),%eax
40954a:	03 c6                	add    %esi,%eax
40954c:	f6 40 04 80          	testb  $0x80,0x4(%eax)
409550:	0f 84 c1 00 00 00    	je     0x409617
409556:	8b 45 0c             	mov    0xc(%ebp),%eax
409559:	39 7d 10             	cmp    %edi,0x10(%ebp)
40955c:	89 45 fc             	mov    %eax,-0x4(%ebp)
40955f:	89 7d 08             	mov    %edi,0x8(%ebp)
409562:	0f 86 ea 00 00 00    	jbe    0x409652
409568:	8d 85 ec fb ff ff    	lea    -0x414(%ebp),%eax
40956e:	8b 4d fc             	mov    -0x4(%ebp),%ecx
409571:	2b 4d 0c             	sub    0xc(%ebp),%ecx
409574:	3b 4d 10             	cmp    0x10(%ebp),%ecx
409577:	73 29                	jae    0x4095a2
409579:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40957c:	ff 45 fc             	incl   -0x4(%ebp)
40957f:	8a 09                	mov    (%ecx),%cl
409581:	80 f9 0a             	cmp    $0xa,%cl
409584:	75 07                	jne    0x40958d
409586:	ff 45 f0             	incl   -0x10(%ebp)
409589:	c6 00 0d             	movb   $0xd,(%eax)
40958c:	40                   	inc    %eax
40958d:	88 08                	mov    %cl,(%eax)
40958f:	40                   	inc    %eax
409590:	8b c8                	mov    %eax,%ecx
409592:	8d 95 ec fb ff ff    	lea    -0x414(%ebp),%edx
409598:	2b ca                	sub    %edx,%ecx
40959a:	81 f9 00 04 00 00    	cmp    $0x400,%ecx
4095a0:	7c cc                	jl     0x40956e
4095a2:	8b f8                	mov    %eax,%edi
4095a4:	8d 85 ec fb ff ff    	lea    -0x414(%ebp),%eax
4095aa:	2b f8                	sub    %eax,%edi
4095ac:	8d 45 f4             	lea    -0xc(%ebp),%eax
4095af:	6a 00                	push   $0x0
4095b1:	50                   	push   %eax
4095b2:	8d 85 ec fb ff ff    	lea    -0x414(%ebp),%eax
4095b8:	57                   	push   %edi
4095b9:	50                   	push   %eax
4095ba:	8b 03                	mov    (%ebx),%eax
4095bc:	ff 34 30             	push   (%eax,%esi,1)
4095bf:	ff 15 80 d0 40 00    	call   *0x40d080
4095c5:	85 c0                	test   %eax,%eax
4095c7:	74 43                	je     0x40960c
4095c9:	8b 45 f4             	mov    -0xc(%ebp),%eax
4095cc:	01 45 f8             	add    %eax,-0x8(%ebp)
4095cf:	3b c7                	cmp    %edi,%eax
4095d1:	7c 0b                	jl     0x4095de
4095d3:	8b 45 fc             	mov    -0x4(%ebp),%eax
4095d6:	2b 45 0c             	sub    0xc(%ebp),%eax
4095d9:	3b 45 10             	cmp    0x10(%ebp),%eax
4095dc:	72 8a                	jb     0x409568
4095de:	33 ff                	xor    %edi,%edi
4095e0:	8b 45 f8             	mov    -0x8(%ebp),%eax
4095e3:	3b c7                	cmp    %edi,%eax
4095e5:	0f 85 90 00 00 00    	jne    0x40967b
4095eb:	39 7d 08             	cmp    %edi,0x8(%ebp)
4095ee:	74 62                	je     0x409652
4095f0:	6a 05                	push   $0x5
4095f2:	5e                   	pop    %esi
4095f3:	39 75 08             	cmp    %esi,0x8(%ebp)
4095f6:	75 4c                	jne    0x409644
4095f8:	e8 e1 da ff ff       	call   0x4070de
4095fd:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
409603:	e8 df da ff ff       	call   0x4070e7
409608:	89 30                	mov    %esi,(%eax)
40960a:	eb 41                	jmp    0x40964d
40960c:	ff 15 9c d0 40 00    	call   *0x40d09c
409612:	89 45 08             	mov    %eax,0x8(%ebp)
409615:	eb c7                	jmp    0x4095de
409617:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40961a:	57                   	push   %edi
40961b:	51                   	push   %ecx
40961c:	ff 75 10             	push   0x10(%ebp)
40961f:	ff 75 0c             	push   0xc(%ebp)
409622:	ff 30                	push   (%eax)
409624:	ff 15 80 d0 40 00    	call   *0x40d080
40962a:	85 c0                	test   %eax,%eax
40962c:	74 0b                	je     0x409639
40962e:	8b 45 f4             	mov    -0xc(%ebp),%eax
409631:	89 7d 08             	mov    %edi,0x8(%ebp)
409634:	89 45 f8             	mov    %eax,-0x8(%ebp)
409637:	eb a7                	jmp    0x4095e0
409639:	ff 15 9c d0 40 00    	call   *0x40d09c
40963f:	89 45 08             	mov    %eax,0x8(%ebp)
409642:	eb 9c                	jmp    0x4095e0
409644:	ff 75 08             	push   0x8(%ebp)
409647:	e8 1f da ff ff       	call   0x40706b
40964c:	59                   	pop    %ecx
40964d:	83 c8 ff             	or     $0xffffffff,%eax
409650:	eb 2c                	jmp    0x40967e
409652:	8b 03                	mov    (%ebx),%eax
409654:	f6 44 30 04 40       	testb  $0x40,0x4(%eax,%esi,1)
409659:	74 0c                	je     0x409667
40965b:	8b 45 0c             	mov    0xc(%ebp),%eax
40965e:	80 38 1a             	cmpb   $0x1a,(%eax)
409661:	0f 84 aa fe ff ff    	je     0x409511
409667:	e8 72 da ff ff       	call   0x4070de
40966c:	c7 00 1c 00 00 00    	movl   $0x1c,(%eax)
409672:	e8 70 da ff ff       	call   0x4070e7
409677:	89 38                	mov    %edi,(%eax)
409679:	eb d2                	jmp    0x40964d
40967b:	2b 45 f0             	sub    -0x10(%ebp),%eax
40967e:	5f                   	pop    %edi
40967f:	5e                   	pop    %esi
409680:	5b                   	pop    %ebx
409681:	c9                   	leave
409682:	c3                   	ret
409683:	ff 05 f0 17 41 00    	incl   0x4117f0
409689:	68 00 10 00 00       	push   $0x1000
40968e:	e8 fa dc ff ff       	call   0x40738d
409693:	59                   	pop    %ecx
409694:	8b 4c 24 04          	mov    0x4(%esp),%ecx
409698:	85 c0                	test   %eax,%eax
40969a:	89 41 08             	mov    %eax,0x8(%ecx)
40969d:	74 0d                	je     0x4096ac
40969f:	83 49 0c 08          	orl    $0x8,0xc(%ecx)
4096a3:	c7 41 18 00 10 00 00 	movl   $0x1000,0x18(%ecx)
4096aa:	eb 11                	jmp    0x4096bd
4096ac:	83 49 0c 04          	orl    $0x4,0xc(%ecx)
4096b0:	8d 41 14             	lea    0x14(%ecx),%eax
4096b3:	89 41 08             	mov    %eax,0x8(%ecx)
4096b6:	c7 41 18 02 00 00 00 	movl   $0x2,0x18(%ecx)
4096bd:	8b 41 08             	mov    0x8(%ecx),%eax
4096c0:	83 61 04 00          	andl   $0x0,0x4(%ecx)
4096c4:	89 01                	mov    %eax,(%ecx)
4096c6:	c3                   	ret
4096c7:	56                   	push   %esi
4096c8:	8b 74 24 08          	mov    0x8(%esp),%esi
4096cc:	8b 46 0c             	mov    0xc(%esi),%eax
4096cf:	a8 83                	test   $0x83,%al
4096d1:	0f 84 c7 00 00 00    	je     0x40979e
4096d7:	a8 40                	test   $0x40,%al
4096d9:	0f 85 bf 00 00 00    	jne    0x40979e
4096df:	a8 02                	test   $0x2,%al
4096e1:	74 0a                	je     0x4096ed
4096e3:	0c 20                	or     $0x20,%al
4096e5:	89 46 0c             	mov    %eax,0xc(%esi)
4096e8:	e9 b1 00 00 00       	jmp    0x40979e
4096ed:	0c 01                	or     $0x1,%al
4096ef:	66 a9 0c 01          	test   $0x10c,%ax
4096f3:	89 46 0c             	mov    %eax,0xc(%esi)
4096f6:	75 09                	jne    0x409701
4096f8:	56                   	push   %esi
4096f9:	e8 85 ff ff ff       	call   0x409683
4096fe:	59                   	pop    %ecx
4096ff:	eb 05                	jmp    0x409706
409701:	8b 46 08             	mov    0x8(%esi),%eax
409704:	89 06                	mov    %eax,(%esi)
409706:	ff 76 18             	push   0x18(%esi)
409709:	ff 76 08             	push   0x8(%esi)
40970c:	ff 76 10             	push   0x10(%esi)
40970f:	e8 12 22 00 00       	call   0x40b926
409714:	83 c4 0c             	add    $0xc,%esp
409717:	89 46 04             	mov    %eax,0x4(%esi)
40971a:	85 c0                	test   %eax,%eax
40971c:	74 6f                	je     0x40978d
40971e:	83 f8 ff             	cmp    $0xffffffff,%eax
409721:	74 6a                	je     0x40978d
409723:	8b 56 0c             	mov    0xc(%esi),%edx
409726:	f6 c2 82             	test   $0x82,%dl
409729:	75 37                	jne    0x409762
40972b:	8b 4e 10             	mov    0x10(%esi),%ecx
40972e:	57                   	push   %edi
40972f:	83 f9 ff             	cmp    $0xffffffff,%ecx
409732:	74 17                	je     0x40974b
409734:	8b f9                	mov    %ecx,%edi
409736:	c1 ff 05             	sar    $0x5,%edi
409739:	83 e1 1f             	and    $0x1f,%ecx
40973c:	8b 3c bd c0 1d 41 00 	mov    0x411dc0(,%edi,4),%edi
409743:	8d 0c c9             	lea    (%ecx,%ecx,8),%ecx
409746:	8d 3c 8f             	lea    (%edi,%ecx,4),%edi
409749:	eb 05                	jmp    0x409750
40974b:	bf 08 0e 41 00       	mov    $0x410e08,%edi
409750:	8a 4f 04             	mov    0x4(%edi),%cl
409753:	5f                   	pop    %edi
409754:	80 e1 82             	and    $0x82,%cl
409757:	80 f9 82             	cmp    $0x82,%cl
40975a:	75 06                	jne    0x409762
40975c:	80 ce 20             	or     $0x20,%dh
40975f:	89 56 0c             	mov    %edx,0xc(%esi)
409762:	81 7e 18 00 02 00 00 	cmpl   $0x200,0x18(%esi)
409769:	75 14                	jne    0x40977f
40976b:	8b 4e 0c             	mov    0xc(%esi),%ecx
40976e:	f6 c1 08             	test   $0x8,%cl
409771:	74 0c                	je     0x40977f
409773:	f6 c5 04             	test   $0x4,%ch
409776:	75 07                	jne    0x40977f
409778:	c7 46 18 00 10 00 00 	movl   $0x1000,0x18(%esi)
40977f:	8b 0e                	mov    (%esi),%ecx
409781:	48                   	dec    %eax
409782:	89 46 04             	mov    %eax,0x4(%esi)
409785:	0f b6 01             	movzbl (%ecx),%eax
409788:	41                   	inc    %ecx
409789:	89 0e                	mov    %ecx,(%esi)
40978b:	5e                   	pop    %esi
40978c:	c3                   	ret
40978d:	f7 d8                	neg    %eax
40978f:	1b c0                	sbb    %eax,%eax
409791:	83 e0 10             	and    $0x10,%eax
409794:	83 c0 10             	add    $0x10,%eax
409797:	09 46 0c             	or     %eax,0xc(%esi)
40979a:	83 66 04 00          	andl   $0x0,0x4(%esi)
40979e:	83 c8 ff             	or     $0xffffffff,%eax
4097a1:	5e                   	pop    %esi
4097a2:	c3                   	ret
4097a3:	53                   	push   %ebx
4097a4:	56                   	push   %esi
4097a5:	8b 74 24 0c          	mov    0xc(%esp),%esi
4097a9:	57                   	push   %edi
4097aa:	56                   	push   %esi
4097ab:	e8 16 c1 ff ff       	call   0x4058c6
4097b0:	56                   	push   %esi
4097b1:	e8 15 00 00 00       	call   0x4097cb
4097b6:	56                   	push   %esi
4097b7:	8b f8                	mov    %eax,%edi
4097b9:	8b da                	mov    %edx,%ebx
4097bb:	e8 58 c1 ff ff       	call   0x405918
4097c0:	83 c4 0c             	add    $0xc,%esp
4097c3:	8b c7                	mov    %edi,%eax
4097c5:	8b d3                	mov    %ebx,%edx
4097c7:	5f                   	pop    %edi
4097c8:	5e                   	pop    %esi
4097c9:	5b                   	pop    %ebx
4097ca:	c3                   	ret
4097cb:	55                   	push   %ebp
4097cc:	8b ec                	mov    %esp,%ebp
4097ce:	83 ec 10             	sub    $0x10,%esp
4097d1:	53                   	push   %ebx
4097d2:	56                   	push   %esi
4097d3:	57                   	push   %edi
4097d4:	8b 7d 08             	mov    0x8(%ebp),%edi
4097d7:	33 c0                	xor    %eax,%eax
4097d9:	8b 77 10             	mov    0x10(%edi),%esi
4097dc:	39 47 04             	cmp    %eax,0x4(%edi)
4097df:	89 75 f8             	mov    %esi,-0x8(%ebp)
4097e2:	7d 03                	jge    0x4097e7
4097e4:	89 47 04             	mov    %eax,0x4(%edi)
4097e7:	6a 01                	push   $0x1
4097e9:	50                   	push   %eax
4097ea:	50                   	push   %eax
4097eb:	56                   	push   %esi
4097ec:	e8 73 23 00 00       	call   0x40bb64
4097f1:	8b ca                	mov    %edx,%ecx
4097f3:	83 c4 10             	add    $0x10,%esp
4097f6:	8b d8                	mov    %eax,%ebx
4097f8:	89 4d f4             	mov    %ecx,-0xc(%ebp)
4097fb:	85 c9                	test   %ecx,%ecx
4097fd:	89 5d f0             	mov    %ebx,-0x10(%ebp)
409800:	7f 06                	jg     0x409808
409802:	7c 6d                	jl     0x409871
409804:	85 db                	test   %ebx,%ebx
409806:	72 69                	jb     0x409871
409808:	66 f7 47 0c 08 01    	testw  $0x108,0xc(%edi)
40980e:	75 11                	jne    0x409821
409810:	8b 47 04             	mov    0x4(%edi),%eax
409813:	99                   	cltd
409814:	2b d8                	sub    %eax,%ebx
409816:	1b ca                	sbb    %edx,%ecx
409818:	8b c3                	mov    %ebx,%eax
40981a:	8b d1                	mov    %ecx,%edx
40981c:	e9 35 01 00 00       	jmp    0x409956
409821:	8b 07                	mov    (%edi),%eax
409823:	8b 57 08             	mov    0x8(%edi),%edx
409826:	8b c8                	mov    %eax,%ecx
409828:	2b ca                	sub    %edx,%ecx
40982a:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40982d:	8b 4f 0c             	mov    0xc(%edi),%ecx
409830:	f6 c1 03             	test   $0x3,%cl
409833:	74 2c                	je     0x409861
409835:	8b de                	mov    %esi,%ebx
409837:	8b ce                	mov    %esi,%ecx
409839:	c1 fb 05             	sar    $0x5,%ebx
40983c:	83 e1 1f             	and    $0x1f,%ecx
40983f:	8b 1c 9d c0 1d 41 00 	mov    0x411dc0(,%ebx,4),%ebx
409846:	8d 0c c9             	lea    (%ecx,%ecx,8),%ecx
409849:	f6 44 8b 04 80       	testb  $0x80,0x4(%ebx,%ecx,4)
40984e:	74 2b                	je     0x40987b
409850:	8b ca                	mov    %edx,%ecx
409852:	3b c8                	cmp    %eax,%ecx
409854:	73 25                	jae    0x40987b
409856:	80 39 0a             	cmpb   $0xa,(%ecx)
409859:	75 03                	jne    0x40985e
40985b:	ff 45 fc             	incl   -0x4(%ebp)
40985e:	41                   	inc    %ecx
40985f:	eb f1                	jmp    0x409852
409861:	f6 c1 80             	test   $0x80,%cl
409864:	75 18                	jne    0x40987e
409866:	e8 73 d8 ff ff       	call   0x4070de
40986b:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
409871:	83 ca ff             	or     $0xffffffff,%edx
409874:	8b c2                	mov    %edx,%eax
409876:	e9 db 00 00 00       	jmp    0x409956
40987b:	8b 5d f0             	mov    -0x10(%ebp),%ebx
40987e:	0b 5d f4             	or     -0xc(%ebp),%ebx
409881:	75 0a                	jne    0x40988d
409883:	8b 45 fc             	mov    -0x4(%ebp),%eax
409886:	33 d2                	xor    %edx,%edx
409888:	e9 c9 00 00 00       	jmp    0x409956
40988d:	f6 47 0c 01          	testb  $0x1,0xc(%edi)
409891:	0f 84 b4 00 00 00    	je     0x40994b
409897:	8b 4f 04             	mov    0x4(%edi),%ecx
40989a:	85 c9                	test   %ecx,%ecx
40989c:	75 08                	jne    0x4098a6
40989e:	21 4d fc             	and    %ecx,-0x4(%ebp)
4098a1:	e9 a5 00 00 00       	jmp    0x40994b
4098a6:	2b c2                	sub    %edx,%eax
4098a8:	03 c1                	add    %ecx,%eax
4098aa:	89 45 08             	mov    %eax,0x8(%ebp)
4098ad:	8b c6                	mov    %esi,%eax
4098af:	c1 f8 05             	sar    $0x5,%eax
4098b2:	8d 1c 85 c0 1d 41 00 	lea    0x411dc0(,%eax,4),%ebx
4098b9:	8b c6                	mov    %esi,%eax
4098bb:	83 e0 1f             	and    $0x1f,%eax
4098be:	8d 34 c0             	lea    (%eax,%eax,8),%esi
4098c1:	8b 03                	mov    (%ebx),%eax
4098c3:	c1 e6 02             	shl    $0x2,%esi