408654:	8b 45 14             	mov    0x14(%ebp),%eax
408657:	03 c1                	add    %ecx,%eax
408659:	50                   	push   %eax
40865a:	51                   	push   %ecx
40865b:	e8 bf 04 00 00       	call   0x408b1f
408660:	83 c4 0c             	add    $0xc,%esp
408663:	8b 45 f4             	mov    -0xc(%ebp),%eax
408666:	0f b6 4d 0f          	movzbl 0xf(%ebp),%ecx
40866a:	2b c6                	sub    %esi,%eax
40866c:	2b c3                	sub    %ebx,%eax
40866e:	50                   	push   %eax
40866f:	51                   	push   %ecx
408670:	56                   	push   %esi
408671:	e8 ea b7 03 00       	call   0x443e60
408676:	8b 75 f4             	mov    -0xc(%ebp),%esi
408679:	83 c4 0c             	add    $0xc,%esp
40867c:	8d 46 ff             	lea    -0x1(%esi),%eax
40867f:	5f                   	pop    %edi
408680:	5e                   	pop    %esi
408681:	5b                   	pop    %ebx
408682:	c9                   	leave
408683:	c2 10 00             	ret    $0x10
408686:	55                   	push   %ebp
408687:	8b ec                	mov    %esp,%ebp
408689:	51                   	push   %ecx
40868a:	ff 75 20             	push   0x20(%ebp)
40868d:	8d 45 fc             	lea    -0x4(%ebp),%eax
408690:	ff 75 1c             	push   0x1c(%ebp)
408693:	ff 75 18             	push   0x18(%ebp)
408696:	ff 75 14             	push   0x14(%ebp)
408699:	ff 75 10             	push   0x10(%ebp)
40869c:	ff 75 0c             	push   0xc(%ebp)
40869f:	50                   	push   %eax
4086a0:	e8 05 cd ff ff       	call   0x4053aa
4086a5:	83 c4 1c             	add    $0x1c,%esp
4086a8:	8b 08                	mov    (%eax),%ecx
4086aa:	8b 45 08             	mov    0x8(%ebp),%eax
4086ad:	89 08                	mov    %ecx,(%eax)
4086af:	c9                   	leave
4086b0:	c3                   	ret
4086b1:	6a 28                	push   $0x28
4086b3:	b8 34 ad 48 00       	mov    $0x48ad34,%eax
4086b8:	e8 c1 73 03 00       	call   0x43fa7e
4086bd:	33 d2                	xor    %edx,%edx
4086bf:	89 55 fc             	mov    %edx,-0x4(%ebp)
4086c2:	33 c9                	xor    %ecx,%ecx
4086c4:	8b 75 08             	mov    0x8(%ebp),%esi
4086c7:	8b 7d 10             	mov    0x10(%ebp),%edi
4086ca:	8b 45 14             	mov    0x14(%ebp),%eax
4086cd:	89 75 d0             	mov    %esi,-0x30(%ebp)
4086d0:	89 55 d4             	mov    %edx,-0x2c(%ebp)
4086d3:	89 56 10             	mov    %edx,0x10(%esi)
4086d6:	c7 46 14 07 00 00 00 	movl   $0x7,0x14(%esi)
4086dd:	66 89 0e             	mov    %cx,(%esi)
4086e0:	89 55 fc             	mov    %edx,-0x4(%ebp)
4086e3:	33 db                	xor    %ebx,%ebx
4086e5:	43                   	inc    %ebx
4086e6:	8d 4d d8             	lea    -0x28(%ebp),%ecx
4086e9:	50                   	push   %eax
4086ea:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
4086ed:	e8 6c 2c 00 00       	call   0x40b35e
4086f2:	89 5d fc             	mov    %ebx,-0x4(%ebp)
4086f5:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4086f8:	8b d1                	mov    %ecx,%edx
4086fa:	83 79 14 08          	cmpl   $0x8,0x14(%ecx)
4086fe:	72 02                	jb     0x408702
408700:	8b 11                	mov    (%ecx),%edx
408702:	8b 41 10             	mov    0x10(%ecx),%eax
408705:	8d 04 42             	lea    (%edx,%eax,2),%eax
408708:	72 02                	jb     0x40870c
40870a:	8b 09                	mov    (%ecx),%ecx
40870c:	ff 75 18             	push   0x18(%ebp)
40870f:	8d 55 d8             	lea    -0x28(%ebp),%edx
408712:	52                   	push   %edx
408713:	57                   	push   %edi
408714:	50                   	push   %eax
408715:	51                   	push   %ecx
408716:	8d 45 cc             	lea    -0x34(%ebp),%eax
408719:	56                   	push   %esi
40871a:	50                   	push   %eax
40871b:	e8 66 ff ff ff       	call   0x408686
408720:	83 c4 1c             	add    $0x1c,%esp
408723:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
408727:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40872a:	e8 cb 4b 01 00       	call   0x41d2fa
40872f:	8b c6                	mov    %esi,%eax
408731:	e8 f2 72 03 00       	call   0x43fa28
408736:	c3                   	ret
408737:	6a 04                	push   $0x4
408739:	b8 72 ad 48 00       	mov    $0x48ad72,%eax
40873e:	e8 07 73 03 00       	call   0x43fa4a
408743:	33 c9                	xor    %ecx,%ecx
408745:	89 4d fc             	mov    %ecx,-0x4(%ebp)
408748:	33 c0                	xor    %eax,%eax
40874a:	89 4d f0             	mov    %ecx,-0x10(%ebp)
40874d:	8b 75 08             	mov    0x8(%ebp),%esi
408750:	89 4e 10             	mov    %ecx,0x10(%esi)
408753:	c7 46 14 07 00 00 00 	movl   $0x7,0x14(%esi)
40875a:	66 89 06             	mov    %ax,(%esi)
40875d:	89 4d fc             	mov    %ecx,-0x4(%ebp)
408760:	8b 55 0c             	mov    0xc(%ebp),%edx
408763:	8b ca                	mov    %edx,%ecx
408765:	c7 45 f0 01 00 00 00 	movl   $0x1,-0x10(%ebp)
40876c:	83 7a 14 08          	cmpl   $0x8,0x14(%edx)
408770:	72 02                	jb     0x408774
408772:	8b 0a                	mov    (%edx),%ecx
408774:	8b 42 10             	mov    0x10(%edx),%eax
408777:	8d 0c 41             	lea    (%ecx,%eax,2),%ecx
40877a:	72 02                	jb     0x40877e
40877c:	8b 12                	mov    (%edx),%edx
40877e:	ff 75 18             	push   0x18(%ebp)
408781:	8d 45 0c             	lea    0xc(%ebp),%eax
408784:	ff 75 14             	push   0x14(%ebp)
408787:	ff 75 10             	push   0x10(%ebp)
40878a:	51                   	push   %ecx
40878b:	52                   	push   %edx
40878c:	56                   	push   %esi
40878d:	50                   	push   %eax
40878e:	e8 f3 fe ff ff       	call   0x408686
408793:	83 c4 1c             	add    $0x1c,%esp
408796:	8b c6                	mov    %esi,%eax
408798:	e8 76 72 03 00       	call   0x43fa13
40879d:	c3                   	ret
40879e:	6a 30                	push   $0x30
4087a0:	b8 b6 ad 48 00       	mov    $0x48adb6,%eax
4087a5:	e8 d4 72 03 00       	call   0x43fa7e
4087aa:	8b f9                	mov    %ecx,%edi
4087ac:	33 db                	xor    %ebx,%ebx
4087ae:	89 5d fc             	mov    %ebx,-0x4(%ebp)
4087b1:	8b 75 08             	mov    0x8(%ebp),%esi
4087b4:	8b 45 0c             	mov    0xc(%ebp),%eax
4087b7:	8b 55 10             	mov    0x10(%ebp),%edx
4087ba:	89 75 c4             	mov    %esi,-0x3c(%ebp)
4087bd:	89 5d c8             	mov    %ebx,-0x38(%ebp)
4087c0:	89 5e 10             	mov    %ebx,0x10(%esi)
4087c3:	c7 46 14 0f 00 00 00 	movl   $0xf,0x14(%esi)
4087ca:	88 1e                	mov    %bl,(%esi)
4087cc:	89 5d fc             	mov    %ebx,-0x4(%ebp)
4087cf:	c7 45 c8 01 00 00 00 	movl   $0x1,-0x38(%ebp)
4087d6:	3b c2                	cmp    %edx,%eax
4087d8:	74 5f                	je     0x408839
4087da:	ff 75 c4             	push   -0x3c(%ebp)
4087dd:	8d 4d cc             	lea    -0x34(%ebp),%ecx
4087e0:	89 5d cc             	mov    %ebx,-0x34(%ebp)
4087e3:	52                   	push   %edx
4087e4:	50                   	push   %eax
4087e5:	89 5d d0             	mov    %ebx,-0x30(%ebp)
4087e8:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
4087eb:	e8 f3 c2 ff ff       	call   0x404ae3
4087f0:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
4087f7:	8b 4f 04             	mov    0x4(%edi),%ecx
4087fa:	ff 75 d0             	push   -0x30(%ebp)
4087fd:	ff 75 cc             	push   -0x34(%ebp)
408800:	8b 01                	mov    (%ecx),%eax
408802:	ff 50 0c             	call   *0xc(%eax)
408805:	ff 75 d0             	push   -0x30(%ebp)
408808:	8b 0f                	mov    (%edi),%ecx
40880a:	8d 45 d8             	lea    -0x28(%ebp),%eax
40880d:	ff 75 cc             	push   -0x34(%ebp)
408810:	50                   	push   %eax
408811:	e8 76 aa 01 00       	call   0x42328c
408816:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40881a:	8b ce                	mov    %esi,%ecx
40881c:	50                   	push   %eax
40881d:	e8 ab 6e 00 00       	call   0x40f6cd
408822:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
408826:	8d 4d d8             	lea    -0x28(%ebp),%ecx
408829:	e8 a6 4a 01 00       	call   0x41d2d4
40882e:	88 5d fc             	mov    %bl,-0x4(%ebp)
408831:	8d 4d cc             	lea    -0x34(%ebp),%ecx
408834:	e8 16 48 01 00       	call   0x41d04f
408839:	8b c6                	mov    %esi,%eax
40883b:	e8 e8 71 03 00       	call   0x43fa28
408840:	c2 0c 00             	ret    $0xc
408843:	6a 34                	push   $0x34
408845:	b8 04 ae 48 00       	mov    $0x48ae04,%eax
40884a:	e8 2f 72 03 00       	call   0x43fa7e
40884f:	8b f1                	mov    %ecx,%esi
408851:	89 75 c4             	mov    %esi,-0x3c(%ebp)
408854:	33 c9                	xor    %ecx,%ecx
408856:	89 4d fc             	mov    %ecx,-0x4(%ebp)
408859:	8b 5d 08             	mov    0x8(%ebp),%ebx
40885c:	8b 45 0c             	mov    0xc(%ebp),%eax
40885f:	8b 55 10             	mov    0x10(%ebp),%edx
408862:	89 5d c0             	mov    %ebx,-0x40(%ebp)
408865:	89 4d c8             	mov    %ecx,-0x38(%ebp)
408868:	89 4b 10             	mov    %ecx,0x10(%ebx)
40886b:	c7 43 14 07 00 00 00 	movl   $0x7,0x14(%ebx)
408872:	66 89 0b             	mov    %cx,(%ebx)
408875:	89 4d fc             	mov    %ecx,-0x4(%ebp)
408878:	33 ff                	xor    %edi,%edi
40887a:	47                   	inc    %edi
40887b:	89 7d c8             	mov    %edi,-0x38(%ebp)
40887e:	3b c2                	cmp    %edx,%eax
408880:	74 64                	je     0x4088e6
408882:	ff 75 c0             	push   -0x40(%ebp)
408885:	89 4d cc             	mov    %ecx,-0x34(%ebp)
408888:	52                   	push   %edx
408889:	89 4d d0             	mov    %ecx,-0x30(%ebp)
40888c:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
40888f:	8d 4d cc             	lea    -0x34(%ebp),%ecx
408892:	50                   	push   %eax
408893:	e8 fc c2 ff ff       	call   0x404b94
408898:	89 7d fc             	mov    %edi,-0x4(%ebp)
40889b:	8b 7d cc             	mov    -0x34(%ebp),%edi
40889e:	8b 45 d0             	mov    -0x30(%ebp),%eax
4088a1:	8b 4e 04             	mov    0x4(%esi),%ecx
4088a4:	2b c7                	sub    %edi,%eax
4088a6:	d1 f8                	sar    $1,%eax
4088a8:	8d 34 47             	lea    (%edi,%eax,2),%esi
4088ab:	8b 01                	mov    (%ecx),%eax
4088ad:	56                   	push   %esi
4088ae:	57                   	push   %edi
4088af:	ff 50 1c             	call   *0x1c(%eax)
4088b2:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
4088b5:	8d 45 d8             	lea    -0x28(%ebp),%eax
4088b8:	56                   	push   %esi
4088b9:	57                   	push   %edi
4088ba:	50                   	push   %eax
4088bb:	8b 09                	mov    (%ecx),%ecx
4088bd:	e8 fe a9 01 00       	call   0x4232c0
4088c2:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
4088c6:	8b cb                	mov    %ebx,%ecx
4088c8:	50                   	push   %eax
4088c9:	e8 7a 6e 00 00       	call   0x40f748
4088ce:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
4088d2:	8d 4d d8             	lea    -0x28(%ebp),%ecx
4088d5:	e8 20 4a 01 00       	call   0x41d2fa
4088da:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
4088de:	8d 4d cc             	lea    -0x34(%ebp),%ecx
4088e1:	e8 c8 49 01 00       	call   0x41d2ae
4088e6:	8b c3                	mov    %ebx,%eax
4088e8:	e8 3b 71 03 00       	call   0x43fa28
4088ed:	c2 0c 00             	ret    $0xc
4088f0:	6a 30                	push   $0x30
4088f2:	b8 52 ae 48 00       	mov    $0x48ae52,%eax
4088f7:	e8 82 71 03 00       	call   0x43fa7e
4088fc:	8b f9                	mov    %ecx,%edi
4088fe:	33 db                	xor    %ebx,%ebx
408900:	89 5d fc             	mov    %ebx,-0x4(%ebp)
408903:	8b 75 08             	mov    0x8(%ebp),%esi
408906:	8b 45 0c             	mov    0xc(%ebp),%eax
408909:	8b 55 10             	mov    0x10(%ebp),%edx
40890c:	89 75 c4             	mov    %esi,-0x3c(%ebp)
40890f:	89 5d c8             	mov    %ebx,-0x38(%ebp)
408912:	89 5e 10             	mov    %ebx,0x10(%esi)
408915:	c7 46 14 0f 00 00 00 	movl   $0xf,0x14(%esi)
40891c:	88 1e                	mov    %bl,(%esi)
40891e:	89 5d fc             	mov    %ebx,-0x4(%ebp)
408921:	c7 45 c8 01 00 00 00 	movl   $0x1,-0x38(%ebp)
408928:	3b c2                	cmp    %edx,%eax
40892a:	74 5f                	je     0x40898b
40892c:	ff 75 c4             	push   -0x3c(%ebp)
40892f:	8d 4d cc             	lea    -0x34(%ebp),%ecx
408932:	89 5d cc             	mov    %ebx,-0x34(%ebp)
408935:	52                   	push   %edx
408936:	50                   	push   %eax
408937:	89 5d d0             	mov    %ebx,-0x30(%ebp)
40893a:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
40893d:	e8 ab c2 ff ff       	call   0x404bed
408942:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
408949:	8b 4f 04             	mov    0x4(%edi),%ecx
40894c:	ff 75 d0             	push   -0x30(%ebp)
40894f:	ff 75 cc             	push   -0x34(%ebp)
408952:	8b 01                	mov    (%ecx),%eax
408954:	ff 50 0c             	call   *0xc(%eax)
408957:	ff 75 d0             	push   -0x30(%ebp)
40895a:	8b 0f                	mov    (%edi),%ecx
40895c:	8d 45 d8             	lea    -0x28(%ebp),%eax
40895f:	ff 75 cc             	push   -0x34(%ebp)
408962:	50                   	push   %eax
408963:	e8 24 a9 01 00       	call   0x42328c
408968:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40896c:	8b ce                	mov    %esi,%ecx
40896e:	50                   	push   %eax
40896f:	e8 59 6d 00 00       	call   0x40f6cd
408974:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
408978:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40897b:	e8 54 49 01 00       	call   0x41d2d4
408980:	88 5d fc             	mov    %bl,-0x4(%ebp)
408983:	8d 4d cc             	lea    -0x34(%ebp),%ecx
408986:	e8 c4 46 01 00       	call   0x41d04f
40898b:	8b c6                	mov    %esi,%eax
40898d:	e8 96 70 03 00       	call   0x43fa28
408992:	c2 0c 00             	ret    $0xc
408995:	6a 34                	push   $0x34
408997:	b8 a0 ae 48 00       	mov    $0x48aea0,%eax
40899c:	e8 dd 70 03 00       	call   0x43fa7e
4089a1:	8b f1                	mov    %ecx,%esi
4089a3:	89 75 c4             	mov    %esi,-0x3c(%ebp)
4089a6:	33 c9                	xor    %ecx,%ecx
4089a8:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4089ab:	8b 5d 08             	mov    0x8(%ebp),%ebx
4089ae:	8b 45 0c             	mov    0xc(%ebp),%eax
4089b1:	8b 55 10             	mov    0x10(%ebp),%edx
4089b4:	89 5d c0             	mov    %ebx,-0x40(%ebp)
4089b7:	89 4d c8             	mov    %ecx,-0x38(%ebp)
4089ba:	89 4b 10             	mov    %ecx,0x10(%ebx)
4089bd:	c7 43 14 07 00 00 00 	movl   $0x7,0x14(%ebx)
4089c4:	66 89 0b             	mov    %cx,(%ebx)
4089c7:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4089ca:	33 ff                	xor    %edi,%edi
4089cc:	47                   	inc    %edi
4089cd:	89 7d c8             	mov    %edi,-0x38(%ebp)
4089d0:	3b c2                	cmp    %edx,%eax
4089d2:	74 64                	je     0x408a38
4089d4:	ff 75 c0             	push   -0x40(%ebp)
4089d7:	89 4d cc             	mov    %ecx,-0x34(%ebp)
4089da:	52                   	push   %edx
4089db:	89 4d d0             	mov    %ecx,-0x30(%ebp)
4089de:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
4089e1:	8d 4d cc             	lea    -0x34(%ebp),%ecx
4089e4:	50                   	push   %eax
4089e5:	e8 5a c2 ff ff       	call   0x404c44
4089ea:	89 7d fc             	mov    %edi,-0x4(%ebp)
4089ed:	8b 7d cc             	mov    -0x34(%ebp),%edi
4089f0:	8b 45 d0             	mov    -0x30(%ebp),%eax
4089f3:	8b 4e 04             	mov    0x4(%esi),%ecx
4089f6:	2b c7                	sub    %edi,%eax
4089f8:	d1 f8                	sar    $1,%eax
4089fa:	8d 34 47             	lea    (%edi,%eax,2),%esi
4089fd:	8b 01                	mov    (%ecx),%eax
4089ff:	56                   	push   %esi
408a00:	57                   	push   %edi
408a01:	ff 50 1c             	call   *0x1c(%eax)
408a04:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
408a07:	8d 45 d8             	lea    -0x28(%ebp),%eax
408a0a:	56                   	push   %esi
408a0b:	57                   	push   %edi
408a0c:	50                   	push   %eax
408a0d:	8b 09                	mov    (%ecx),%ecx
408a0f:	e8 ac a8 01 00       	call   0x4232c0
408a14:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
408a18:	8b cb                	mov    %ebx,%ecx
408a1a:	50                   	push   %eax
408a1b:	e8 28 6d 00 00       	call   0x40f748
408a20:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
408a24:	8d 4d d8             	lea    -0x28(%ebp),%ecx
408a27:	e8 ce 48 01 00       	call   0x41d2fa
408a2c:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
408a30:	8d 4d cc             	lea    -0x34(%ebp),%ecx
408a33:	e8 76 48 01 00       	call   0x41d2ae
408a38:	8b c3                	mov    %ebx,%eax
408a3a:	e8 e9 6f 03 00       	call   0x43fa28
408a3f:	c2 0c 00             	ret    $0xc
408a42:	6a 34                	push   $0x34
408a44:	b8 ee ae 48 00       	mov    $0x48aeee,%eax
408a49:	e8 30 70 03 00       	call   0x43fa7e
408a4e:	8b f1                	mov    %ecx,%esi
408a50:	89 75 c4             	mov    %esi,-0x3c(%ebp)