45b693:	e8 ee 1b fb ff       	call   0x40d286
45b698:	8b f0                	mov    %eax,%esi
45b69a:	89 45 e4             	mov    %eax,-0x1c(%ebp)
45b69d:	83 fe 01             	cmp    $0x1,%esi
45b6a0:	0f 8c db 01 00 00    	jl     0x45b881
45b6a6:	83 fe 07             	cmp    $0x7,%esi
45b6a9:	0f 8f d2 01 00 00    	jg     0x45b881
45b6af:	8b 47 04             	mov    0x4(%edi),%eax
45b6b2:	8b 00                	mov    (%eax),%eax
45b6b4:	83 78 0c 08          	cmpl   $0x8,0xc(%eax)
45b6b8:	75 04                	jne    0x45b6be
45b6ba:	8b 38                	mov    (%eax),%edi
45b6bc:	eb 02                	jmp    0x45b6c0
45b6be:	33 ff                	xor    %edi,%edi
45b6c0:	83 78 0c 08          	cmpl   $0x8,0xc(%eax)
45b6c4:	8b 7f 08             	mov    0x8(%edi),%edi
45b6c7:	75 04                	jne    0x45b6cd
45b6c9:	8b 00                	mov    (%eax),%eax
45b6cb:	eb 02                	jmp    0x45b6cf
45b6cd:	33 c0                	xor    %eax,%eax
45b6cf:	66 83 38 09          	cmpw   $0x9,(%eax)
45b6d3:	0f 94 c0             	sete   %al
45b6d6:	88 45 0b             	mov    %al,0xb(%ebp)
45b6d9:	83 fe 05             	cmp    $0x5,%esi
45b6dc:	75 76                	jne    0x45b754
45b6de:	83 65 d0 00          	andl   $0x0,-0x30(%ebp)
45b6e2:	83 65 d8 00          	andl   $0x0,-0x28(%ebp)
45b6e6:	8d 4d d0             	lea    -0x30(%ebp),%ecx
45b6e9:	e8 dd 03 00 00       	call   0x45bacb
45b6ee:	84 c0                	test   %al,%al
45b6f0:	74 3a                	je     0x45b72c
45b6f2:	8b 07                	mov    (%edi),%eax
45b6f4:	8d 4d 08             	lea    0x8(%ebp),%ecx
45b6f7:	51                   	push   %ecx
45b6f8:	ff 30                	push   (%eax)
45b6fa:	8d 4d d0             	lea    -0x30(%ebp),%ecx
45b6fd:	6a 06                	push   $0x6
45b6ff:	e8 33 f3 ff ff       	call   0x45aa37
45b704:	ff d0                	call   *%eax
45b706:	68 04 01 00 00       	push   $0x104
45b70b:	8d 85 60 fd ff ff    	lea    -0x2a0(%ebp),%eax
45b711:	50                   	push   %eax
45b712:	ff 75 08             	push   0x8(%ebp)
45b715:	ff 15 98 d1 48 00    	call   *0x48d198
45b71b:	8b 4d 0c             	mov    0xc(%ebp),%ecx
45b71e:	8d 85 60 fd ff ff    	lea    -0x2a0(%ebp),%eax
45b724:	50                   	push   %eax
45b725:	e8 8f 16 fb ff       	call   0x40cdb9
45b72a:	eb 10                	jmp    0x45b73c
45b72c:	8b 03                	mov    (%ebx),%eax
45b72e:	6a 00                	push   $0x0
45b730:	8b 48 04             	mov    0x4(%eax),%ecx
45b733:	6a 01                	push   $0x1
45b735:	03 cb                	add    %ebx,%ecx
45b737:	e8 10 18 ff ff       	call   0x44cf4c
45b73c:	83 7d d0 00          	cmpl   $0x0,-0x30(%ebp)
45b740:	0f 84 4b 01 00 00    	je     0x45b891
45b746:	ff 75 d0             	push   -0x30(%ebp)
45b749:	ff 15 88 d1 48 00    	call   *0x48d188
45b74f:	e9 3d 01 00 00       	jmp    0x45b891
45b754:	83 fe 07             	cmp    $0x7,%esi
45b757:	75 7c                	jne    0x45b7d5
45b759:	84 c0                	test   %al,%al
45b75b:	0f 84 20 01 00 00    	je     0x45b881
45b761:	8b 07                	mov    (%edi),%eax
45b763:	8d 4d 08             	lea    0x8(%ebp),%ecx
45b766:	51                   	push   %ecx
45b767:	68 00 08 00 00       	push   $0x800
45b76c:	6a 00                	push   $0x0
45b76e:	57                   	push   %edi
45b76f:	ff 50 10             	call   *0x10(%eax)
45b772:	85 c0                	test   %eax,%eax
45b774:	0f 85 07 01 00 00    	jne    0x45b881
45b77a:	8b 4d 08             	mov    0x8(%ebp),%ecx
45b77d:	85 c9                	test   %ecx,%ecx
45b77f:	0f 84 fc 00 00 00    	je     0x45b881
45b785:	8b 01                	mov    (%ecx),%eax
45b787:	8d 55 fc             	lea    -0x4(%ebp),%edx
45b78a:	52                   	push   %edx
45b78b:	51                   	push   %ecx
45b78c:	ff 50 0c             	call   *0xc(%eax)
45b78f:	8b 75 fc             	mov    -0x4(%ebp),%esi
45b792:	8b 45 08             	mov    0x8(%ebp),%eax
45b795:	ff 75 fc             	push   -0x4(%ebp)
45b798:	8d 7d cc             	lea    -0x34(%ebp),%edi
45b79b:	a5                   	movsl  %ds:(%esi),%es:(%edi)
45b79c:	a5                   	movsl  %ds:(%esi),%es:(%edi)
45b79d:	a5                   	movsl  %ds:(%esi),%es:(%edi)
45b79e:	a5                   	movsl  %ds:(%esi),%es:(%edi)
45b79f:	8b 08                	mov    (%eax),%ecx
45b7a1:	50                   	push   %eax
45b7a2:	ff 51 4c             	call   *0x4c(%ecx)
45b7a5:	8d 85 6c ff ff ff    	lea    -0x94(%ebp),%eax
45b7ab:	6a 28                	push   $0x28
45b7ad:	50                   	push   %eax
45b7ae:	8d 45 cc             	lea    -0x34(%ebp),%eax
45b7b1:	50                   	push   %eax
45b7b2:	ff 15 34 d8 48 00    	call   *0x48d834
45b7b8:	8b 4d 0c             	mov    0xc(%ebp),%ecx
45b7bb:	8d 85 6c ff ff ff    	lea    -0x94(%ebp),%eax
45b7c1:	50                   	push   %eax
45b7c2:	e8 f2 15 fb ff       	call   0x40cdb9
45b7c7:	8b 45 08             	mov    0x8(%ebp),%eax
45b7ca:	8b 08                	mov    (%eax),%ecx
45b7cc:	50                   	push   %eax
45b7cd:	ff 51 08             	call   *0x8(%ecx)
45b7d0:	e9 bc 00 00 00       	jmp    0x45b891
45b7d5:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
45b7d9:	8b 07                	mov    (%edi),%eax
45b7db:	8d 4d c0             	lea    -0x40(%ebp),%ecx
45b7de:	51                   	push   %ecx
45b7df:	68 8c d9 48 00       	push   $0x48d98c
45b7e4:	57                   	push   %edi
45b7e5:	ff 10                	call   *(%eax)
45b7e7:	85 c0                	test   %eax,%eax
45b7e9:	78 1a                	js     0x45b805
45b7eb:	8b 75 c0             	mov    -0x40(%ebp),%esi
45b7ee:	8d 4d f8             	lea    -0x8(%ebp),%ecx
45b7f1:	8b 06                	mov    (%esi),%eax
45b7f3:	51                   	push   %ecx
45b7f4:	56                   	push   %esi
45b7f5:	ff 50 0c             	call   *0xc(%eax)
45b7f8:	8b 0e                	mov    (%esi),%ecx
45b7fa:	56                   	push   %esi
45b7fb:	8b f8                	mov    %eax,%edi
45b7fd:	ff 51 08             	call   *0x8(%ecx)
45b800:	8b 75 e4             	mov    -0x1c(%ebp),%esi
45b803:	eb 19                	jmp    0x45b81e
45b805:	80 7d 0b 00          	cmpb   $0x0,0xb(%ebp)
45b809:	74 76                	je     0x45b881
45b80b:	8b 07                	mov    (%edi),%eax
45b80d:	8d 4d f8             	lea    -0x8(%ebp),%ecx
45b810:	51                   	push   %ecx
45b811:	68 00 08 00 00       	push   $0x800
45b816:	6a 00                	push   $0x0
45b818:	57                   	push   %edi
45b819:	ff 50 10             	call   *0x10(%eax)
45b81c:	8b f8                	mov    %eax,%edi
45b81e:	85 ff                	test   %edi,%edi
45b820:	78 5f                	js     0x45b881
45b822:	8b 4d f8             	mov    -0x8(%ebp),%ecx
45b825:	85 c9                	test   %ecx,%ecx
45b827:	74 58                	je     0x45b881
45b829:	8b 01                	mov    (%ecx),%eax
45b82b:	83 fe 01             	cmp    $0x1,%esi
45b82e:	75 0b                	jne    0x45b83b
45b830:	33 d2                	xor    %edx,%edx
45b832:	52                   	push   %edx
45b833:	52                   	push   %edx
45b834:	52                   	push   %edx
45b835:	8d 55 08             	lea    0x8(%ebp),%edx
45b838:	52                   	push   %edx
45b839:	eb 0e                	jmp    0x45b849
45b83b:	83 fe 02             	cmp    $0x2,%esi
45b83e:	75 28                	jne    0x45b868
45b840:	33 db                	xor    %ebx,%ebx
45b842:	53                   	push   %ebx
45b843:	53                   	push   %ebx
45b844:	8d 55 08             	lea    0x8(%ebp),%edx
45b847:	52                   	push   %edx
45b848:	53                   	push   %ebx
45b849:	6a ff                	push   $0xffffffff
45b84b:	51                   	push   %ecx
45b84c:	ff 50 30             	call   *0x30(%eax)
45b84f:	ff 75 08             	push   0x8(%ebp)
45b852:	8b 4d 0c             	mov    0xc(%ebp),%ecx
45b855:	e8 5f 15 fb ff       	call   0x40cdb9
45b85a:	ff 75 08             	push   0x8(%ebp)
45b85d:	ff 15 0c d4 48 00    	call   *0x48d40c
45b863:	e9 5b 02 00 00       	jmp    0x45bac3
45b868:	8d 55 e0             	lea    -0x20(%ebp),%edx
45b86b:	52                   	push   %edx
45b86c:	8d 55 08             	lea    0x8(%ebp),%edx
45b86f:	52                   	push   %edx
45b870:	51                   	push   %ecx
45b871:	ff 50 48             	call   *0x48(%eax)
45b874:	85 c0                	test   %eax,%eax
45b876:	74 22                	je     0x45b89a
45b878:	8b 45 f8             	mov    -0x8(%ebp),%eax
45b87b:	50                   	push   %eax
45b87c:	8b 08                	mov    (%eax),%ecx
45b87e:	ff 51 08             	call   *0x8(%ecx)
45b881:	8b 03                	mov    (%ebx),%eax
45b883:	6a 00                	push   $0x0
45b885:	8b 48 04             	mov    0x4(%eax),%ecx
45b888:	6a 01                	push   $0x1
45b88a:	03 cb                	add    %ebx,%ecx
45b88c:	e8 bb 16 ff ff       	call   0x44cf4c
45b891:	5e                   	pop    %esi
45b892:	5f                   	pop    %edi
45b893:	33 c0                	xor    %eax,%eax
45b895:	5b                   	pop    %ebx
45b896:	c9                   	leave
45b897:	c2 08 00             	ret    $0x8
45b89a:	8b 45 08             	mov    0x8(%ebp),%eax
45b89d:	8b 08                	mov    (%eax),%ecx
45b89f:	83 fe 04             	cmp    $0x4,%esi
45b8a2:	75 52                	jne    0x45b8f6
45b8a4:	8d 55 fc             	lea    -0x4(%ebp),%edx
45b8a7:	52                   	push   %edx
45b8a8:	50                   	push   %eax
45b8a9:	ff 51 1c             	call   *0x1c(%ecx)
45b8ac:	8b 4d fc             	mov    -0x4(%ebp),%ecx
45b8af:	8d 45 f0             	lea    -0x10(%ebp),%eax
45b8b2:	50                   	push   %eax
45b8b3:	ff 71 10             	push   0x10(%ecx)
45b8b6:	0f b7 41 1a          	movzwl 0x1a(%ecx),%eax
45b8ba:	50                   	push   %eax
45b8bb:	0f b7 41 18          	movzwl 0x18(%ecx),%eax
45b8bf:	50                   	push   %eax
45b8c0:	51                   	push   %ecx
45b8c1:	ff 15 44 d4 48 00    	call   *0x48d444
45b8c7:	8b 4d 08             	mov    0x8(%ebp),%ecx
45b8ca:	ff 75 fc             	push   -0x4(%ebp)
45b8cd:	8b 11                	mov    (%ecx),%edx
45b8cf:	51                   	push   %ecx
45b8d0:	8b f0                	mov    %eax,%esi
45b8d2:	ff 52 30             	call   *0x30(%edx)
45b8d5:	85 f6                	test   %esi,%esi
45b8d7:	0f 85 dd 01 00 00    	jne    0x45baba
45b8dd:	ff 75 f0             	push   -0x10(%ebp)
45b8e0:	8b 4d 0c             	mov    0xc(%ebp),%ecx
45b8e3:	e8 d1 14 fb ff       	call   0x40cdb9
45b8e8:	ff 75 f0             	push   -0x10(%ebp)
45b8eb:	ff 15 0c d4 48 00    	call   *0x48d40c
45b8f1:	e9 c4 01 00 00       	jmp    0x45baba
45b8f6:	8d 55 ec             	lea    -0x14(%ebp),%edx
45b8f9:	52                   	push   %edx
45b8fa:	ff 75 e0             	push   -0x20(%ebp)
45b8fd:	50                   	push   %eax
45b8fe:	ff 51 14             	call   *0x14(%ecx)
45b901:	83 7d ec 05          	cmpl   $0x5,-0x14(%ebp)
45b905:	0f 84 e8 00 00 00    	je     0x45b9f3
45b90b:	8b 45 08             	mov    0x8(%ebp),%eax
45b90e:	50                   	push   %eax
45b90f:	8b 08                	mov    (%eax),%ecx
45b911:	ff 51 0c             	call   *0xc(%ecx)
45b914:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
45b918:	33 ff                	xor    %edi,%edi
45b91a:	89 45 bc             	mov    %eax,-0x44(%ebp)
45b91d:	85 c0                	test   %eax,%eax
45b91f:	0f 84 ce 00 00 00    	je     0x45b9f3
45b925:	8b 75 f4             	mov    -0xc(%ebp),%esi
45b928:	85 f6                	test   %esi,%esi
45b92a:	0f 85 c0 00 00 00    	jne    0x45b9f0
45b930:	8b 45 08             	mov    0x8(%ebp),%eax
45b933:	21 75 ec             	and    %esi,-0x14(%ebp)
45b936:	8b 08                	mov    (%eax),%ecx
45b938:	8d 55 ec             	lea    -0x14(%ebp),%edx
45b93b:	52                   	push   %edx
45b93c:	57                   	push   %edi
45b93d:	50                   	push   %eax
45b93e:	ff 51 14             	call   *0x14(%ecx)
45b941:	83 7d ec 05          	cmpl   $0x5,-0x14(%ebp)
45b945:	0f 85 9b 00 00 00    	jne    0x45b9e6
45b94b:	8b 45 08             	mov    0x8(%ebp),%eax
45b94e:	8d 55 e8             	lea    -0x18(%ebp),%edx
45b951:	8b 08                	mov    (%eax),%ecx
45b953:	52                   	push   %edx
45b954:	57                   	push   %edi
45b955:	50                   	push   %eax
45b956:	ff 51 10             	call   *0x10(%ecx)
45b959:	8b 45 e8             	mov    -0x18(%ebp),%eax
45b95c:	8d 55 c4             	lea    -0x3c(%ebp),%edx
45b95f:	8b 08                	mov    (%eax),%ecx
45b961:	52                   	push   %edx
45b962:	50                   	push   %eax
45b963:	ff 51 0c             	call   *0xc(%ecx)
45b966:	8b 55 c4             	mov    -0x3c(%ebp),%edx
45b969:	52                   	push   %edx
45b96a:	0f b7 42 30          	movzwl 0x30(%edx),%eax
45b96e:	89 45 f4             	mov    %eax,-0xc(%ebp)
45b971:	8b 45 e8             	mov    -0x18(%ebp),%eax
45b974:	50                   	push   %eax
45b975:	8b 08                	mov    (%eax),%ecx
45b977:	ff 51 4c             	call   *0x4c(%ecx)
45b97a:	83 4d dc ff          	orl    $0xffffffff,-0x24(%ebp)
45b97e:	33 d2                	xor    %edx,%edx
45b980:	89 55 f0             	mov    %edx,-0x10(%ebp)
45b983:	39 55 f4             	cmp    %edx,-0xc(%ebp)
45b986:	76 55                	jbe    0x45b9dd
45b988:	8b 45 e8             	mov    -0x18(%ebp),%eax
45b98b:	8d 55 c8             	lea    -0x38(%ebp),%edx
45b98e:	8b 08                	mov    (%eax),%ecx
45b990:	52                   	push   %edx
45b991:	8b 55 f0             	mov    -0x10(%ebp),%edx
45b994:	52                   	push   %edx
45b995:	50                   	push   %eax
45b996:	ff 51 20             	call   *0x20(%ecx)
45b999:	85 c0                	test   %eax,%eax
45b99b:	75 34                	jne    0x45b9d1
45b99d:	8b 45 f8             	mov    -0x8(%ebp),%eax
45b9a0:	8d 55 fc             	lea    -0x4(%ebp),%edx
45b9a3:	8b 08                	mov    (%eax),%ecx
45b9a5:	52                   	push   %edx
45b9a6:	ff 75 c8             	push   -0x38(%ebp)
45b9a9:	50                   	push   %eax
45b9aa:	ff 51 38             	call   *0x38(%ecx)
45b9ad:	8b 45 fc             	mov    -0x4(%ebp),%eax
45b9b0:	8d 55 dc             	lea    -0x24(%ebp),%edx
45b9b3:	8b 08                	mov    (%eax),%ecx
45b9b5:	52                   	push   %edx
45b9b6:	6a 00                	push   $0x0
45b9b8:	50                   	push   %eax
45b9b9:	ff 51 48             	call   *0x48(%ecx)
45b9bc:	8b 45 dc             	mov    -0x24(%ebp),%eax
45b9bf:	3b 45 e0             	cmp    -0x20(%ebp),%eax
45b9c2:	8b 45 fc             	mov    -0x4(%ebp),%eax
45b9c5:	50                   	push   %eax
45b9c6:	8b 08                	mov    (%eax),%ecx
45b9c8:	0f 84 90 00 00 00    	je     0x45ba5e
45b9ce:	ff 51 08             	call   *0x8(%ecx)
45b9d1:	8b 55 f0             	mov    -0x10(%ebp),%edx
45b9d4:	42                   	inc    %edx
45b9d5:	89 55 f0             	mov    %edx,-0x10(%ebp)
45b9d8:	3b 55 f4             	cmp    -0xc(%ebp),%edx
45b9db:	72 ab                	jb     0x45b988
45b9dd:	8b 45 e8             	mov    -0x18(%ebp),%eax
45b9e0:	50                   	push   %eax
45b9e1:	8b 08                	mov    (%eax),%ecx
45b9e3:	ff 51 08             	call   *0x8(%ecx)
45b9e6:	47                   	inc    %edi
45b9e7:	3b 7d bc             	cmp    -0x44(%ebp),%edi
45b9ea:	0f 82 38 ff ff ff    	jb     0x45b928
45b9f0:	8b 75 e4             	mov    -0x1c(%ebp),%esi
45b9f3:	83 fe 03             	cmp    $0x3,%esi
45b9f6:	74 09                	je     0x45ba01
45b9f8:	83 fe 06             	cmp    $0x6,%esi
45b9fb:	0f 85 b9 00 00 00    	jne    0x45baba
45ba01:	83 7d ec 05          	cmpl   $0x5,-0x14(%ebp)
45ba05:	0f 85 af 00 00 00    	jne    0x45baba
45ba0b:	8b 45 f8             	mov    -0x8(%ebp),%eax
45ba0e:	8d 55 f4             	lea    -0xc(%ebp),%edx
45ba11:	8b 08                	mov    (%eax),%ecx
45ba13:	52                   	push   %edx
45ba14:	50                   	push   %eax
45ba15:	ff 51 0c             	call   *0xc(%ecx)
45ba18:	8b 75 f4             	mov    -0xc(%ebp),%esi
45ba1b:	8b 45 f8             	mov    -0x8(%ebp),%eax
45ba1e:	ff 75 f4             	push   -0xc(%ebp)
45ba21:	8d 7d cc             	lea    -0x34(%ebp),%edi
45ba24:	a5                   	movsl  %ds:(%esi),%es:(%edi)
45ba25:	a5                   	movsl  %ds:(%esi),%es:(%edi)
45ba26:	a5                   	movsl  %ds:(%esi),%es:(%edi)
45ba27:	a5                   	movsl  %ds:(%esi),%es:(%edi)
45ba28:	8b 08                	mov    (%eax),%ecx
45ba2a:	50                   	push   %eax
45ba2b:	ff 51 4c             	call   *0x4c(%ecx)
45ba2e:	8d 85 6c ff ff ff    	lea    -0x94(%ebp),%eax
45ba34:	6a 28                	push   $0x28