407859:	66 81 7b 02 ff ff    	cmpw   $0xffff,0x2(%ebx)
40785f:	56                   	push   %esi
407860:	57                   	push   %edi
407861:	8b f9                	mov    %ecx,%edi
407863:	8d 43 10             	lea    0x10(%ebx),%eax
407866:	74 03                	je     0x40786b
407868:	8d 43 08             	lea    0x8(%ebx),%eax
40786b:	0f b7 00             	movzwl (%eax),%eax
40786e:	8d 04 85 04 00 00 00 	lea    0x4(,%eax,4),%eax
407875:	50                   	push   %eax
407876:	e8 11 eb 00 00       	call   0x41638c
40787b:	85 c0                	test   %eax,%eax
40787d:	8b 75 08             	mov    0x8(%ebp),%esi
407880:	59                   	pop    %ecx
407881:	89 46 04             	mov    %eax,0x4(%esi)
407884:	0f 84 d3 00 00 00    	je     0x40795d
40788a:	8b 17                	mov    (%edi),%edx
40788c:	50                   	push   %eax
40788d:	53                   	push   %ebx
40788e:	8b cf                	mov    %edi,%ecx
407890:	ff 52 18             	call   *0x18(%edx)
407893:	53                   	push   %ebx
407894:	89 45 f4             	mov    %eax,-0xc(%ebp)
407897:	89 06                	mov    %eax,(%esi)
407899:	e8 3e fe ff ff       	call   0x4076dc
40789e:	8b f8                	mov    %eax,%edi
4078a0:	66 8b 43 02          	mov    0x2(%ebx),%ax
4078a4:	33 c9                	xor    %ecx,%ecx
4078a6:	66 3d ff ff          	cmp    $0xffff,%ax
4078aa:	0f 94 c1             	sete   %cl
4078ad:	66 3d ff ff          	cmp    $0xffff,%ax
4078b1:	8d 43 10             	lea    0x10(%ebx),%eax
4078b4:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4078b7:	74 03                	je     0x4078bc
4078b9:	8d 43 08             	lea    0x8(%ebx),%eax
4078bc:	0f b7 18             	movzwl (%eax),%ebx
4078bf:	8b c3                	mov    %ebx,%eax
4078c1:	c1 e0 03             	shl    $0x3,%eax
4078c4:	50                   	push   %eax
4078c5:	e8 8b 87 03 00       	call   0x440055
4078ca:	8b cb                	mov    %ebx,%ecx
4078cc:	c1 e1 03             	shl    $0x3,%ecx
4078cf:	51                   	push   %ecx
4078d0:	6a 00                	push   $0x0
4078d2:	50                   	push   %eax
4078d3:	89 46 0c             	mov    %eax,0xc(%esi)
4078d6:	e8 65 09 01 00       	call   0x418240
4078db:	83 65 08 00          	andl   $0x0,0x8(%ebp)
4078df:	83 c4 10             	add    $0x10,%esp
4078e2:	85 db                	test   %ebx,%ebx
4078e4:	89 5e 08             	mov    %ebx,0x8(%esi)
4078e7:	7e 6a                	jle    0x407953
4078e9:	ff 75 fc             	push   -0x4(%ebp)
4078ec:	57                   	push   %edi
4078ed:	e8 6f fe ff ff       	call   0x407761
4078f2:	89 45 f8             	mov    %eax,-0x8(%ebp)
4078f5:	8b 45 08             	mov    0x8(%ebp),%eax
4078f8:	c1 e0 03             	shl    $0x3,%eax
4078fb:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
4078ff:	74 11                	je     0x407912
407901:	8b 4e 0c             	mov    0xc(%esi),%ecx
407904:	8b 57 14             	mov    0x14(%edi),%edx
407907:	89 14 08             	mov    %edx,(%eax,%ecx,1)
40790a:	8d 4f 18             	lea    0x18(%edi),%ecx
40790d:	8b 7f 08             	mov    0x8(%edi),%edi
407910:	eb 0f                	jmp    0x407921
407912:	0f b7 4f 10          	movzwl 0x10(%edi),%ecx
407916:	8b 56 0c             	mov    0xc(%esi),%edx
407919:	89 0c 10             	mov    %ecx,(%eax,%edx,1)
40791c:	8d 4f 12             	lea    0x12(%edi),%ecx
40791f:	8b 3f                	mov    (%edi),%edi
407921:	66 81 39 ff ff       	cmpw   $0xffff,(%ecx)
407926:	75 17                	jne    0x40793f
407928:	66 81 79 02 80 00    	cmpw   $0x80,0x2(%ecx)
40792e:	75 0f                	jne    0x40793f
407930:	8b cf                	mov    %edi,%ecx
407932:	83 e1 0f             	and    $0xf,%ecx
407935:	80 f9 09             	cmp    $0x9,%cl
407938:	75 05                	jne    0x40793f
40793a:	33 c9                	xor    %ecx,%ecx
40793c:	41                   	inc    %ecx
40793d:	eb 02                	jmp    0x407941
40793f:	33 c9                	xor    %ecx,%ecx
407941:	ff 45 08             	incl   0x8(%ebp)
407944:	39 5d 08             	cmp    %ebx,0x8(%ebp)
407947:	8b 56 0c             	mov    0xc(%esi),%edx
40794a:	8b 7d f8             	mov    -0x8(%ebp),%edi
40794d:	89 4c 02 04          	mov    %ecx,0x4(%edx,%eax,1)
407951:	7c 96                	jl     0x4078e9
407953:	8b 45 f4             	mov    -0xc(%ebp),%eax
407956:	85 c0                	test   %eax,%eax
407958:	75 03                	jne    0x40795d
40795a:	8b 45 0c             	mov    0xc(%ebp),%eax
40795d:	5f                   	pop    %edi
40795e:	5e                   	pop    %esi
40795f:	5b                   	pop    %ebx
407960:	c9                   	leave
407961:	c2 08 00             	ret    $0x8
407964:	56                   	push   %esi
407965:	8b 74 24 08          	mov    0x8(%esp),%esi
407969:	8b 06                	mov    (%esi),%eax
40796b:	85 c0                	test   %eax,%eax
40796d:	74 07                	je     0x407976
40796f:	50                   	push   %eax
407970:	ff 15 5c 03 4b 00    	call   *0x4b035c
407976:	8b 46 04             	mov    0x4(%esi),%eax
407979:	85 c0                	test   %eax,%eax
40797b:	74 07                	je     0x407984
40797d:	50                   	push   %eax
40797e:	e8 1b ea 00 00       	call   0x41639e
407983:	59                   	pop    %ecx
407984:	ff 76 0c             	push   0xc(%esi)
407987:	e8 f4 86 03 00       	call   0x440080
40798c:	59                   	pop    %ecx
40798d:	5e                   	pop    %esi
40798e:	c2 04 00             	ret    $0x4
407991:	55                   	push   %ebp
407992:	8b ec                	mov    %esp,%ebp
407994:	83 ec 10             	sub    $0x10,%esp
407997:	53                   	push   %ebx
407998:	8b 5d 08             	mov    0x8(%ebp),%ebx
40799b:	56                   	push   %esi
40799c:	57                   	push   %edi
40799d:	53                   	push   %ebx
40799e:	e8 39 fd ff ff       	call   0x4076dc
4079a3:	8b d0                	mov    %eax,%edx
4079a5:	66 8b 43 02          	mov    0x2(%ebx),%ax
4079a9:	33 c9                	xor    %ecx,%ecx
4079ab:	8b f2                	mov    %edx,%esi
4079ad:	2b f3                	sub    %ebx,%esi
4079af:	66 3d ff ff          	cmp    $0xffff,%ax
4079b3:	0f 94 c1             	sete   %cl
4079b6:	66 3d ff ff          	cmp    $0xffff,%ax
4079ba:	89 55 f0             	mov    %edx,-0x10(%ebp)
4079bd:	89 75 08             	mov    %esi,0x8(%ebp)
4079c0:	8d 43 10             	lea    0x10(%ebx),%eax
4079c3:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4079c6:	74 03                	je     0x4079cb
4079c8:	8d 43 08             	lea    0x8(%ebx),%eax
4079cb:	0f b7 00             	movzwl (%eax),%eax
4079ce:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
4079d2:	85 c0                	test   %eax,%eax
4079d4:	89 45 f4             	mov    %eax,-0xc(%ebp)
4079d7:	7e 38                	jle    0x407a11
4079d9:	8b f8                	mov    %eax,%edi
4079db:	ff 75 fc             	push   -0x4(%ebp)
4079de:	52                   	push   %edx
4079df:	e8 7d fd ff ff       	call   0x407761
4079e4:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
4079e8:	8d 4a 18             	lea    0x18(%edx),%ecx
4079eb:	75 03                	jne    0x4079f0
4079ed:	8d 4a 12             	lea    0x12(%edx),%ecx
4079f0:	66 83 39 7b          	cmpw   $0x7b,(%ecx)
4079f4:	75 09                	jne    0x4079ff
4079f6:	c7 45 f8 01 00 00 00 	movl   $0x1,-0x8(%ebp)
4079fd:	eb 07                	jmp    0x407a06
4079ff:	8b c8                	mov    %eax,%ecx
407a01:	2b ca                	sub    %edx,%ecx
407a03:	01 4d 08             	add    %ecx,0x8(%ebp)
407a06:	4f                   	dec    %edi
407a07:	8b d0                	mov    %eax,%edx
407a09:	75 d0                	jne    0x4079db
407a0b:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
407a0f:	75 0d                	jne    0x407a1e
407a11:	8b 45 0c             	mov    0xc(%ebp),%eax
407a14:	83 08 ff             	orl    $0xffffffff,(%eax)
407a17:	33 c0                	xor    %eax,%eax
407a19:	e9 9b 00 00 00       	jmp    0x407ab9
407a1e:	ff 75 08             	push   0x8(%ebp)
407a21:	6a 00                	push   $0x0
407a23:	ff 15 58 03 4b 00    	call   *0x4b0358
407a29:	56                   	push   %esi
407a2a:	8b f8                	mov    %eax,%edi
407a2c:	53                   	push   %ebx
407a2d:	57                   	push   %edi
407a2e:	89 7d 08             	mov    %edi,0x8(%ebp)
407a31:	e8 3a fe 00 00       	call   0x417870
407a36:	01 75 08             	add    %esi,0x8(%ebp)
407a39:	83 c4 0c             	add    $0xc,%esp
407a3c:	66 81 7f 02 ff ff    	cmpw   $0xffff,0x2(%edi)
407a42:	8d 47 10             	lea    0x10(%edi),%eax
407a45:	74 03                	je     0x407a4a
407a47:	8d 47 08             	lea    0x8(%edi),%eax
407a4a:	8b 55 f0             	mov    -0x10(%ebp),%edx
407a4d:	33 db                	xor    %ebx,%ebx
407a4f:	66 89 18             	mov    %bx,(%eax)
407a52:	ff 75 fc             	push   -0x4(%ebp)
407a55:	52                   	push   %edx
407a56:	e8 06 fd ff ff       	call   0x407761
407a5b:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
407a5f:	8b f0                	mov    %eax,%esi
407a61:	89 75 f0             	mov    %esi,-0x10(%ebp)
407a64:	8d 42 18             	lea    0x18(%edx),%eax
407a67:	75 03                	jne    0x407a6c
407a69:	8d 42 12             	lea    0x12(%edx),%eax
407a6c:	66 83 38 7b          	cmpw   $0x7b,(%eax)
407a70:	75 08                	jne    0x407a7a
407a72:	8b 45 0c             	mov    0xc(%ebp),%eax
407a75:	89 14 98             	mov    %edx,(%eax,%ebx,4)
407a78:	eb 2a                	jmp    0x407aa4
407a7a:	2b f2                	sub    %edx,%esi
407a7c:	56                   	push   %esi
407a7d:	52                   	push   %edx
407a7e:	ff 75 08             	push   0x8(%ebp)
407a81:	e8 ea fd 00 00       	call   0x417870
407a86:	01 75 08             	add    %esi,0x8(%ebp)
407a89:	83 c4 0c             	add    $0xc,%esp
407a8c:	66 81 7f 02 ff ff    	cmpw   $0xffff,0x2(%edi)
407a92:	8d 47 10             	lea    0x10(%edi),%eax
407a95:	74 03                	je     0x407a9a
407a97:	8d 47 08             	lea    0x8(%edi),%eax
407a9a:	66 ff 00             	incw   (%eax)
407a9d:	8b 45 0c             	mov    0xc(%ebp),%eax
407aa0:	83 24 98 00          	andl   $0x0,(%eax,%ebx,4)
407aa4:	8b 55 f0             	mov    -0x10(%ebp),%edx
407aa7:	43                   	inc    %ebx
407aa8:	3b 5d f4             	cmp    -0xc(%ebp),%ebx
407aab:	7c a5                	jl     0x407a52
407aad:	8b 45 f4             	mov    -0xc(%ebp),%eax
407ab0:	8b 4d 0c             	mov    0xc(%ebp),%ecx
407ab3:	83 0c 81 ff          	orl    $0xffffffff,(%ecx,%eax,4)
407ab7:	8b c7                	mov    %edi,%eax
407ab9:	5f                   	pop    %edi
407aba:	5e                   	pop    %esi
407abb:	5b                   	pop    %ebx
407abc:	c9                   	leave
407abd:	c2 08 00             	ret    $0x8
407ac0:	56                   	push   %esi
407ac1:	57                   	push   %edi
407ac2:	8b 7c 24 0c          	mov    0xc(%esp),%edi
407ac6:	8b f1                	mov    %ecx,%esi
407ac8:	8b 4e 04             	mov    0x4(%esi),%ecx
407acb:	57                   	push   %edi
407acc:	e8 ae 8f 03 00       	call   0x440a7f
407ad1:	85 c0                	test   %eax,%eax
407ad3:	75 05                	jne    0x407ada
407ad5:	e8 57 d9 02 00       	call   0x435431
407ada:	83 66 0c 00          	andl   $0x0,0xc(%esi)
407ade:	89 7e 08             	mov    %edi,0x8(%esi)
407ae1:	5f                   	pop    %edi
407ae2:	5e                   	pop    %esi
407ae3:	c2 04 00             	ret    $0x4
407ae6:	e9 46 4c 03 00       	jmp    0x43c731
407aeb:	8b c1                	mov    %ecx,%eax
407aed:	c3                   	ret
407aee:	8b c1                	mov    %ecx,%eax
407af0:	8b 4c 24 04          	mov    0x4(%esp),%ecx
407af4:	83 60 04 00          	andl   $0x0,0x4(%eax)
407af8:	89 08                	mov    %ecx,(%eax)
407afa:	8b 4c 24 08          	mov    0x8(%esp),%ecx
407afe:	89 48 08             	mov    %ecx,0x8(%eax)
407b01:	c2 08 00             	ret    $0x8
407b04:	55                   	push   %ebp
407b05:	8b ec                	mov    %esp,%ebp
407b07:	83 ec 10             	sub    $0x10,%esp
407b0a:	53                   	push   %ebx
407b0b:	33 db                	xor    %ebx,%ebx
407b0d:	39 5d 0c             	cmp    %ebx,0xc(%ebp)
407b10:	56                   	push   %esi
407b11:	57                   	push   %edi
407b12:	8b f1                	mov    %ecx,%esi
407b14:	89 5d fc             	mov    %ebx,-0x4(%ebp)
407b17:	89 5d f8             	mov    %ebx,-0x8(%ebp)
407b1a:	74 3b                	je     0x407b57
407b1c:	e8 e0 5d 06 00       	call   0x46d901
407b21:	8b 78 0c             	mov    0xc(%eax),%edi
407b24:	68 f0 00 00 00       	push   $0xf0
407b29:	ff 75 0c             	push   0xc(%ebp)
407b2c:	57                   	push   %edi
407b2d:	ff 15 60 03 4b 00    	call   *0x4b0360
407b33:	3b c3                	cmp    %ebx,%eax
407b35:	74 20                	je     0x407b57
407b37:	50                   	push   %eax
407b38:	57                   	push   %edi
407b39:	ff 15 64 03 4b 00    	call   *0x4b0364
407b3f:	3b c3                	cmp    %ebx,%eax
407b41:	89 45 f8             	mov    %eax,-0x8(%ebp)
407b44:	75 07                	jne    0x407b4d
407b46:	33 c0                	xor    %eax,%eax
407b48:	e9 23 01 00 00       	jmp    0x407c70
407b4d:	50                   	push   %eax
407b4e:	ff 15 68 03 4b 00    	call   *0x4b0368
407b54:	89 45 fc             	mov    %eax,-0x4(%ebp)
407b57:	39 5d fc             	cmp    %ebx,-0x4(%ebp)
407b5a:	8b 5d 08             	mov    0x8(%ebp),%ebx
407b5d:	8b 7d 10             	mov    0x10(%ebp),%edi
407b60:	c7 45 f4 01 00 00 00 	movl   $0x1,-0xc(%ebp)
407b67:	74 1e                	je     0x407b87
407b69:	8b 06                	mov    (%esi),%eax
407b6b:	57                   	push   %edi
407b6c:	ff 75 fc             	push   -0x4(%ebp)
407b6f:	8b ce                	mov    %esi,%ecx
407b71:	53                   	push   %ebx
407b72:	ff 50 1c             	call   *0x1c(%eax)
407b75:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
407b79:	89 45 f4             	mov    %eax,-0xc(%ebp)
407b7c:	74 09                	je     0x407b87
407b7e:	ff 75 f8             	push   -0x8(%ebp)
407b81:	ff 15 bc 02 4b 00    	call   *0x4b02bc
407b87:	8b 43 48             	mov    0x48(%ebx),%eax
407b8a:	85 c0                	test   %eax,%eax
407b8c:	0f 84 db 00 00 00    	je     0x407c6d
407b92:	8b 48 40             	mov    0x40(%eax),%ecx
407b95:	83 65 0c 00          	andl   $0x0,0xc(%ebp)
407b99:	85 c9                	test   %ecx,%ecx
407b9b:	89 4d 08             	mov    %ecx,0x8(%ebp)
407b9e:	89 4d f8             	mov    %ecx,-0x8(%ebp)
407ba1:	74 11                	je     0x407bb4
407ba3:	8d 48 3c             	lea    0x3c(%eax),%ecx
407ba6:	8d 45 08             	lea    0x8(%ebp),%eax
407ba9:	50                   	push   %eax
407baa:	e8 b3 f8 ff ff       	call   0x407462
407baf:	8b 00                	mov    (%eax),%eax
407bb1:	89 45 0c             	mov    %eax,0xc(%ebp)
407bb4:	33 c0                	xor    %eax,%eax
407bb6:	39 47 08             	cmp    %eax,0x8(%edi)
407bb9:	89 45 fc             	mov    %eax,-0x4(%ebp)
407bbc:	0f 86 ab 00 00 00    	jbe    0x407c6d
407bc2:	8b 4d 0c             	mov    0xc(%ebp),%ecx
407bc5:	85 c9                	test   %ecx,%ecx
407bc7:	74 34                	je     0x407bfd
407bc9:	8b 49 04             	mov    0x4(%ecx),%ecx
407bcc:	8b 57 0c             	mov    0xc(%edi),%edx
407bcf:	8b 49 28             	mov    0x28(%ecx),%ecx
407bd2:	3b 0c c2             	cmp    (%edx,%eax,8),%ecx
407bd5:	75 26                	jne    0x407bfd
407bd7:	8b 45 08             	mov    0x8(%ebp),%eax
407bda:	85 c0                	test   %eax,%eax
407bdc:	89 45 f8             	mov    %eax,-0x8(%ebp)
407bdf:	74 16                	je     0x407bf7
407be1:	8b 4b 48             	mov    0x48(%ebx),%ecx
407be4:	8d 45 08             	lea    0x8(%ebp),%eax
407be7:	83 c1 3c             	add    $0x3c,%ecx
407bea:	50                   	push   %eax
407beb:	e8 72 f8 ff ff       	call   0x407462
407bf0:	8b 00                	mov    (%eax),%eax
407bf2:	89 45 0c             	mov    %eax,0xc(%ebp)
407bf5:	eb 66                	jmp    0x407c5d
407bf7:	83 65 0c 00          	andl   $0x0,0xc(%ebp)
407bfb:	eb 60                	jmp    0x407c5d
407bfd:	8b 4f 0c             	mov    0xc(%edi),%ecx
407c00:	c1 e0 03             	shl    $0x3,%eax
407c03:	83 3c 08 00          	cmpl   $0x0,(%eax,%ecx,1)
407c07:	89 45 f0             	mov    %eax,-0x10(%ebp)
407c0a:	74 51                	je     0x407c5d
407c0c:	6a 0c                	push   $0xc
407c0e:	e8 42 84 03 00       	call   0x440055
407c13:	8b f0                	mov    %eax,%esi
407c15:	85 f6                	test   %esi,%esi
407c17:	59                   	pop    %ecx