409657:	83 ff 06             	cmp    $0x6,%edi
40965a:	74 65                	je     0x4096c1
40965c:	6a 10                	push   $0x10
40965e:	6a 40                	push   $0x40
409660:	ff 15 64 f0 40 00    	call   *0x40f064
409666:	89 85 f0 fd ff ff    	mov    %eax,-0x210(%ebp)
40966c:	85 c0                	test   %eax,%eax
40966e:	0f 84 c7 fb ff ff    	je     0x40923b
409674:	50                   	push   %eax
409675:	ff b5 f4 fd ff ff    	push   -0x20c(%ebp)
40967b:	ff 15 00 f0 40 00    	call   *0x40f000
409681:	85 c0                	test   %eax,%eax
409683:	0f 85 45 04 00 00    	jne    0x409ace
409689:	8b 8d f4 fd ff ff    	mov    -0x20c(%ebp),%ecx
40968f:	81 85 e0 fd ff ff ff 	addl   $0xffff,-0x220(%ebp)
409696:	ff 00 00
409699:	8d 51 02             	lea    0x2(%ecx),%edx
40969c:	66 8b 01             	mov    (%ecx),%ax
40969f:	83 c1 02             	add    $0x2,%ecx
4096a2:	66 3b 85 c8 fd ff ff 	cmp    -0x238(%ebp),%ax
4096a9:	75 f1                	jne    0x40969c
4096ab:	8b 85 f4 fd ff ff    	mov    -0x20c(%ebp),%eax
4096b1:	2b ca                	sub    %edx,%ecx
4096b3:	d1 f9                	sar    $1,%ecx
4096b5:	8d 04 48             	lea    (%eax,%ecx,2),%eax
4096b8:	83 c0 02             	add    $0x2,%eax
4096bb:	89 85 f4 fd ff ff    	mov    %eax,-0x20c(%ebp)
4096c1:	33 c9                	xor    %ecx,%ecx
4096c3:	89 8d c0 fd ff ff    	mov    %ecx,-0x240(%ebp)
4096c9:	66 3b 8d e0 fd ff ff 	cmp    -0x220(%ebp),%cx
4096d0:	0f 83 7f 03 00 00    	jae    0x409a55
4096d6:	33 c9                	xor    %ecx,%ecx
4096d8:	89 8d e4 fd ff ff    	mov    %ecx,-0x21c(%ebp)
4096de:	8b c8                	mov    %eax,%ecx
4096e0:	8d 51 02             	lea    0x2(%ecx),%edx
4096e3:	66 8b 01             	mov    (%ecx),%ax
4096e6:	83 c1 02             	add    $0x2,%ecx
4096e9:	66 3b 85 c8 fd ff ff 	cmp    -0x238(%ebp),%ax
4096f0:	75 f1                	jne    0x4096e3
4096f2:	2b ca                	sub    %edx,%ecx
4096f4:	8b 95 ec fd ff ff    	mov    -0x214(%ebp),%edx
4096fa:	d1 f9                	sar    $1,%ecx
4096fc:	8d 04 4d 02 00 00 00 	lea    0x2(,%ecx,2),%eax
409703:	89 85 c4 fd ff ff    	mov    %eax,-0x23c(%ebp)
409709:	8b 85 c0 fd ff ff    	mov    -0x240(%ebp),%eax
40970f:	0f b7 c0             	movzwl %ax,%eax
409712:	6b c8 0c             	imul   $0xc,%eax,%ecx
409715:	8b 85 e8 fd ff ff    	mov    -0x218(%ebp),%eax
40971b:	89 8d d0 fd ff ff    	mov    %ecx,-0x230(%ebp)
409721:	89 04 11             	mov    %eax,(%ecx,%edx,1)
409724:	83 f8 01             	cmp    $0x1,%eax
409727:	0f 85 c9 00 00 00    	jne    0x4097f6
40972d:	8b 85 c4 fd ff ff    	mov    -0x23c(%ebp),%eax
409733:	8d 8d e4 fd ff ff    	lea    -0x21c(%ebp),%ecx
409739:	33 d2                	xor    %edx,%edx
40973b:	d1 e8                	shr    $1,%eax
40973d:	52                   	push   %edx
40973e:	52                   	push   %edx
40973f:	51                   	push   %ecx
409740:	52                   	push   %edx
409741:	48                   	dec    %eax
409742:	6a 08                	push   $0x8
409744:	50                   	push   %eax
409745:	ff b5 f4 fd ff ff    	push   -0x20c(%ebp)
40974b:	89 85 d8 fd ff ff    	mov    %eax,-0x228(%ebp)
409751:	ff 15 00 00 41 00    	call   *0x410000
409757:	85 c0                	test   %eax,%eax
409759:	0f 84 7e 03 00 00    	je     0x409add
40975f:	ff b5 e4 fd ff ff    	push   -0x21c(%ebp)
409765:	6a 40                	push   $0x40
409767:	ff 15 64 f0 40 00    	call   *0x40f064
40976d:	8b f8                	mov    %eax,%edi
40976f:	85 ff                	test   %edi,%edi
409771:	0f 84 c4 fa ff ff    	je     0x40923b
409777:	33 c0                	xor    %eax,%eax
409779:	50                   	push   %eax
40977a:	50                   	push   %eax
40977b:	8d 85 e4 fd ff ff    	lea    -0x21c(%ebp),%eax
409781:	50                   	push   %eax
409782:	57                   	push   %edi
409783:	6a 08                	push   $0x8
409785:	ff b5 d8 fd ff ff    	push   -0x228(%ebp)
40978b:	ff b5 f4 fd ff ff    	push   -0x20c(%ebp)
409791:	ff 15 00 00 41 00    	call   *0x410000
409797:	85 c0                	test   %eax,%eax
409799:	0f 84 3e 03 00 00    	je     0x409add
40979f:	8b 8d d0 fd ff ff    	mov    -0x230(%ebp),%ecx
4097a5:	8b 95 ec fd ff ff    	mov    -0x214(%ebp),%edx
4097ab:	8b 85 e4 fd ff ff    	mov    -0x21c(%ebp),%eax
4097b1:	89 7c 11 08          	mov    %edi,0x8(%ecx,%edx,1)
4097b5:	8b bd f8 fd ff ff    	mov    -0x208(%ebp),%edi
4097bb:	89 44 11 04          	mov    %eax,0x4(%ecx,%edx,1)
4097bf:	8b 85 f4 fd ff ff    	mov    -0x20c(%ebp),%eax
4097c5:	8b 95 ec fd ff ff    	mov    -0x214(%ebp),%edx
4097cb:	03 85 c4 fd ff ff    	add    -0x23c(%ebp),%eax
4097d1:	8b 8d c0 fd ff ff    	mov    -0x240(%ebp),%ecx
4097d7:	41                   	inc    %ecx
4097d8:	89 85 f4 fd ff ff    	mov    %eax,-0x20c(%ebp)
4097de:	89 8d c0 fd ff ff    	mov    %ecx,-0x240(%ebp)
4097e4:	66 3b 8d e0 fd ff ff 	cmp    -0x220(%ebp),%cx
4097eb:	0f 82 e5 fe ff ff    	jb     0x4096d6
4097f1:	e9 65 02 00 00       	jmp    0x409a5b
4097f6:	83 f8 02             	cmp    $0x2,%eax
4097f9:	0f 85 08 01 00 00    	jne    0x409907
4097ff:	8b 85 c4 fd ff ff    	mov    -0x23c(%ebp),%eax
409805:	89 44 11 04          	mov    %eax,0x4(%ecx,%edx,1)
409809:	8b 85 f4 fd ff ff    	mov    -0x20c(%ebp),%eax
40980f:	89 44 11 08          	mov    %eax,0x8(%ecx,%edx,1)
409813:	83 ff 04             	cmp    $0x4,%edi
409816:	75 ad                	jne    0x4097c5
409818:	8b c8                	mov    %eax,%ecx
40981a:	8b f8                	mov    %eax,%edi
40981c:	8d 51 02             	lea    0x2(%ecx),%edx
40981f:	66 8b 01             	mov    (%ecx),%ax
409822:	83 c1 02             	add    $0x2,%ecx
409825:	66 3b 85 c8 fd ff ff 	cmp    -0x238(%ebp),%ax
40982c:	75 f1                	jne    0x40981f
40982e:	2b ca                	sub    %edx,%ecx
409830:	d1 f9                	sar    $1,%ecx
409832:	0f 84 8e 00 00 00    	je     0x4098c6
409838:	8b 85 f4 fd ff ff    	mov    -0x20c(%ebp),%eax
40983e:	6a 3b                	push   $0x3b
409840:	5a                   	pop    %edx
409841:	66 39 54 48 fe       	cmp    %dx,-0x2(%eax,%ecx,2)
409846:	74 7e                	je     0x4098c6
409848:	8d 85 b0 fd ff ff    	lea    -0x250(%ebp),%eax
40984e:	50                   	push   %eax
40984f:	6a 02                	push   $0x2
409851:	5f                   	pop    %edi
409852:	8b d7                	mov    %edi,%edx
409854:	e8 22 31 00 00       	call   0x40c97b
409859:	85 c0                	test   %eax,%eax
40985b:	0f 88 ad 02 00 00    	js     0x409b0e
409861:	8b 85 b0 fd ff ff    	mov    -0x250(%ebp),%eax
409867:	33 c9                	xor    %ecx,%ecx
409869:	f7 e7                	mul    %edi
40986b:	89 85 d8 fd ff ff    	mov    %eax,-0x228(%ebp)
409871:	3b d1                	cmp    %ecx,%edx
409873:	0f 87 84 02 00 00    	ja     0x409afd
409879:	72 09                	jb     0x409884
40987b:	83 f8 ff             	cmp    $0xffffffff,%eax
40987e:	0f 87 79 02 00 00    	ja     0x409afd
409884:	50                   	push   %eax
409885:	6a 40                	push   $0x40
409887:	ff 15 64 f0 40 00    	call   *0x40f064
40988d:	8b f8                	mov    %eax,%edi
40988f:	85 ff                	test   %edi,%edi
409891:	0f 84 56 02 00 00    	je     0x409aed
409897:	ff b5 f4 fd ff ff    	push   -0x20c(%ebp)
40989d:	8b 95 b0 fd ff ff    	mov    -0x250(%ebp),%edx
4098a3:	8b cf                	mov    %edi,%ecx
4098a5:	e8 c6 2f 00 00       	call   0x40c870
4098aa:	8b 8d d0 fd ff ff    	mov    -0x230(%ebp),%ecx
4098b0:	8b 95 ec fd ff ff    	mov    -0x214(%ebp),%edx
4098b6:	8b 85 d8 fd ff ff    	mov    -0x228(%ebp),%eax
4098bc:	89 44 11 04          	mov    %eax,0x4(%ecx,%edx,1)
4098c0:	89 7c 11 08          	mov    %edi,0x8(%ecx,%edx,1)
4098c4:	eb 06                	jmp    0x4098cc
4098c6:	8b 95 ec fd ff ff    	mov    -0x214(%ebp),%edx
4098cc:	0f b7 07             	movzwl (%edi),%eax
4098cf:	66 85 c0             	test   %ax,%ax
4098d2:	0f 84 f0 00 00 00    	je     0x4099c8
4098d8:	6a 02                	push   $0x2
4098da:	5b                   	pop    %ebx
4098db:	6a 3b                	push   $0x3b
4098dd:	8b c8                	mov    %eax,%ecx
4098df:	5e                   	pop    %esi
4098e0:	66 3b ce             	cmp    %si,%cx
4098e3:	75 05                	jne    0x4098ea
4098e5:	33 c0                	xor    %eax,%eax
4098e7:	66 89 07             	mov    %ax,(%edi)
4098ea:	03 fb                	add    %ebx,%edi
4098ec:	0f b7 07             	movzwl (%edi),%eax
4098ef:	8b c8                	mov    %eax,%ecx
4098f1:	66 85 c0             	test   %ax,%ax
4098f4:	75 ea                	jne    0x4098e0
4098f6:	8b b5 d4 fd ff ff    	mov    -0x22c(%ebp),%esi
4098fc:	8b 9d bc fd ff ff    	mov    -0x244(%ebp),%ebx
409902:	e9 c1 00 00 00       	jmp    0x4099c8
409907:	83 f8 03             	cmp    $0x3,%eax
40990a:	0f 85 c9 00 00 00    	jne    0x4099d9
409910:	8b b5 f4 fd ff ff    	mov    -0x20c(%ebp),%esi
409916:	33 ff                	xor    %edi,%edi
409918:	8b d6                	mov    %esi,%edx
40991a:	89 bd 98 fd ff ff    	mov    %edi,-0x268(%ebp)
409920:	89 bd 9c fd ff ff    	mov    %edi,-0x264(%ebp)
409926:	8d 4a 02             	lea    0x2(%edx),%ecx
409929:	66 8b 02             	mov    (%edx),%ax
40992c:	83 c2 02             	add    $0x2,%edx
40992f:	66 3b c7             	cmp    %di,%ax
409932:	75 f5                	jne    0x409929
409934:	8d 85 98 fd ff ff    	lea    -0x268(%ebp),%eax
40993a:	2b d1                	sub    %ecx,%edx
40993c:	50                   	push   %eax
40993d:	51                   	push   %ecx
40993e:	d1 fa                	sar    $1,%edx
409940:	8b ce                	mov    %esi,%ecx
409942:	e8 aa 1f 00 00       	call   0x40b8f1
409947:	8b f0                	mov    %eax,%esi
409949:	89 b5 d4 fd ff ff    	mov    %esi,-0x22c(%ebp)
40994f:	85 f6                	test   %esi,%esi
409951:	0f 85 cb 01 00 00    	jne    0x409b22
409957:	39 bd 9c fd ff ff    	cmp    %edi,-0x264(%ebp)
40995d:	0f 87 bc 01 00 00    	ja     0x409b1f
409963:	8b 85 98 fd ff ff    	mov    -0x268(%ebp),%eax
409969:	72 0b                	jb     0x409976
40996b:	3d ff 00 00 00       	cmp    $0xff,%eax
409970:	0f 87 a9 01 00 00    	ja     0x409b1f
409976:	88 85 df fd ff ff    	mov    %al,-0x221(%ebp)
40997c:	33 c0                	xor    %eax,%eax
40997e:	40                   	inc    %eax
40997f:	50                   	push   %eax
409980:	6a 40                	push   $0x40
409982:	89 85 e4 fd ff ff    	mov    %eax,-0x21c(%ebp)
409988:	ff 15 64 f0 40 00    	call   *0x40f064
40998e:	8b f8                	mov    %eax,%edi
409990:	85 ff                	test   %edi,%edi
409992:	0f 84 a3 f8 ff ff    	je     0x40923b
409998:	8d 85 df fd ff ff    	lea    -0x221(%ebp),%eax
40999e:	ff b5 e4 fd ff ff    	push   -0x21c(%ebp)
4099a4:	50                   	push   %eax
4099a5:	57                   	push   %edi
4099a6:	e8 58 ce ff ff       	call   0x406803
4099ab:	8b 8d d0 fd ff ff    	mov    -0x230(%ebp),%ecx
4099b1:	83 c4 0c             	add    $0xc,%esp
4099b4:	8b 95 ec fd ff ff    	mov    -0x214(%ebp),%edx
4099ba:	8b 85 e4 fd ff ff    	mov    -0x21c(%ebp),%eax
4099c0:	89 44 11 04          	mov    %eax,0x4(%ecx,%edx,1)
4099c4:	89 7c 11 08          	mov    %edi,0x8(%ecx,%edx,1)
4099c8:	8b bd f8 fd ff ff    	mov    -0x208(%ebp),%edi
4099ce:	8b 85 f4 fd ff ff    	mov    -0x20c(%ebp),%eax
4099d4:	e9 f2 fd ff ff       	jmp    0x4097cb
4099d9:	83 f8 04             	cmp    $0x4,%eax
4099dc:	74 09                	je     0x4099e7
4099de:	83 f8 05             	cmp    $0x5,%eax
4099e1:	0f 85 d8 fd ff ff    	jne    0x4097bf
4099e7:	8b b5 f4 fd ff ff    	mov    -0x20c(%ebp),%esi
4099ed:	33 ff                	xor    %edi,%edi
4099ef:	8b d6                	mov    %esi,%edx
4099f1:	89 bd 90 fd ff ff    	mov    %edi,-0x270(%ebp)
4099f7:	89 bd 94 fd ff ff    	mov    %edi,-0x26c(%ebp)
4099fd:	8d 4a 02             	lea    0x2(%edx),%ecx
409a00:	66 8b 02             	mov    (%edx),%ax
409a03:	83 c2 02             	add    $0x2,%edx
409a06:	66 3b c7             	cmp    %di,%ax
409a09:	75 f5                	jne    0x409a00
409a0b:	8d 85 90 fd ff ff    	lea    -0x270(%ebp),%eax
409a11:	2b d1                	sub    %ecx,%edx
409a13:	50                   	push   %eax
409a14:	51                   	push   %ecx
409a15:	d1 fa                	sar    $1,%edx
409a17:	8b ce                	mov    %esi,%ecx
409a19:	e8 d3 1e 00 00       	call   0x40b8f1
409a1e:	8b f0                	mov    %eax,%esi
409a20:	89 b5 d4 fd ff ff    	mov    %esi,-0x22c(%ebp)
409a26:	85 f6                	test   %esi,%esi
409a28:	0f 85 f4 00 00 00    	jne    0x409b22
409a2e:	6a 08                	push   $0x8
409a30:	58                   	pop    %eax
409a31:	50                   	push   %eax
409a32:	6a 40                	push   $0x40
409a34:	89 85 e4 fd ff ff    	mov    %eax,-0x21c(%ebp)
409a3a:	ff 15 64 f0 40 00    	call   *0x40f064
409a40:	8b f8                	mov    %eax,%edi
409a42:	85 ff                	test   %edi,%edi
409a44:	0f 84 f1 f7 ff ff    	je     0x40923b
409a4a:	8d 85 90 fd ff ff    	lea    -0x270(%ebp),%eax
409a50:	e9 49 ff ff ff       	jmp    0x40999e
409a55:	8b 95 ec fd ff ff    	mov    -0x214(%ebp),%edx
409a5b:	8b bd a0 fd ff ff    	mov    -0x260(%ebp),%edi
409a61:	8b 85 e0 fd ff ff    	mov    -0x220(%ebp),%eax
409a67:	6b cb 14             	imul   $0x14,%ebx,%ecx
409a6a:	0f b7 c0             	movzwl %ax,%eax
409a6d:	89 44 39 18          	mov    %eax,0x18(%ecx,%edi,1)
409a71:	89 54 39 1c          	mov    %edx,0x1c(%ecx,%edi,1)
409a75:	8b bd ac fd ff ff    	mov    -0x254(%ebp),%edi
409a7b:	6b c3 14             	imul   $0x14,%ebx,%eax
409a7e:	6b d3 14             	imul   $0x14,%ebx,%edx
409a81:	6b cb 14             	imul   $0x14,%ebx,%ecx
409a84:	8b 9d f8 fd ff ff    	mov    -0x208(%ebp),%ebx
409a8a:	89 1c 38             	mov    %ebx,(%eax,%edi,1)
409a8d:	8b df                	mov    %edi,%ebx
409a8f:	8b 85 a8 fd ff ff    	mov    -0x258(%ebp),%eax
409a95:	8b bd cc fd ff ff    	mov    -0x234(%ebp),%edi
409a9b:	89 44 1a 04          	mov    %eax,0x4(%edx,%ebx,1)
409a9f:	8b 85 f0 fd ff ff    	mov    -0x210(%ebp),%eax
409aa5:	89 44 19 08          	mov    %eax,0x8(%ecx,%ebx,1)
409aa9:	8b 85 a4 fd ff ff    	mov    -0x25c(%ebp),%eax
409aaf:	40                   	inc    %eax
409ab0:	0f b7 d8             	movzwl %ax,%ebx
409ab3:	89 85 a4 fd ff ff    	mov    %eax,-0x25c(%ebp)
409ab9:	89 9d bc fd ff ff    	mov    %ebx,-0x244(%ebp)
409abf:	3b 9d b8 fd ff ff    	cmp    -0x248(%ebp),%ebx
409ac5:	73 65                	jae    0x409b2c
409ac7:	33 c9                	xor    %ecx,%ecx
409ac9:	e9 b2 f7 ff ff       	jmp    0x409280
409ace:	be 67 06 00 00       	mov    $0x667,%esi
409ad3:	b9 88 00 00 00       	mov    $0x88,%ecx
409ad8:	e9 d0 00 00 00       	jmp    0x409bad
409add:	ff 15 40 f0 40 00    	call   *0x40f040
409ae3:	b9 a0 50 40 00       	mov    $0x4050a0,%ecx
409ae8:	e9 59 f7 ff ff       	jmp    0x409246
409aed:	ff 15 40 f0 40 00    	call   *0x40f040
409af3:	b9 40 51 40 00       	mov    $0x405140,%ecx
409af8:	e9 49 f7 ff ff       	jmp    0x409246
409afd:	ba 16 02 00 00       	mov    $0x216,%edx
409b02:	b9 28 51 40 00       	mov    $0x405128,%ecx
409b07:	8b f2                	mov    %edx,%esi
409b09:	e9 3c f7 ff ff       	jmp    0x40924a
409b0e:	ba 16 02 00 00       	mov    $0x216,%edx
409b13:	b9 14 51 40 00       	mov    $0x405114,%ecx
409b18:	8b f2                	mov    %edx,%esi
409b1a:	e9 2b f7 ff ff       	jmp    0x40924a
409b1f:	6a 0d                	push   $0xd
409b21:	5e                   	pop    %esi
409b22:	b9 ab 00 00 00       	mov    $0xab,%ecx
409b27:	e9 81 00 00 00       	jmp    0x409bad
409b2c:	8b 9d a0 fd ff ff    	mov    -0x260(%ebp),%ebx
409b32:	53                   	push   %ebx
409b33:	8b 9d b4 fd ff ff    	mov    -0x24c(%ebp),%ebx
409b39:	6a 08                	push   $0x8
409b3b:	ff 33                	push   (%ebx)
409b3d:	ff 15 68 00 41 00    	call   *0x410068
409b43:	85 c0                	test   %eax,%eax
409b45:	75 21                	jne    0x409b68
409b47:	ff 15 40 f0 40 00    	call   *0x40f040
409b4d:	8b f0                	mov    %eax,%esi
409b4f:	b9 3c 45 40 00       	mov    $0x40453c,%ecx
409b54:	8b d6                	mov    %esi,%edx
409b56:	e8 25 ee ff ff       	call   0x408980
409b5b:	81 fe b7 00 00 00    	cmp    $0xb7,%esi
409b61:	75 51                	jne    0x409bb4
409b63:	8d 4e f0             	lea    -0x10(%esi),%ecx
409b66:	eb 45                	jmp    0x409bad
409b68:	6a 64                	push   $0x64
409b6a:	8d 95 d8 fd ff ff    	lea    -0x228(%ebp),%edx
409b70:	c7 85 d8 fd ff ff 3c 	movl   $0x40453c,-0x228(%ebp)
409b77:	45 40 00
409b7a:	59                   	pop    %ecx
409b7b:	e8 2f 0a 00 00       	call   0x40a5af
409b80:	8d 85 b4 fd ff ff    	lea    -0x24c(%ebp),%eax
409b86:	50                   	push   %eax
409b87:	68 00 02 00 00       	push   $0x200
409b8c:	8d 85 fc fd ff ff    	lea    -0x204(%ebp),%eax
409b92:	50                   	push   %eax
409b93:	ff 33                	push   (%ebx)
409b95:	ff 15 60 00 41 00    	call   *0x410060
409b9b:	85 c0                	test   %eax,%eax
409b9d:	74 15                	je     0x409bb4
409b9f:	83 bd 00 fe ff ff 04 	cmpl   $0x4,-0x200(%ebp)