45f853:	80 7e 10 00          	cmpb   $0x0,0x10(%esi)
45f857:	74 50                	je     0x45f8a9
45f859:	8b 4d 0c             	mov    0xc(%ebp),%ecx
45f85c:	e8 bf 46 fa ff       	call   0x403f20
45f861:	ff 75 10             	push   0x10(%ebp)
45f864:	8b ce                	mov    %esi,%ecx
45f866:	ff 75 08             	push   0x8(%ebp)
45f869:	e8 96 5d fb ff       	call   0x415604
45f86e:	8b d8                	mov    %eax,%ebx
45f870:	85 db                	test   %ebx,%ebx
45f872:	7e 35                	jle    0x45f8a9
45f874:	8d 4d ec             	lea    -0x14(%ebp),%ecx
45f877:	e8 4b 7f fa ff       	call   0x4077c7
45f87c:	85 db                	test   %ebx,%ebx
45f87e:	7e 1d                	jle    0x45f89d
45f880:	8d 45 ec             	lea    -0x14(%ebp),%eax
45f883:	8b ce                	mov    %esi,%ecx
45f885:	50                   	push   %eax
45f886:	57                   	push   %edi
45f887:	e8 a5 6e ff ff       	call   0x456731
45f88c:	8b 4d 0c             	mov    0xc(%ebp),%ecx
45f88f:	8d 45 ec             	lea    -0x14(%ebp),%eax
45f892:	50                   	push   %eax
45f893:	e8 ec 46 fa ff       	call   0x403f84
45f898:	47                   	inc    %edi
45f899:	3b fb                	cmp    %ebx,%edi
45f89b:	7c e3                	jl     0x45f880
45f89d:	8d 4d ec             	lea    -0x14(%ebp),%ecx
45f8a0:	e8 bf 61 fa ff       	call   0x405a64
45f8a5:	8b c3                	mov    %ebx,%eax
45f8a7:	eb 02                	jmp    0x45f8ab
45f8a9:	33 c0                	xor    %eax,%eax
45f8ab:	5f                   	pop    %edi
45f8ac:	5e                   	pop    %esi
45f8ad:	5b                   	pop    %ebx
45f8ae:	8b e5                	mov    %ebp,%esp
45f8b0:	5d                   	pop    %ebp
45f8b1:	c2 0c 00             	ret    $0xc
45f8b4:	56                   	push   %esi
45f8b5:	8b f1                	mov    %ecx,%esi
45f8b7:	8b 4e 14             	mov    0x14(%esi),%ecx
45f8ba:	85 c9                	test   %ecx,%ecx
45f8bc:	74 30                	je     0x45f8ee
45f8be:	80 7e 10 00          	cmpb   $0x0,0x10(%esi)
45f8c2:	74 2a                	je     0x45f8ee
45f8c4:	ff 76 24             	push   0x24(%esi)
45f8c7:	8b 56 18             	mov    0x18(%esi),%edx
45f8ca:	ff 76 20             	push   0x20(%esi)
45f8cd:	ff 76 34             	push   0x34(%esi)
45f8d0:	6a 00                	push   $0x0
45f8d2:	ff 76 1c             	push   0x1c(%esi)
45f8d5:	ff 36                	push   (%esi)
45f8d7:	e8 64 48 fb ff       	call   0x414140
45f8dc:	83 c4 18             	add    $0x18,%esp
45f8df:	89 46 28             	mov    %eax,0x28(%esi)
45f8e2:	85 c0                	test   %eax,%eax
45f8e4:	7e 08                	jle    0x45f8ee
45f8e6:	83 66 28 00          	andl   $0x0,0x28(%esi)
45f8ea:	b0 01                	mov    $0x1,%al
45f8ec:	5e                   	pop    %esi
45f8ed:	c3                   	ret
45f8ee:	32 c0                	xor    %al,%al
45f8f0:	5e                   	pop    %esi
45f8f1:	c3                   	ret
45f8f2:	55                   	push   %ebp
45f8f3:	8b ec                	mov    %esp,%ebp
45f8f5:	83 ec 2c             	sub    $0x2c,%esp
45f8f8:	53                   	push   %ebx
45f8f9:	56                   	push   %esi
45f8fa:	8b d9                	mov    %ecx,%ebx
45f8fc:	8d 4d d8             	lea    -0x28(%ebp),%ecx
45f8ff:	57                   	push   %edi
45f900:	e8 c2 7e fa ff       	call   0x4077c7
45f905:	8b 75 08             	mov    0x8(%ebp),%esi
45f908:	8d 4d e8             	lea    -0x18(%ebp),%ecx
45f90b:	ff 73 04             	push   0x4(%ebx)
45f90e:	8b 7e 04             	mov    0x4(%esi),%edi
45f911:	89 7d fc             	mov    %edi,-0x4(%ebp)
45f914:	e8 5d 82 fa ff       	call   0x407b76
45f919:	8b 45 10             	mov    0x10(%ebp),%eax
45f91c:	85 c0                	test   %eax,%eax
45f91e:	79 3a                	jns    0x45f95a
45f920:	68 ff ff ff 7f       	push   $0x7fffffff
45f925:	6a ff                	push   $0xffffffff
45f927:	57                   	push   %edi
45f928:	50                   	push   %eax
45f929:	ff 75 14             	push   0x14(%ebp)
45f92c:	8b cb                	mov    %ebx,%ecx
45f92e:	ff 36                	push   (%esi)
45f930:	e8 23 fd ff ff       	call   0x45f658
45f935:	8b f0                	mov    %eax,%esi
45f937:	85 f6                	test   %esi,%esi
45f939:	79 08                	jns    0x45f943
45f93b:	f7 d8                	neg    %eax
45f93d:	33 ff                	xor    %edi,%edi
45f93f:	8b f7                	mov    %edi,%esi
45f941:	eb 10                	jmp    0x45f953
45f943:	56                   	push   %esi
45f944:	33 ff                	xor    %edi,%edi
45f946:	8d 4d e8             	lea    -0x18(%ebp),%ecx
45f949:	57                   	push   %edi
45f94a:	53                   	push   %ebx
45f94b:	e8 5b 80 fa ff       	call   0x4079ab
45f950:	8b 45 10             	mov    0x10(%ebp),%eax
45f953:	f7 d8                	neg    %eax
45f955:	89 45 10             	mov    %eax,0x10(%ebp)
45f958:	eb 04                	jmp    0x45f95e
45f95a:	33 ff                	xor    %edi,%edi
45f95c:	8b f7                	mov    %edi,%esi
45f95e:	8b 45 08             	mov    0x8(%ebp),%eax
45f961:	8b cb                	mov    %ebx,%ecx
45f963:	6a ff                	push   $0xffffffff
45f965:	56                   	push   %esi
45f966:	ff 75 fc             	push   -0x4(%ebp)
45f969:	89 75 f8             	mov    %esi,-0x8(%ebp)
45f96c:	6a 01                	push   $0x1
45f96e:	ff 75 14             	push   0x14(%ebp)
45f971:	ff 30                	push   (%eax)
45f973:	e8 e0 fc ff ff       	call   0x45f658
45f978:	8b f0                	mov    %eax,%esi
45f97a:	3b 73 04             	cmp    0x4(%ebx),%esi
45f97d:	74 3f                	je     0x45f9be
45f97f:	8b 4d f8             	mov    -0x8(%ebp),%ecx
45f982:	2b c1                	sub    %ecx,%eax
45f984:	50                   	push   %eax
45f985:	51                   	push   %ecx
45f986:	53                   	push   %ebx
45f987:	8d 4d d8             	lea    -0x28(%ebp),%ecx
45f98a:	e8 1c 80 fa ff       	call   0x4079ab
45f98f:	8d 45 d8             	lea    -0x28(%ebp),%eax
45f992:	50                   	push   %eax
45f993:	8d 4d e8             	lea    -0x18(%ebp),%ecx
45f996:	e8 f3 82 fa ff       	call   0x407c8e
45f99b:	ff 75 0c             	push   0xc(%ebp)
45f99e:	8d 4d e8             	lea    -0x18(%ebp),%ecx
45f9a1:	e8 e8 82 fa ff       	call   0x407c8e
45f9a6:	03 75 fc             	add    -0x4(%ebp),%esi
45f9a9:	47                   	inc    %edi
45f9aa:	8b 45 10             	mov    0x10(%ebp),%eax
45f9ad:	85 c0                	test   %eax,%eax
45f9af:	74 ad                	je     0x45f95e
45f9b1:	3b f8                	cmp    %eax,%edi
45f9b3:	75 a9                	jne    0x45f95e
45f9b5:	8b 43 04             	mov    0x4(%ebx),%eax
45f9b8:	2b c6                	sub    %esi,%eax
45f9ba:	50                   	push   %eax
45f9bb:	56                   	push   %esi
45f9bc:	eb 07                	jmp    0x45f9c5
45f9be:	8b 45 f8             	mov    -0x8(%ebp),%eax
45f9c1:	2b f0                	sub    %eax,%esi
45f9c3:	56                   	push   %esi
45f9c4:	50                   	push   %eax
45f9c5:	53                   	push   %ebx
45f9c6:	8d 4d d8             	lea    -0x28(%ebp),%ecx
45f9c9:	e8 dd 7f fa ff       	call   0x4079ab
45f9ce:	8d 45 d8             	lea    -0x28(%ebp),%eax
45f9d1:	50                   	push   %eax
45f9d2:	8d 4d e8             	lea    -0x18(%ebp),%ecx
45f9d5:	e8 b4 82 fa ff       	call   0x407c8e
45f9da:	85 ff                	test   %edi,%edi
45f9dc:	74 0b                	je     0x45f9e9
45f9de:	8d 45 e8             	lea    -0x18(%ebp),%eax
45f9e1:	8b cb                	mov    %ebx,%ecx
45f9e3:	50                   	push   %eax
45f9e4:	e8 ee 86 fa ff       	call   0x4080d7
45f9e9:	8d 4d e8             	lea    -0x18(%ebp),%ecx
45f9ec:	e8 73 60 fa ff       	call   0x405a64
45f9f1:	8d 4d d8             	lea    -0x28(%ebp),%ecx
45f9f4:	e8 6b 60 fa ff       	call   0x405a64
45f9f9:	8b c7                	mov    %edi,%eax
45f9fb:	5f                   	pop    %edi
45f9fc:	5e                   	pop    %esi
45f9fd:	5b                   	pop    %ebx
45f9fe:	8b e5                	mov    %ebp,%esp
45fa00:	5d                   	pop    %ebp
45fa01:	c2 10 00             	ret    $0x10
45fa04:	55                   	push   %ebp
45fa05:	8b ec                	mov    %esp,%ebp
45fa07:	83 ec 18             	sub    $0x18,%esp
45fa0a:	53                   	push   %ebx
45fa0b:	56                   	push   %esi
45fa0c:	57                   	push   %edi
45fa0d:	8d 4d e8             	lea    -0x18(%ebp),%ecx
45fa10:	e8 b2 7d fa ff       	call   0x4077c7
45fa15:	8b 75 0c             	mov    0xc(%ebp),%esi
45fa18:	8b 7d 08             	mov    0x8(%ebp),%edi
45fa1b:	8b 06                	mov    (%esi),%eax
45fa1d:	89 45 f8             	mov    %eax,-0x8(%ebp)
45fa20:	8d 58 01             	lea    0x1(%eax),%ebx
45fa23:	89 1e                	mov    %ebx,(%esi)
45fa25:	3b 5f 04             	cmp    0x4(%edi),%ebx
45fa28:	0f 8d a2 00 00 00    	jge    0x45fad0
45fa2e:	33 c0                	xor    %eax,%eax
45fa30:	89 45 0c             	mov    %eax,0xc(%ebp)
45fa33:	38 45 10             	cmp    %al,0x10(%ebp)
45fa36:	74 1b                	je     0x45fa53
45fa38:	53                   	push   %ebx
45fa39:	8b cf                	mov    %edi,%ecx
45fa3b:	e8 e0 80 fa ff       	call   0x407b20
45fa40:	66 83 38 7b          	cmpw   $0x7b,(%eax)
45fa44:	75 0b                	jne    0x45fa51
45fa46:	8d 43 01             	lea    0x1(%ebx),%eax
45fa49:	c6 45 13 01          	movb   $0x1,0x13(%ebp)
45fa4d:	89 06                	mov    %eax,(%esi)
45fa4f:	eb 05                	jmp    0x45fa56
45fa51:	33 c0                	xor    %eax,%eax
45fa53:	88 45 13             	mov    %al,0x13(%ebp)
45fa56:	8d 4d e8             	lea    -0x18(%ebp),%ecx
45fa59:	e8 8e 84 fa ff       	call   0x407eec
45fa5e:	eb 36                	jmp    0x45fa96
45fa60:	ff 36                	push   (%esi)
45fa62:	8b cf                	mov    %edi,%ecx
45fa64:	e8 b7 80 fa ff       	call   0x407b20
45fa69:	0f b7 00             	movzwl (%eax),%eax
45fa6c:	50                   	push   %eax
45fa6d:	e8 2d 44 fc ff       	call   0x423e9f
45fa72:	59                   	pop    %ecx
45fa73:	85 c0                	test   %eax,%eax
45fa75:	74 26                	je     0x45fa9d
45fa77:	8b 0e                	mov    (%esi),%ecx
45fa79:	51                   	push   %ecx
45fa7a:	c6 45 0c 01          	movb   $0x1,0xc(%ebp)
45fa7e:	8d 41 01             	lea    0x1(%ecx),%eax
45fa81:	8b cf                	mov    %edi,%ecx
45fa83:	89 06                	mov    %eax,(%esi)
45fa85:	e8 96 80 fa ff       	call   0x407b20
45fa8a:	8d 4d e8             	lea    -0x18(%ebp),%ecx
45fa8d:	0f b7 00             	movzwl (%eax),%eax
45fa90:	50                   	push   %eax
45fa91:	e8 ee 7f fa ff       	call   0x407a84
45fa96:	8b 06                	mov    (%esi),%eax
45fa98:	3b 47 04             	cmp    0x4(%edi),%eax
45fa9b:	7c c3                	jl     0x45fa60
45fa9d:	ff 75 e8             	push   -0x18(%ebp)
45faa0:	e8 25 3d fc ff       	call   0x4237ca
45faa5:	80 7d 0c 00          	cmpb   $0x0,0xc(%ebp)
45faa9:	8b d8                	mov    %eax,%ebx
45faab:	59                   	pop    %ecx
45faac:	74 1f                	je     0x45facd
45faae:	80 7d 13 00          	cmpb   $0x0,0x13(%ebp)
45fab2:	74 21                	je     0x45fad5
45fab4:	8b 06                	mov    (%esi),%eax
45fab6:	3b 47 04             	cmp    0x4(%edi),%eax
45fab9:	74 12                	je     0x45facd
45fabb:	50                   	push   %eax
45fabc:	8b cf                	mov    %edi,%ecx
45fabe:	e8 5d 80 fa ff       	call   0x407b20
45fac3:	66 83 38 7d          	cmpw   $0x7d,(%eax)
45fac7:	75 04                	jne    0x45facd
45fac9:	ff 06                	incl   (%esi)
45facb:	eb 08                	jmp    0x45fad5
45facd:	8b 45 f8             	mov    -0x8(%ebp),%eax
45fad0:	83 cb ff             	or     $0xffffffff,%ebx
45fad3:	89 06                	mov    %eax,(%esi)
45fad5:	8d 4d e8             	lea    -0x18(%ebp),%ecx
45fad8:	e8 87 5f fa ff       	call   0x405a64
45fadd:	5f                   	pop    %edi
45fade:	5e                   	pop    %esi
45fadf:	8b c3                	mov    %ebx,%eax
45fae1:	5b                   	pop    %ebx
45fae2:	8b e5                	mov    %ebp,%esp
45fae4:	5d                   	pop    %ebp
45fae5:	c2 0c 00             	ret    $0xc
45fae8:	55                   	push   %ebp
45fae9:	8b ec                	mov    %esp,%ebp
45faeb:	56                   	push   %esi
45faec:	8b f1                	mov    %ecx,%esi
45faee:	e8 8e 66 fb ff       	call   0x416181
45faf3:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
45faf7:	74 07                	je     0x45fb00
45faf9:	56                   	push   %esi
45fafa:	e8 6d 15 fc ff       	call   0x42106c
45faff:	59                   	pop    %ecx
45fb00:	8b c6                	mov    %esi,%eax
45fb02:	5e                   	pop    %esi
45fb03:	5d                   	pop    %ebp
45fb04:	c2 04 00             	ret    $0x4
45fb07:	55                   	push   %ebp
45fb08:	8b ec                	mov    %esp,%ebp
45fb0a:	57                   	push   %edi
45fb0b:	8b f9                	mov    %ecx,%edi
45fb0d:	83 7f 10 00          	cmpl   $0x0,0x10(%edi)
45fb11:	74 56                	je     0x45fb69
45fb13:	8b 47 0c             	mov    0xc(%edi),%eax
45fb16:	56                   	push   %esi
45fb17:	ff 30                	push   (%eax)
45fb19:	e8 1e 33 fc ff       	call   0x422e3c
45fb1e:	ff 75 08             	push   0x8(%ebp)
45fb21:	8d 70 01             	lea    0x1(%eax),%esi
45fb24:	e8 13 33 fc ff       	call   0x422e3c
45fb29:	33 c9                	xor    %ecx,%ecx
45fb2b:	6a 02                	push   $0x2
45fb2d:	5a                   	pop    %edx
45fb2e:	8d 04 06             	lea    (%esi,%eax,1),%eax
45fb31:	f7 e2                	mul    %edx
45fb33:	0f 90 c1             	seto   %cl
45fb36:	f7 d9                	neg    %ecx
45fb38:	0b c8                	or     %eax,%ecx
45fb3a:	51                   	push   %ecx
45fb3b:	e8 b6 14 fc ff       	call   0x420ff6
45fb40:	8b 4f 0c             	mov    0xc(%edi),%ecx
45fb43:	8b f0                	mov    %eax,%esi
45fb45:	ff 31                	push   (%ecx)
45fb47:	56                   	push   %esi
45fb48:	e8 af 34 fc ff       	call   0x422ffc
45fb4d:	ff 75 08             	push   0x8(%ebp)
45fb50:	56                   	push   %esi
45fb51:	e8 77 34 fc ff       	call   0x422fcd
45fb56:	8b 47 0c             	mov    0xc(%edi),%eax
45fb59:	ff 30                	push   (%eax)
45fb5b:	e8 0c 15 fc ff       	call   0x42106c
45fb60:	8b 47 0c             	mov    0xc(%edi),%eax
45fb63:	83 c4 20             	add    $0x20,%esp
45fb66:	89 30                	mov    %esi,(%eax)
45fb68:	5e                   	pop    %esi
45fb69:	5f                   	pop    %edi
45fb6a:	5d                   	pop    %ebp
45fb6b:	c2 04 00             	ret    $0x4
45fb6e:	55                   	push   %ebp
45fb6f:	8b ec                	mov    %esp,%ebp
45fb71:	53                   	push   %ebx
45fb72:	56                   	push   %esi
45fb73:	8b 75 08             	mov    0x8(%ebp),%esi
45fb76:	57                   	push   %edi
45fb77:	6a 0b                	push   $0xb
45fb79:	68 7c 26 49 00       	push   $0x49267c
45fb7e:	56                   	push   %esi
45fb7f:	8b f9                	mov    %ecx,%edi
45fb81:	e8 85 3e fc ff       	call   0x423a0b
45fb86:	83 c4 0c             	add    $0xc,%esp
45fb89:	85 c0                	test   %eax,%eax
45fb8b:	75 0d                	jne    0x45fb9a
45fb8d:	c6 07 01             	movb   $0x1,(%edi)
45fb90:	33 c0                	xor    %eax,%eax
45fb92:	40                   	inc    %eax
45fb93:	5f                   	pop    %edi
45fb94:	5e                   	pop    %esi
45fb95:	5b                   	pop    %ebx
45fb96:	5d                   	pop    %ebp
45fb97:	c2 04 00             	ret    $0x4
45fb9a:	6a 0d                	push   $0xd
45fb9c:	68 44 26 49 00       	push   $0x492644
45fba1:	56                   	push   %esi
45fba2:	e8 64 3e fc ff       	call   0x423a0b
45fba7:	83 c4 0c             	add    $0xc,%esp
45fbaa:	85 c0                	test   %eax,%eax
45fbac:	75 06                	jne    0x45fbb4
45fbae:	c6 47 01 01          	movb   $0x1,0x1(%edi)
45fbb2:	eb dc                	jmp    0x45fb90
45fbb4:	6a 16                	push   $0x16