540660:	8b 3f                	mov    (%edi),%edi
540662:	0f b7 4d ef          	movzwl -0x11(%ebp),%ecx
540666:	0f b7 55 f1          	movzwl -0xf(%ebp),%edx
54066a:	8b c6                	mov    %esi,%eax
54066c:	ff d7                	call   *%edi
54066e:	8b c6                	mov    %esi,%eax
540670:	e8 43 e0 ed ff       	call   0x41e6b8
540675:	3b 55 dc             	cmp    -0x24(%ebp),%edx
540678:	75 1b                	jne    0x540695
54067a:	3b 45 d8             	cmp    -0x28(%ebp),%eax
54067d:	75 16                	jne    0x540695
54067f:	8b 45 e0             	mov    -0x20(%ebp),%eax
540682:	e8 45 21 ec ff       	call   0x4027cc
540687:	8b 45 14             	mov    0x14(%ebp),%eax
54068a:	8b 40 28             	mov    0x28(%eax),%eax
54068d:	c6 00 01             	movb   $0x1,(%eax)
540690:	e9 d7 06 00 00       	jmp    0x540d6c
540695:	8b 45 14             	mov    0x14(%ebp),%eax
540698:	66 83 78 02 00       	cmpw   $0x0,0x2(%eax)
54069d:	74 13                	je     0x5406b2
54069f:	8b 7d 14             	mov    0x14(%ebp),%edi
5406a2:	8b 55 14             	mov    0x14(%ebp),%edx
5406a5:	8b 52 08             	mov    0x8(%edx),%edx
5406a8:	b9 46 00 00 00       	mov    $0x46,%ecx
5406ad:	8b 47 04             	mov    0x4(%edi),%eax
5406b0:	ff 17                	call   *(%edi)
5406b2:	8b 45 14             	mov    0x14(%ebp),%eax
5406b5:	8b 40 28             	mov    0x28(%eax),%eax
5406b8:	80 38 00             	cmpb   $0x0,(%eax)
5406bb:	74 0d                	je     0x5406ca
5406bd:	8b 45 e0             	mov    -0x20(%ebp),%eax
5406c0:	e8 07 21 ec ff       	call   0x4027cc
5406c5:	e9 a2 06 00 00       	jmp    0x540d6c
5406ca:	8b 45 18             	mov    0x18(%ebp),%eax
5406cd:	8b 00                	mov    (%eax),%eax
5406cf:	83 b8 a8 03 00 00 00 	cmpl   $0x0,0x3a8(%eax)
5406d6:	74 10                	je     0x5406e8
5406d8:	8b 45 18             	mov    0x18(%ebp),%eax
5406db:	8b 00                	mov    (%eax),%eax
5406dd:	8b 80 a8 03 00 00    	mov    0x3a8(%eax),%eax
5406e3:	e8 e4 20 ec ff       	call   0x4027cc
5406e8:	84 db                	test   %bl,%bl
5406ea:	74 6e                	je     0x54075a
5406ec:	8b 45 c0             	mov    -0x40(%ebp),%eax
5406ef:	40                   	inc    %eax
5406f0:	8b 55 18             	mov    0x18(%ebp),%edx
5406f3:	8b 12                	mov    (%edx),%edx
5406f5:	89 42 08             	mov    %eax,0x8(%edx)
5406f8:	8b 45 18             	mov    0x18(%ebp),%eax
5406fb:	8b 00                	mov    (%eax),%eax
5406fd:	8b 48 08             	mov    0x8(%eax),%ecx
540700:	b8 01 00 00 00       	mov    $0x1,%eax
540705:	d3 e0                	shl    %cl,%eax
540707:	8b 55 18             	mov    0x18(%ebp),%edx
54070a:	8b 12                	mov    (%edx),%edx
54070c:	89 82 ac 03 00 00    	mov    %eax,0x3ac(%edx)
540712:	8b 45 18             	mov    0x18(%ebp),%eax
540715:	8b 00                	mov    (%eax),%eax
540717:	8b 80 ac 03 00 00    	mov    0x3ac(%eax),%eax
54071d:	8d 04 40             	lea    (%eax,%eax,2),%eax
540720:	e8 87 20 ec ff       	call   0x4027ac
540725:	8b 55 18             	mov    0x18(%ebp),%edx
540728:	8b 12                	mov    (%edx),%edx
54072a:	89 82 a8 03 00 00    	mov    %eax,0x3a8(%edx)
540730:	8b 45 18             	mov    0x18(%ebp),%eax
540733:	8b 00                	mov    (%eax),%eax
540735:	8b 48 08             	mov    0x8(%eax),%ecx
540738:	b8 01 00 00 00       	mov    $0x1,%eax
54073d:	d3 e0                	shl    %cl,%eax
54073f:	8d 0c 40             	lea    (%eax,%eax,2),%ecx
540742:	8d 95 9b f9 ff ff    	lea    -0x665(%ebp),%edx
540748:	8b 45 18             	mov    0x18(%ebp),%eax
54074b:	8b 00                	mov    (%eax),%eax
54074d:	8b 80 a8 03 00 00    	mov    0x3a8(%eax),%eax
540753:	e8 68 77 ec ff       	call   0x407ec0
540758:	eb 6c                	jmp    0x5407c6
54075a:	8b 45 c4             	mov    -0x3c(%ebp),%eax
54075d:	40                   	inc    %eax
54075e:	8b 55 18             	mov    0x18(%ebp),%edx
540761:	8b 12                	mov    (%edx),%edx
540763:	89 42 08             	mov    %eax,0x8(%edx)
540766:	8b 45 18             	mov    0x18(%ebp),%eax
540769:	8b 00                	mov    (%eax),%eax
54076b:	8b 48 08             	mov    0x8(%eax),%ecx
54076e:	b8 01 00 00 00       	mov    $0x1,%eax
540773:	d3 e0                	shl    %cl,%eax
540775:	8b 55 18             	mov    0x18(%ebp),%edx
540778:	8b 12                	mov    (%edx),%edx
54077a:	89 82 ac 03 00 00    	mov    %eax,0x3ac(%edx)
540780:	8b 45 18             	mov    0x18(%ebp),%eax
540783:	8b 00                	mov    (%eax),%eax
540785:	8b 80 ac 03 00 00    	mov    0x3ac(%eax),%eax
54078b:	8d 04 40             	lea    (%eax,%eax,2),%eax
54078e:	e8 19 20 ec ff       	call   0x4027ac
540793:	8b 55 18             	mov    0x18(%ebp),%edx
540796:	8b 12                	mov    (%edx),%edx
540798:	89 82 a8 03 00 00    	mov    %eax,0x3a8(%edx)
54079e:	8b 45 18             	mov    0x18(%ebp),%eax
5407a1:	8b 00                	mov    (%eax),%eax
5407a3:	8b 48 08             	mov    0x8(%eax),%ecx
5407a6:	b8 01 00 00 00       	mov    $0x1,%eax
5407ab:	d3 e0                	shl    %cl,%eax
5407ad:	8d 0c 40             	lea    (%eax,%eax,2),%ecx
5407b0:	8d 95 9b fc ff ff    	lea    -0x365(%ebp),%edx
5407b6:	8b 45 18             	mov    0x18(%ebp),%eax
5407b9:	8b 00                	mov    (%eax),%eax
5407bb:	8b 80 a8 03 00 00    	mov    0x3a8(%eax),%eax
5407c1:	e8 fa 76 ec ff       	call   0x407ec0
5407c6:	80 7d 10 00          	cmpb   $0x0,0x10(%ebp)
5407ca:	0f 85 49 04 00 00    	jne    0x540c19
5407d0:	8b 45 18             	mov    0x18(%ebp),%eax
5407d3:	8b 00                	mov    (%eax),%eax
5407d5:	83 78 08 01          	cmpl   $0x1,0x8(%eax)
5407d9:	0f 85 a0 00 00 00    	jne    0x54087f
5407df:	8b 45 18             	mov    0x18(%ebp),%eax
5407e2:	8b 00                	mov    (%eax),%eax
5407e4:	83 b8 ac 03 00 00 02 	cmpl   $0x2,0x3ac(%eax)
5407eb:	0f 85 8e 00 00 00    	jne    0x54087f
5407f1:	8b 45 18             	mov    0x18(%ebp),%eax
5407f4:	8b 00                	mov    (%eax),%eax
5407f6:	8b 80 a8 03 00 00    	mov    0x3a8(%eax),%eax
5407fc:	8a 50 02             	mov    0x2(%eax),%dl
5407ff:	c1 e2 10             	shl    $0x10,%edx
540802:	66 8b 10             	mov    (%eax),%dx
540805:	52                   	push   %edx
540806:	8d 85 84 f9 ff ff    	lea    -0x67c(%ebp),%eax
54080c:	50                   	push   %eax
54080d:	33 c9                	xor    %ecx,%ecx
54080f:	33 d2                	xor    %edx,%edx
540811:	33 c0                	xor    %eax,%eax
540813:	e8 f8 8a 06 00       	call   0x5a9310
540818:	8a 85 86 f9 ff ff    	mov    -0x67a(%ebp),%al
54081e:	c1 e0 10             	shl    $0x10,%eax
540821:	66 8b 85 84 f9 ff ff 	mov    -0x67c(%ebp),%ax
540828:	50                   	push   %eax
540829:	e8 26 8c 06 00       	call   0x5a9454
54082e:	84 c0                	test   %al,%al
540830:	74 46                	je     0x540878
540832:	8b 45 18             	mov    0x18(%ebp),%eax
540835:	8b 00                	mov    (%eax),%eax
540837:	8b 80 a8 03 00 00    	mov    0x3a8(%eax),%eax
54083d:	8a 50 05             	mov    0x5(%eax),%dl
540840:	c1 e2 10             	shl    $0x10,%edx
540843:	66 8b 50 03          	mov    0x3(%eax),%dx
540847:	52                   	push   %edx
540848:	8d 85 84 f9 ff ff    	lea    -0x67c(%ebp),%eax
54084e:	50                   	push   %eax
54084f:	b1 ff                	mov    $0xff,%cl
540851:	b2 ff                	mov    $0xff,%dl
540853:	b0 ff                	mov    $0xff,%al
540855:	e8 b6 8a 06 00       	call   0x5a9310
54085a:	8a 85 86 f9 ff ff    	mov    -0x67a(%ebp),%al
540860:	c1 e0 10             	shl    $0x10,%eax
540863:	66 8b 85 84 f9 ff ff 	mov    -0x67c(%ebp),%ax
54086a:	50                   	push   %eax
54086b:	e8 e4 8b 06 00       	call   0x5a9454
540870:	84 c0                	test   %al,%al
540872:	74 04                	je     0x540878
540874:	33 c0                	xor    %eax,%eax
540876:	eb 02                	jmp    0x54087a
540878:	b0 01                	mov    $0x1,%al
54087a:	88 45 cb             	mov    %al,-0x35(%ebp)
54087d:	eb 0d                	jmp    0x54088c
54087f:	8b 45 18             	mov    0x18(%ebp),%eax
540882:	8b 00                	mov    (%eax),%eax
540884:	83 78 08 01          	cmpl   $0x1,0x8(%eax)
540888:	0f 95 45 cb          	setne  -0x35(%ebp)
54088c:	80 7d cb 00          	cmpb   $0x0,-0x35(%ebp)
540890:	74 36                	je     0x5408c8
540892:	8b 45 18             	mov    0x18(%ebp),%eax
540895:	8b 00                	mov    (%eax),%eax
540897:	80 b8 a5 03 00 00 00 	cmpb   $0x0,0x3a5(%eax)
54089e:	74 14                	je     0x5408b4
5408a0:	6a 02                	push   $0x2
5408a2:	0f b7 4d f1          	movzwl -0xf(%ebp),%ecx
5408a6:	0f b7 55 ef          	movzwl -0x11(%ebp),%edx
5408aa:	8b 45 fc             	mov    -0x4(%ebp),%eax
5408ad:	8b 18                	mov    (%eax),%ebx
5408af:	ff 53 24             	call   *0x24(%ebx)
5408b2:	eb 26                	jmp    0x5408da
5408b4:	6a 05                	push   $0x5
5408b6:	0f b7 4d f1          	movzwl -0xf(%ebp),%ecx
5408ba:	0f b7 55 ef          	movzwl -0x11(%ebp),%edx
5408be:	8b 45 fc             	mov    -0x4(%ebp),%eax
5408c1:	8b 18                	mov    (%eax),%ebx
5408c3:	ff 53 24             	call   *0x24(%ebx)
5408c6:	eb 12                	jmp    0x5408da
5408c8:	6a 01                	push   $0x1
5408ca:	0f b7 4d f1          	movzwl -0xf(%ebp),%ecx
5408ce:	0f b7 55 ef          	movzwl -0x11(%ebp),%edx
5408d2:	8b 45 fc             	mov    -0x4(%ebp),%eax
5408d5:	8b 18                	mov    (%eax),%ebx
5408d7:	ff 53 24             	call   *0x24(%ebx)
5408da:	80 7d 08 00          	cmpb   $0x0,0x8(%ebp)
5408de:	75 3c                	jne    0x54091c
5408e0:	8b 45 0c             	mov    0xc(%ebp),%eax
5408e3:	83 38 00             	cmpl   $0x0,(%eax)
5408e6:	75 11                	jne    0x5408f9
5408e8:	b2 01                	mov    $0x1,%dl
5408ea:	a1 a4 fd 5e 00       	mov    0x5efda4,%eax
5408ef:	e8 80 22 0b 00       	call   0x5f2b74
5408f4:	8b 55 0c             	mov    0xc(%ebp),%edx
5408f7:	89 02                	mov    %eax,(%edx)
5408f9:	6a 08                	push   $0x8
5408fb:	0f b7 4d f1          	movzwl -0xf(%ebp),%ecx
5408ff:	0f b7 55 ef          	movzwl -0x11(%ebp),%edx
540903:	8b 45 0c             	mov    0xc(%ebp),%eax
540906:	8b 00                	mov    (%eax),%eax
540908:	e8 33 26 0b 00       	call   0x5f2f40
54090d:	8b 45 0c             	mov    0xc(%ebp),%eax
540910:	8b 00                	mov    (%eax),%eax
540912:	ba ff 00 00 00       	mov    $0xff,%edx
540917:	e8 08 3e 0b 00       	call   0x5f4724
54091c:	80 7d cb 00          	cmpb   $0x0,-0x35(%ebp)
540920:	0f 84 ab 01 00 00    	je     0x540ad1
540926:	8b 45 18             	mov    0x18(%ebp),%eax
540929:	8b 00                	mov    (%eax),%eax
54092b:	80 b8 a5 03 00 00 00 	cmpb   $0x0,0x3a5(%eax)
540932:	0f 84 ed 00 00 00    	je     0x540a25
540938:	8b 45 18             	mov    0x18(%ebp),%eax
54093b:	8b 00                	mov    (%eax),%eax
54093d:	8b 80 ac 03 00 00    	mov    0x3ac(%eax),%eax
540943:	48                   	dec    %eax
540944:	85 c0                	test   %eax,%eax
540946:	7c 3b                	jl     0x540983
540948:	40                   	inc    %eax
540949:	89 45 ac             	mov    %eax,-0x54(%ebp)
54094c:	c7 45 d4 00 00 00 00 	movl   $0x0,-0x2c(%ebp)
540953:	8b 45 d4             	mov    -0x2c(%ebp),%eax
540956:	8d 04 40             	lea    (%eax,%eax,2),%eax
540959:	8b 55 18             	mov    0x18(%ebp),%edx
54095c:	8b 12                	mov    (%edx),%edx
54095e:	8b 92 a8 03 00 00    	mov    0x3a8(%edx),%edx
540964:	8a 4c 02 02          	mov    0x2(%edx,%eax,1),%cl
540968:	c1 e1 10             	shl    $0x10,%ecx
54096b:	66 8b 0c 02          	mov    (%edx,%eax,1),%cx
54096f:	51                   	push   %ecx
540970:	8b 55 d4             	mov    -0x2c(%ebp),%edx
540973:	8b 45 fc             	mov    -0x4(%ebp),%eax
540976:	8b 08                	mov    (%eax),%ecx
540978:	ff 51 1c             	call   *0x1c(%ecx)
54097b:	ff 45 d4             	incl   -0x2c(%ebp)
54097e:	ff 4d ac             	decl   -0x54(%ebp)
540981:	75 d0                	jne    0x540953
540983:	8b 45 18             	mov    0x18(%ebp),%eax
540986:	8b 00                	mov    (%eax),%eax
540988:	8b 48 08             	mov    0x8(%eax),%ecx
54098b:	b8 01 00 00 00       	mov    $0x1,%eax
540990:	d3 e0                	shl    %cl,%eax
540992:	8b 55 fc             	mov    -0x4(%ebp),%edx
540995:	89 42 50             	mov    %eax,0x50(%edx)
540998:	0f b7 45 f1          	movzwl -0xf(%ebp),%eax
54099c:	48                   	dec    %eax
54099d:	85 c0                	test   %eax,%eax
54099f:	0f 8c f5 01 00 00    	jl     0x540b9a
5409a5:	40                   	inc    %eax
5409a6:	89 45 ac             	mov    %eax,-0x54(%ebp)
5409a9:	c7 45 d4 00 00 00 00 	movl   $0x0,-0x2c(%ebp)
5409b0:	8b 55 d4             	mov    -0x2c(%ebp),%edx
5409b3:	8b 45 fc             	mov    -0x4(%ebp),%eax
5409b6:	8b 08                	mov    (%eax),%ecx
5409b8:	ff 11                	call   *(%ecx)
5409ba:	89 45 cc             	mov    %eax,-0x34(%ebp)
5409bd:	0f b7 45 ef          	movzwl -0x11(%ebp),%eax
5409c1:	48                   	dec    %eax
5409c2:	85 c0                	test   %eax,%eax
5409c4:	7c 52                	jl     0x540a18
5409c6:	40                   	inc    %eax
5409c7:	89 45 a8             	mov    %eax,-0x58(%ebp)
5409ca:	33 ff                	xor    %edi,%edi
5409cc:	0f b7 45 ef          	movzwl -0x11(%ebp),%eax
5409d0:	f7 6d d4             	imull  -0x2c(%ebp)
5409d3:	03 c7                	add    %edi,%eax
5409d5:	8b 55 e0             	mov    -0x20(%ebp),%edx
5409d8:	0f b6 04 02          	movzbl (%edx,%eax,1),%eax
5409dc:	8b 55 cc             	mov    -0x34(%ebp),%edx
5409df:	88 02                	mov    %al,(%edx)
5409e1:	ff 45 cc             	incl   -0x34(%ebp)
5409e4:	80 7d 08 00          	cmpb   $0x0,0x8(%ebp)
5409e8:	75 28                	jne    0x540a12
5409ea:	33 d2                	xor    %edx,%edx
5409ec:	8a 55 ea             	mov    -0x16(%ebp),%dl
5409ef:	3b c2                	cmp    %edx,%eax
5409f1:	75 1f                	jne    0x540a12
5409f3:	8b 45 18             	mov    0x18(%ebp),%eax
5409f6:	8b 00                	mov    (%eax),%eax
5409f8:	80 b8 94 00 00 00 00 	cmpb   $0x0,0x94(%eax)
5409ff:	74 11                	je     0x540a12
540a01:	6a 00                	push   $0x0
540a03:	8b 45 0c             	mov    0xc(%ebp),%eax
540a06:	8b 00                	mov    (%eax),%eax
540a08:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
540a0b:	8b d7                	mov    %edi,%edx
540a0d:	e8 46 22 0b 00       	call   0x5f2c58
540a12:	47                   	inc    %edi
540a13:	ff 4d a8             	decl   -0x58(%ebp)
540a16:	75 b4                	jne    0x5409cc
540a18:	ff 45 d4             	incl   -0x2c(%ebp)
540a1b:	ff 4d ac             	decl   -0x54(%ebp)
540a1e:	75 90                	jne    0x5409b0
540a20:	e9 75 01 00 00       	jmp    0x540b9a
540a25:	0f b7 45 f1          	movzwl -0xf(%ebp),%eax
540a29:	48                   	dec    %eax
540a2a:	85 c0                	test   %eax,%eax
540a2c:	0f 8c 68 01 00 00    	jl     0x540b9a
540a32:	40                   	inc    %eax
540a33:	89 45 ac             	mov    %eax,-0x54(%ebp)
540a36:	c7 45 d4 00 00 00 00 	movl   $0x0,-0x2c(%ebp)
540a3d:	8b 55 d4             	mov    -0x2c(%ebp),%edx
540a40:	8b 45 fc             	mov    -0x4(%ebp),%eax
540a43:	8b 08                	mov    (%eax),%ecx
540a45:	ff 11                	call   *(%ecx)
540a47:	89 45 d0             	mov    %eax,-0x30(%ebp)
540a4a:	0f b7 45 ef          	movzwl -0x11(%ebp),%eax
540a4e:	48                   	dec    %eax
540a4f:	85 c0                	test   %eax,%eax
540a51:	7c 6d                	jl     0x540ac0
540a53:	40                   	inc    %eax
540a54:	89 45 a8             	mov    %eax,-0x58(%ebp)
540a57:	33 ff                	xor    %edi,%edi
540a59:	0f b7 45 ef          	movzwl -0x11(%ebp),%eax
540a5d:	f7 6d d4             	imull  -0x2c(%ebp)
540a60:	03 c7                	add    %edi,%eax
540a62:	8b 55 e0             	mov    -0x20(%ebp),%edx
540a65:	0f b6 04 02          	movzbl (%edx,%eax,1),%eax
540a69:	8d 14 40             	lea    (%eax,%eax,2),%edx
540a6c:	8b 4d 18             	mov    0x18(%ebp),%ecx
540a6f:	8b 09                	mov    (%ecx),%ecx
540a71:	8b 89 a8 03 00 00    	mov    0x3a8(%ecx),%ecx
540a77:	8b 5d d0             	mov    -0x30(%ebp),%ebx
540a7a:	03 ca                	add    %edx,%ecx
540a7c:	66 8b 11             	mov    (%ecx),%dx
540a7f:	66 89 13             	mov    %dx,(%ebx)
540a82:	8a 51 02             	mov    0x2(%ecx),%dl
540a85:	88 53 02             	mov    %dl,0x2(%ebx)
540a88:	83 45 d0 03          	addl   $0x3,-0x30(%ebp)
540a8c:	80 7d 08 00          	cmpb   $0x0,0x8(%ebp)
540a90:	75 28                	jne    0x540aba
540a92:	33 d2                	xor    %edx,%edx
540a94:	8a 55 ea             	mov    -0x16(%ebp),%dl
540a97:	3b c2                	cmp    %edx,%eax
540a99:	75 1f                	jne    0x540aba
540a9b:	8b 45 18             	mov    0x18(%ebp),%eax
540a9e:	8b 00                	mov    (%eax),%eax
540aa0:	80 b8 94 00 00 00 00 	cmpb   $0x0,0x94(%eax)
540aa7:	74 11                	je     0x540aba
540aa9:	6a 00                	push   $0x0
540aab:	8b 45 0c             	mov    0xc(%ebp),%eax
540aae:	8b 00                	mov    (%eax),%eax
540ab0:	8b 4d d4             	mov    -0x2c(%ebp),%ecx