40f499:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
40f49d:	7c 06                	jl     0x40f4a5
40f49f:	83 7d 10 02          	cmpl   $0x2,0x10(%ebp)
40f4a3:	7e 0a                	jle    0x40f4af
40f4a5:	b8 fe ff ff ff       	mov    $0xfffffffe,%eax
40f4aa:	e9 3d 01 00 00       	jmp    0x40f5ec
40f4af:	b9 b8 16 00 00       	mov    $0x16b8,%ecx
40f4b4:	ba 01 00 00 00       	mov    $0x1,%edx
40f4b9:	8b 46 28             	mov    0x28(%esi),%eax
40f4bc:	ff 56 20             	call   *0x20(%esi)
40f4bf:	8b d8                	mov    %eax,%ebx
40f4c1:	85 db                	test   %ebx,%ebx
40f4c3:	75 0a                	jne    0x40f4cf
40f4c5:	b8 fc ff ff ff       	mov    $0xfffffffc,%eax
40f4ca:	e9 1d 01 00 00       	jmp    0x40f5ec
40f4cf:	89 5e 1c             	mov    %ebx,0x1c(%esi)
40f4d2:	89 33                	mov    %esi,(%ebx)
40f4d4:	8b 55 f4             	mov    -0xc(%ebp),%edx
40f4d7:	89 53 18             	mov    %edx,0x18(%ebx)
40f4da:	ba 01 00 00 00       	mov    $0x1,%edx
40f4df:	8b 45 18             	mov    0x18(%ebp),%eax
40f4e2:	8b c8                	mov    %eax,%ecx
40f4e4:	89 43 28             	mov    %eax,0x28(%ebx)
40f4e7:	d3 e2                	shl    %cl,%edx
40f4e9:	89 53 24             	mov    %edx,0x24(%ebx)
40f4ec:	4a                   	dec    %edx
40f4ed:	89 53 2c             	mov    %edx,0x2c(%ebx)
40f4f0:	ba 01 00 00 00       	mov    $0x1,%edx
40f4f5:	8b 45 14             	mov    0x14(%ebp),%eax
40f4f8:	83 c0 07             	add    $0x7,%eax
40f4fb:	8b c8                	mov    %eax,%ecx
40f4fd:	89 43 48             	mov    %eax,0x48(%ebx)
40f500:	d3 e2                	shl    %cl,%edx
40f502:	89 53 44             	mov    %edx,0x44(%ebx)
40f505:	4a                   	dec    %edx
40f506:	89 53 4c             	mov    %edx,0x4c(%ebx)
40f509:	33 d2                	xor    %edx,%edx
40f50b:	8b 43 48             	mov    0x48(%ebx),%eax
40f50e:	b9 03 00 00 00       	mov    $0x3,%ecx
40f513:	83 c0 03             	add    $0x3,%eax
40f516:	48                   	dec    %eax
40f517:	f7 f1                	div    %ecx
40f519:	89 43 50             	mov    %eax,0x50(%ebx)
40f51c:	b9 02 00 00 00       	mov    $0x2,%ecx
40f521:	8b 46 28             	mov    0x28(%esi),%eax
40f524:	8b 53 24             	mov    0x24(%ebx),%edx
40f527:	ff 56 20             	call   *0x20(%esi)
40f52a:	89 43 30             	mov    %eax,0x30(%ebx)
40f52d:	b9 02 00 00 00       	mov    $0x2,%ecx
40f532:	8b 53 24             	mov    0x24(%ebx),%edx
40f535:	8b 46 28             	mov    0x28(%esi),%eax
40f538:	ff 56 20             	call   *0x20(%esi)
40f53b:	89 43 38             	mov    %eax,0x38(%ebx)
40f53e:	b9 02 00 00 00       	mov    $0x2,%ecx
40f543:	8b 53 44             	mov    0x44(%ebx),%edx
40f546:	8b 46 28             	mov    0x28(%esi),%eax
40f549:	ff 56 20             	call   *0x20(%esi)
40f54c:	89 43 3c             	mov    %eax,0x3c(%ebx)
40f54f:	8b 4d 14             	mov    0x14(%ebp),%ecx
40f552:	83 c1 06             	add    $0x6,%ecx
40f555:	b8 01 00 00 00       	mov    $0x1,%eax
40f55a:	d3 e0                	shl    %cl,%eax
40f55c:	89 83 94 16 00 00    	mov    %eax,0x1694(%ebx)
40f562:	b9 04 00 00 00       	mov    $0x4,%ecx
40f567:	8b d0                	mov    %eax,%edx
40f569:	8b 46 28             	mov    0x28(%esi),%eax
40f56c:	ff 56 20             	call   *0x20(%esi)
40f56f:	89 43 08             	mov    %eax,0x8(%ebx)
40f572:	8b 93 94 16 00 00    	mov    0x1694(%ebx),%edx
40f578:	c1 e2 02             	shl    $0x2,%edx
40f57b:	89 53 0c             	mov    %edx,0xc(%ebx)
40f57e:	83 7b 30 00          	cmpl   $0x0,0x30(%ebx)
40f582:	74 12                	je     0x40f596
40f584:	83 7b 38 00          	cmpl   $0x0,0x38(%ebx)
40f588:	74 0c                	je     0x40f596
40f58a:	83 7b 3c 00          	cmpl   $0x0,0x3c(%ebx)
40f58e:	74 06                	je     0x40f596
40f590:	83 7b 08 00          	cmpl   $0x0,0x8(%ebx)
40f594:	75 16                	jne    0x40f5ac
40f596:	a1 a8 64 42 00       	mov    0x4264a8,%eax
40f59b:	89 46 18             	mov    %eax,0x18(%esi)
40f59e:	8b c6                	mov    %esi,%eax
40f5a0:	e8 83 05 00 00       	call   0x40fb28
40f5a5:	b8 fc ff ff ff       	mov    $0xfffffffc,%eax
40f5aa:	eb 40                	jmp    0x40f5ec
40f5ac:	8b 93 94 16 00 00    	mov    0x1694(%ebx),%edx
40f5b2:	d1 ea                	shr    $1,%edx
40f5b4:	03 d2                	add    %edx,%edx
40f5b6:	03 c2                	add    %edx,%eax
40f5b8:	89 83 9c 16 00 00    	mov    %eax,0x169c(%ebx)
40f5be:	8b 8b 94 16 00 00    	mov    0x1694(%ebx),%ecx
40f5c4:	8d 0c 49             	lea    (%ecx,%ecx,2),%ecx
40f5c7:	03 4b 08             	add    0x8(%ebx),%ecx
40f5ca:	89 8b 90 16 00 00    	mov    %ecx,0x1690(%ebx)
40f5d0:	8b 45 fc             	mov    -0x4(%ebp),%eax
40f5d3:	89 43 7c             	mov    %eax,0x7c(%ebx)
40f5d6:	8b c6                	mov    %esi,%eax
40f5d8:	8b 55 10             	mov    0x10(%ebp),%edx
40f5db:	89 93 80 00 00 00    	mov    %edx,0x80(%ebx)
40f5e1:	8a 4d f8             	mov    -0x8(%ebp),%cl
40f5e4:	88 4b 1d             	mov    %cl,0x1d(%ebx)
40f5e7:	e8 fc 00 00 00       	call   0x40f6e8
40f5ec:	5e                   	pop    %esi
40f5ed:	5b                   	pop    %ebx
40f5ee:	8b e5                	mov    %ebp,%esp
40f5f0:	5d                   	pop    %ebp
40f5f1:	c2 14 00             	ret    $0x14
40f5f4:	53                   	push   %ebx
40f5f5:	56                   	push   %esi
40f5f6:	57                   	push   %edi
40f5f7:	55                   	push   %ebp
40f5f8:	83 c4 f8             	add    $0xfffffff8,%esp
40f5fb:	8b e8                	mov    %eax,%ebp
40f5fd:	33 ff                	xor    %edi,%edi
40f5ff:	85 ed                	test   %ebp,%ebp
40f601:	89 4c 24 04          	mov    %ecx,0x4(%esp)
40f605:	89 14 24             	mov    %edx,(%esp)
40f608:	8b 74 24 04          	mov    0x4(%esp),%esi
40f60c:	74 15                	je     0x40f623
40f60e:	83 7d 1c 00          	cmpl   $0x0,0x1c(%ebp)
40f612:	74 0f                	je     0x40f623
40f614:	83 3c 24 00          	cmpl   $0x0,(%esp)
40f618:	74 09                	je     0x40f623
40f61a:	8b 45 1c             	mov    0x1c(%ebp),%eax
40f61d:	83 78 04 2a          	cmpl   $0x2a,0x4(%eax)
40f621:	74 0a                	je     0x40f62d
40f623:	b8 fe ff ff ff       	mov    $0xfffffffe,%eax
40f628:	e9 b4 00 00 00       	jmp    0x40f6e1
40f62d:	8b 5d 1c             	mov    0x1c(%ebp),%ebx
40f630:	8b 45 30             	mov    0x30(%ebp),%eax
40f633:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40f637:	8b 14 24             	mov    (%esp),%edx
40f63a:	e8 a9 3e 00 00       	call   0x4134e8
40f63f:	89 45 30             	mov    %eax,0x30(%ebp)
40f642:	83 fe 03             	cmp    $0x3,%esi
40f645:	73 07                	jae    0x40f64e
40f647:	33 c0                	xor    %eax,%eax
40f649:	e9 93 00 00 00       	jmp    0x40f6e1
40f64e:	8b 43 24             	mov    0x24(%ebx),%eax
40f651:	2d 06 01 00 00       	sub    $0x106,%eax
40f656:	3b f0                	cmp    %eax,%esi
40f658:	76 0b                	jbe    0x40f665
40f65a:	8b f0                	mov    %eax,%esi
40f65c:	8b 44 24 04          	mov    0x4(%esp),%eax
40f660:	2b c6                	sub    %esi,%eax
40f662:	01 04 24             	add    %eax,(%esp)
40f665:	56                   	push   %esi
40f666:	8b 54 24 04          	mov    0x4(%esp),%edx
40f66a:	52                   	push   %edx
40f66b:	8b 4b 30             	mov    0x30(%ebx),%ecx
40f66e:	51                   	push   %ecx
40f66f:	e8 30 fd ff ff       	call   0x40f3a4
40f674:	89 73 64             	mov    %esi,0x64(%ebx)
40f677:	89 73 54             	mov    %esi,0x54(%ebx)
40f67a:	8b 43 30             	mov    0x30(%ebx),%eax
40f67d:	83 c4 0c             	add    $0xc,%esp
40f680:	0f b6 00             	movzbl (%eax),%eax
40f683:	89 43 40             	mov    %eax,0x40(%ebx)
40f686:	8b 53 30             	mov    0x30(%ebx),%edx
40f689:	8b 4b 50             	mov    0x50(%ebx),%ecx
40f68c:	d3 e0                	shl    %cl,%eax
40f68e:	0f b6 52 01          	movzbl 0x1(%edx),%edx
40f692:	33 c2                	xor    %edx,%eax
40f694:	23 43 4c             	and    0x4c(%ebx),%eax
40f697:	89 43 40             	mov    %eax,0x40(%ebx)
40f69a:	33 c0                	xor    %eax,%eax
40f69c:	eb 36                	jmp    0x40f6d4
40f69e:	8b 4b 50             	mov    0x50(%ebx),%ecx
40f6a1:	8b 53 40             	mov    0x40(%ebx),%edx
40f6a4:	d3 e2                	shl    %cl,%edx
40f6a6:	8b 4b 30             	mov    0x30(%ebx),%ecx
40f6a9:	0f b6 4c 01 02       	movzbl 0x2(%ecx,%eax,1),%ecx
40f6ae:	33 d1                	xor    %ecx,%edx
40f6b0:	23 53 4c             	and    0x4c(%ebx),%edx
40f6b3:	89 53 40             	mov    %edx,0x40(%ebx)
40f6b6:	8b 4b 3c             	mov    0x3c(%ebx),%ecx
40f6b9:	0f b7 3c 51          	movzwl (%ecx,%edx,2),%edi
40f6bd:	8b 53 2c             	mov    0x2c(%ebx),%edx
40f6c0:	23 d0                	and    %eax,%edx
40f6c2:	8b 4b 38             	mov    0x38(%ebx),%ecx
40f6c5:	66 89 3c 51          	mov    %di,(%ecx,%edx,2)
40f6c9:	8b 53 3c             	mov    0x3c(%ebx),%edx
40f6cc:	8b 4b 40             	mov    0x40(%ebx),%ecx
40f6cf:	66 89 04 4a          	mov    %ax,(%edx,%ecx,2)
40f6d3:	40                   	inc    %eax
40f6d4:	8b d6                	mov    %esi,%edx
40f6d6:	83 ea 03             	sub    $0x3,%edx
40f6d9:	3b c2                	cmp    %edx,%eax
40f6db:	76 c1                	jbe    0x40f69e
40f6dd:	85 ff                	test   %edi,%edi
40f6df:	33 c0                	xor    %eax,%eax
40f6e1:	59                   	pop    %ecx
40f6e2:	5a                   	pop    %edx
40f6e3:	5d                   	pop    %ebp
40f6e4:	5f                   	pop    %edi
40f6e5:	5e                   	pop    %esi
40f6e6:	5b                   	pop    %ebx
40f6e7:	c3                   	ret
40f6e8:	53                   	push   %ebx
40f6e9:	85 c0                	test   %eax,%eax
40f6eb:	74 12                	je     0x40f6ff
40f6ed:	83 78 1c 00          	cmpl   $0x0,0x1c(%eax)
40f6f1:	74 0c                	je     0x40f6ff
40f6f3:	83 78 20 00          	cmpl   $0x0,0x20(%eax)
40f6f7:	74 06                	je     0x40f6ff
40f6f9:	83 78 24 00          	cmpl   $0x0,0x24(%eax)
40f6fd:	75 07                	jne    0x40f706
40f6ff:	b8 fe ff ff ff       	mov    $0xfffffffe,%eax
40f704:	5b                   	pop    %ebx
40f705:	c3                   	ret
40f706:	33 d2                	xor    %edx,%edx
40f708:	33 c9                	xor    %ecx,%ecx
40f70a:	89 50 14             	mov    %edx,0x14(%eax)
40f70d:	89 50 08             	mov    %edx,0x8(%eax)
40f710:	89 48 18             	mov    %ecx,0x18(%eax)
40f713:	33 d2                	xor    %edx,%edx
40f715:	c7 40 2c 02 00 00 00 	movl   $0x2,0x2c(%eax)
40f71c:	8b 58 1c             	mov    0x1c(%eax),%ebx
40f71f:	89 53 14             	mov    %edx,0x14(%ebx)
40f722:	8b 4b 08             	mov    0x8(%ebx),%ecx
40f725:	89 4b 10             	mov    %ecx,0x10(%ebx)
40f728:	83 7b 18 00          	cmpl   $0x0,0x18(%ebx)
40f72c:	7d 05                	jge    0x40f733
40f72e:	33 d2                	xor    %edx,%edx
40f730:	89 53 18             	mov    %edx,0x18(%ebx)
40f733:	83 7b 18 00          	cmpl   $0x0,0x18(%ebx)
40f737:	74 07                	je     0x40f740
40f739:	b9 71 00 00 00       	mov    $0x71,%ecx
40f73e:	eb 05                	jmp    0x40f745
40f740:	b9 2a 00 00 00       	mov    $0x2a,%ecx
40f745:	89 4b 04             	mov    %ecx,0x4(%ebx)
40f748:	c7 40 30 01 00 00 00 	movl   $0x1,0x30(%eax)
40f74f:	33 c0                	xor    %eax,%eax
40f751:	89 43 20             	mov    %eax,0x20(%ebx)
40f754:	8b c3                	mov    %ebx,%eax
40f756:	e8 6d 11 00 00       	call   0x4108c8
40f75b:	8b c3                	mov    %ebx,%eax
40f75d:	e8 4a 06 00 00       	call   0x40fdac
40f762:	33 c0                	xor    %eax,%eax
40f764:	5b                   	pop    %ebx
40f765:	c3                   	ret
40f766:	90                   	nop
40f767:	90                   	nop
40f768:	53                   	push   %ebx
40f769:	56                   	push   %esi
40f76a:	57                   	push   %edi
40f76b:	55                   	push   %ebp
40f76c:	51                   	push   %ecx
40f76d:	8b f9                	mov    %ecx,%edi
40f76f:	8b da                	mov    %edx,%ebx
40f771:	33 d2                	xor    %edx,%edx
40f773:	85 c0                	test   %eax,%eax
40f775:	74 06                	je     0x40f77d
40f777:	83 78 1c 00          	cmpl   $0x0,0x1c(%eax)
40f77b:	75 0a                	jne    0x40f787
40f77d:	b8 fe ff ff ff       	mov    $0xfffffffe,%eax
40f782:	e9 99 00 00 00       	jmp    0x40f820
40f787:	8b 70 1c             	mov    0x1c(%eax),%esi
40f78a:	83 fb ff             	cmp    $0xffffffff,%ebx
40f78d:	75 05                	jne    0x40f794
40f78f:	bb 06 00 00 00       	mov    $0x6,%ebx
40f794:	85 db                	test   %ebx,%ebx
40f796:	7c 0e                	jl     0x40f7a6
40f798:	83 fb 09             	cmp    $0x9,%ebx
40f79b:	7f 09                	jg     0x40f7a6
40f79d:	85 ff                	test   %edi,%edi
40f79f:	7c 05                	jl     0x40f7a6
40f7a1:	83 ff 02             	cmp    $0x2,%edi
40f7a4:	7e 07                	jle    0x40f7ad
40f7a6:	b8 fe ff ff ff       	mov    $0xfffffffe,%eax
40f7ab:	eb 73                	jmp    0x40f820
40f7ad:	8b 4e 7c             	mov    0x7c(%esi),%ecx
40f7b0:	8d 2c 5b             	lea    (%ebx,%ebx,2),%ebp
40f7b3:	8d 0c 49             	lea    (%ecx,%ecx,2),%ecx
40f7b6:	8b 0c 8d f8 64 42 00 	mov    0x4264f8(,%ecx,4),%ecx
40f7bd:	89 0c 24             	mov    %ecx,(%esp)
40f7c0:	8b 0c ad f8 64 42 00 	mov    0x4264f8(,%ebp,4),%ecx
40f7c7:	3b 0c 24             	cmp    (%esp),%ecx
40f7ca:	74 12                	je     0x40f7de
40f7cc:	83 78 08 00          	cmpl   $0x0,0x8(%eax)
40f7d0:	74 0c                	je     0x40f7de
40f7d2:	ba 01 00 00 00       	mov    $0x1,%edx
40f7d7:	e8 c8 00 00 00       	call   0x40f8a4
40f7dc:	8b d0                	mov    %eax,%edx
40f7de:	3b 5e 7c             	cmp    0x7c(%esi),%ebx
40f7e1:	74 35                	je     0x40f818
40f7e3:	89 5e 7c             	mov    %ebx,0x7c(%esi)
40f7e6:	0f b7 04 ad f2 64 42 	movzwl 0x4264f2(,%ebp,4),%eax
40f7ed:	00
40f7ee:	89 46 78             	mov    %eax,0x78(%esi)
40f7f1:	0f b7 0c ad f0 64 42 	movzwl 0x4264f0(,%ebp,4),%ecx
40f7f8:	00
40f7f9:	89 8e 84 00 00 00    	mov    %ecx,0x84(%esi)
40f7ff:	0f b7 04 ad f4 64 42 	movzwl 0x4264f4(,%ebp,4),%eax
40f806:	00
40f807:	89 86 88 00 00 00    	mov    %eax,0x88(%esi)
40f80d:	0f b7 0c ad f6 64 42 	movzwl 0x4264f6(,%ebp,4),%ecx
40f814:	00
40f815:	89 4e 74             	mov    %ecx,0x74(%esi)
40f818:	89 be 80 00 00 00    	mov    %edi,0x80(%esi)
40f81e:	8b c2                	mov    %edx,%eax
40f820:	5a                   	pop    %edx
40f821:	5d                   	pop    %ebp
40f822:	5f                   	pop    %edi
40f823:	5e                   	pop    %esi
40f824:	5b                   	pop    %ebx
40f825:	c3                   	ret
40f826:	90                   	nop
40f827:	90                   	nop
40f828:	53                   	push   %ebx
40f829:	8b 48 14             	mov    0x14(%eax),%ecx
40f82c:	ff 40 14             	incl   0x14(%eax)
40f82f:	8b 58 08             	mov    0x8(%eax),%ebx
40f832:	8d 0c 0b             	lea    (%ebx,%ecx,1),%ecx
40f835:	51                   	push   %ecx
40f836:	8b ca                	mov    %edx,%ecx
40f838:	c1 e9 08             	shr    $0x8,%ecx
40f83b:	5b                   	pop    %ebx
40f83c:	88 0b                	mov    %cl,(%ebx)
40f83e:	8b 48 14             	mov    0x14(%eax),%ecx
40f841:	ff 40 14             	incl   0x14(%eax)
40f844:	8b 40 08             	mov    0x8(%eax),%eax
40f847:	80 e2 ff             	and    $0xff,%dl
40f84a:	88 14 08             	mov    %dl,(%eax,%ecx,1)
40f84d:	5b                   	pop    %ebx
40f84e:	c3                   	ret
40f84f:	90                   	nop
40f850:	53                   	push   %ebx
40f851:	8b d8                	mov    %eax,%ebx
40f853:	56                   	push   %esi
40f854:	8b 43 1c             	mov    0x1c(%ebx),%eax
40f857:	8b 53 10             	mov    0x10(%ebx),%edx
40f85a:	8b 70 14             	mov    0x14(%eax),%esi
40f85d:	3b f2                	cmp    %edx,%esi
40f85f:	76 02                	jbe    0x40f863
40f861:	8b f2                	mov    %edx,%esi
40f863:	85 f6                	test   %esi,%esi
40f865:	74 37                	je     0x40f89e
40f867:	56                   	push   %esi
40f868:	8b 40 10             	mov    0x10(%eax),%eax
40f86b:	50                   	push   %eax
40f86c:	8b 53 0c             	mov    0xc(%ebx),%edx
40f86f:	52                   	push   %edx
40f870:	e8 2f fb ff ff       	call   0x40f3a4
40f875:	83 c4 0c             	add    $0xc,%esp
40f878:	8b c6                	mov    %esi,%eax
40f87a:	01 43 0c             	add    %eax,0xc(%ebx)
40f87d:	8b 53 1c             	mov    0x1c(%ebx),%edx
40f880:	01 42 10             	add    %eax,0x10(%edx)
40f883:	01 73 14             	add    %esi,0x14(%ebx)