407821:	8b f8                	mov    %eax,%edi
407823:	c7 45 f0 08 00 00 00 	movl   $0x8,-0x10(%ebp)
40782a:	8b 45 f4             	mov    -0xc(%ebp),%eax
40782d:	c1 e0 04             	shl    $0x4,%eax
407830:	83 c0 04             	add    $0x4,%eax
407833:	03 c1                	add    %ecx,%eax
407835:	eb 6b                	jmp    0x4078a2
407837:	2b f8                	sub    %eax,%edi
407839:	2b f0                	sub    %eax,%esi
40783b:	0f b7 41 02          	movzwl 0x2(%ecx),%eax
40783f:	89 45 e4             	mov    %eax,-0x1c(%ebp)
407842:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
407848:	73 14                	jae    0x40785e
40784a:	3b da                	cmp    %edx,%ebx
40784c:	0f 83 d2 01 00 00    	jae    0x407a24
407852:	0f b6 03             	movzbl (%ebx),%eax
407855:	c1 e6 08             	shl    $0x8,%esi
407858:	c1 e7 08             	shl    $0x8,%edi
40785b:	0b f0                	or     %eax,%esi
40785d:	43                   	inc    %ebx
40785e:	8b c7                	mov    %edi,%eax
407860:	c1 e8 0b             	shr    $0xb,%eax
407863:	0f af 45 e4          	imul   -0x1c(%ebp),%eax
407867:	3b f0                	cmp    %eax,%esi
407869:	73 20                	jae    0x40788b
40786b:	8b f8                	mov    %eax,%edi
40786d:	8b 45 f4             	mov    -0xc(%ebp),%eax
407870:	c1 e0 04             	shl    $0x4,%eax
407873:	05 04 01 00 00       	add    $0x104,%eax
407878:	03 c1                	add    %ecx,%eax
40787a:	89 45 ec             	mov    %eax,-0x14(%ebp)
40787d:	6a 08                	push   $0x8
40787f:	58                   	pop    %eax
407880:	89 45 e4             	mov    %eax,-0x1c(%ebp)
407883:	89 45 f0             	mov    %eax,-0x10(%ebp)
407886:	8b 45 ec             	mov    -0x14(%ebp),%eax
407889:	eb 1a                	jmp    0x4078a5
40788b:	2b f8                	sub    %eax,%edi
40788d:	c7 45 f0 00 01 00 00 	movl   $0x100,-0x10(%ebp)
407894:	2b f0                	sub    %eax,%esi
407896:	8d 81 04 02 00 00    	lea    0x204(%ecx),%eax
40789c:	6a 10                	push   $0x10
40789e:	59                   	pop    %ecx
40789f:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
4078a2:	89 45 ec             	mov    %eax,-0x14(%ebp)
4078a5:	33 c9                	xor    %ecx,%ecx
4078a7:	41                   	inc    %ecx
4078a8:	03 c9                	add    %ecx,%ecx
4078aa:	0f b7 04 01          	movzwl (%ecx,%eax,1),%eax
4078ae:	89 45 f4             	mov    %eax,-0xc(%ebp)
4078b1:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
4078b7:	73 14                	jae    0x4078cd
4078b9:	3b da                	cmp    %edx,%ebx
4078bb:	0f 83 63 01 00 00    	jae    0x407a24
4078c1:	0f b6 03             	movzbl (%ebx),%eax
4078c4:	c1 e6 08             	shl    $0x8,%esi
4078c7:	c1 e7 08             	shl    $0x8,%edi
4078ca:	0b f0                	or     %eax,%esi
4078cc:	43                   	inc    %ebx
4078cd:	8b c7                	mov    %edi,%eax
4078cf:	c1 e8 0b             	shr    $0xb,%eax
4078d2:	0f af 45 f4          	imul   -0xc(%ebp),%eax
4078d6:	3b f0                	cmp    %eax,%esi
4078d8:	73 04                	jae    0x4078de
4078da:	8b f8                	mov    %eax,%edi
4078dc:	eb 05                	jmp    0x4078e3
4078de:	2b f8                	sub    %eax,%edi
4078e0:	2b f0                	sub    %eax,%esi
4078e2:	41                   	inc    %ecx
4078e3:	8b 45 ec             	mov    -0x14(%ebp),%eax
4078e6:	3b 4d f0             	cmp    -0x10(%ebp),%ecx
4078e9:	72 bd                	jb     0x4078a8
4078eb:	8b 45 e4             	mov    -0x1c(%ebp),%eax
4078ee:	2b 45 f0             	sub    -0x10(%ebp),%eax
4078f1:	03 c8                	add    %eax,%ecx
4078f3:	83 7d e0 04          	cmpl   $0x4,-0x20(%ebp)
4078f7:	0f 83 13 01 00 00    	jae    0x407a10
4078fd:	83 f9 04             	cmp    $0x4,%ecx
407900:	72 03                	jb     0x407905
407902:	6a 03                	push   $0x3
407904:	59                   	pop    %ecx
407905:	8b 45 f8             	mov    -0x8(%ebp),%eax
407908:	33 d2                	xor    %edx,%edx
40790a:	c1 e1 07             	shl    $0x7,%ecx
40790d:	05 60 03 00 00       	add    $0x360,%eax
407912:	03 c1                	add    %ecx,%eax
407914:	42                   	inc    %edx
407915:	89 45 e0             	mov    %eax,-0x20(%ebp)
407918:	03 d2                	add    %edx,%edx
40791a:	0f b7 0c 02          	movzwl (%edx,%eax,1),%ecx
40791e:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
407924:	73 15                	jae    0x40793b
407926:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
407929:	0f 83 f5 00 00 00    	jae    0x407a24
40792f:	0f b6 03             	movzbl (%ebx),%eax
407932:	c1 e6 08             	shl    $0x8,%esi
407935:	c1 e7 08             	shl    $0x8,%edi
407938:	0b f0                	or     %eax,%esi
40793a:	43                   	inc    %ebx
40793b:	8b c7                	mov    %edi,%eax
40793d:	c1 e8 0b             	shr    $0xb,%eax
407940:	0f af c1             	imul   %ecx,%eax
407943:	3b f0                	cmp    %eax,%esi
407945:	73 04                	jae    0x40794b
407947:	8b f8                	mov    %eax,%edi
407949:	eb 05                	jmp    0x407950
40794b:	2b f8                	sub    %eax,%edi
40794d:	2b f0                	sub    %eax,%esi
40794f:	42                   	inc    %edx
407950:	8b 45 e0             	mov    -0x20(%ebp),%eax
407953:	83 fa 40             	cmp    $0x40,%edx
407956:	72 c0                	jb     0x407918
407958:	83 ea 40             	sub    $0x40,%edx
40795b:	83 fa 04             	cmp    $0x4,%edx
40795e:	0f 82 ac 00 00 00    	jb     0x407a10
407964:	8b ca                	mov    %edx,%ecx
407966:	d1 e9                	shr    $1,%ecx
407968:	49                   	dec    %ecx
407969:	83 fa 0e             	cmp    $0xe,%edx
40796c:	73 1a                	jae    0x407988
40796e:	8b c2                	mov    %edx,%eax
407970:	83 e0 01             	and    $0x1,%eax
407973:	83 c8 02             	or     $0x2,%eax
407976:	d3 e0                	shl    %cl,%eax
407978:	2b c2                	sub    %edx,%eax
40797a:	8b 55 f8             	mov    -0x8(%ebp),%edx
40797d:	8d 14 42             	lea    (%edx,%eax,2),%edx
407980:	81 c2 5e 05 00 00    	add    $0x55e,%edx
407986:	eb 3f                	jmp    0x4079c7
407988:	83 e9 04             	sub    $0x4,%ecx
40798b:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
407991:	73 15                	jae    0x4079a8
407993:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
407996:	0f 83 88 00 00 00    	jae    0x407a24
40799c:	0f b6 03             	movzbl (%ebx),%eax
40799f:	c1 e6 08             	shl    $0x8,%esi
4079a2:	c1 e7 08             	shl    $0x8,%edi
4079a5:	0b f0                	or     %eax,%esi
4079a7:	43                   	inc    %ebx
4079a8:	d1 ef                	shr    $1,%edi
4079aa:	8b c6                	mov    %esi,%eax
4079ac:	2b c7                	sub    %edi,%eax
4079ae:	c1 e8 1f             	shr    $0x1f,%eax
4079b1:	48                   	dec    %eax
4079b2:	23 c7                	and    %edi,%eax
4079b4:	2b f0                	sub    %eax,%esi
4079b6:	83 e9 01             	sub    $0x1,%ecx
4079b9:	75 d0                	jne    0x40798b
4079bb:	8b 55 f8             	mov    -0x8(%ebp),%edx
4079be:	6a 04                	push   $0x4
4079c0:	81 c2 44 06 00 00    	add    $0x644,%edx
4079c6:	59                   	pop    %ecx
4079c7:	33 c0                	xor    %eax,%eax
4079c9:	40                   	inc    %eax
4079ca:	03 c0                	add    %eax,%eax
4079cc:	89 45 e0             	mov    %eax,-0x20(%ebp)
4079cf:	0f b7 04 10          	movzwl (%eax,%edx,1),%eax
4079d3:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4079d6:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
4079dc:	73 11                	jae    0x4079ef
4079de:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
4079e1:	73 41                	jae    0x407a24
4079e3:	0f b6 03             	movzbl (%ebx),%eax
4079e6:	c1 e6 08             	shl    $0x8,%esi
4079e9:	c1 e7 08             	shl    $0x8,%edi
4079ec:	0b f0                	or     %eax,%esi
4079ee:	43                   	inc    %ebx
4079ef:	8b c7                	mov    %edi,%eax
4079f1:	c1 e8 0b             	shr    $0xb,%eax
4079f4:	0f af 45 e4          	imul   -0x1c(%ebp),%eax
4079f8:	3b f0                	cmp    %eax,%esi
4079fa:	73 07                	jae    0x407a03
4079fc:	8b f8                	mov    %eax,%edi
4079fe:	8b 45 e0             	mov    -0x20(%ebp),%eax
407a01:	eb 08                	jmp    0x407a0b
407a03:	2b f8                	sub    %eax,%edi
407a05:	2b f0                	sub    %eax,%esi
407a07:	8b 45 e0             	mov    -0x20(%ebp),%eax
407a0a:	40                   	inc    %eax
407a0b:	83 e9 01             	sub    $0x1,%ecx
407a0e:	75 ba                	jne    0x4079ca
407a10:	8b 4d e8             	mov    -0x18(%ebp),%ecx
407a13:	81 ff 00 00 00 01    	cmp    $0x1000000,%edi
407a19:	73 0d                	jae    0x407a28
407a1b:	3b 5d fc             	cmp    -0x4(%ebp),%ebx
407a1e:	1b c0                	sbb    %eax,%eax
407a20:	23 c1                	and    %ecx,%eax
407a22:	eb 06                	jmp    0x407a2a
407a24:	33 c0                	xor    %eax,%eax
407a26:	eb 02                	jmp    0x407a2a
407a28:	8b c1                	mov    %ecx,%eax
407a2a:	5f                   	pop    %edi
407a2b:	5e                   	pop    %esi
407a2c:	5b                   	pop    %ebx
407a2d:	c9                   	leave
407a2e:	c3                   	ret
407a2f:	55                   	push   %ebp
407a30:	8b ec                	mov    %esp,%ebp
407a32:	83 ec 14             	sub    $0x14,%esp
407a35:	53                   	push   %ebx
407a36:	56                   	push   %esi
407a37:	57                   	push   %edi
407a38:	8b 7d 0c             	mov    0xc(%ebp),%edi
407a3b:	8b c2                	mov    %edx,%eax
407a3d:	8b f1                	mov    %ecx,%esi
407a3f:	89 45 f4             	mov    %eax,-0xc(%ebp)
407a42:	89 75 ec             	mov    %esi,-0x14(%ebp)
407a45:	8b 1f                	mov    (%edi),%ebx
407a47:	83 27 00             	andl   $0x0,(%edi)
407a4a:	e8 63 f9 ff ff       	call   0x4073b2
407a4f:	8b 55 14             	mov    0x14(%ebp),%edx
407a52:	83 22 00             	andl   $0x0,(%edx)
407a55:	81 7e 48 12 01 00 00 	cmpl   $0x112,0x48(%esi)
407a5c:	0f 84 fe 01 00 00    	je     0x407c60
407a62:	83 7e 4c 00          	cmpl   $0x0,0x4c(%esi)
407a66:	74 65                	je     0x407acd
407a68:	85 db                	test   %ebx,%ebx
407a6a:	74 1f                	je     0x407a8b
407a6c:	8b 4d 08             	mov    0x8(%ebp),%ecx
407a6f:	8b 56 58             	mov    0x58(%esi),%edx
407a72:	83 fa 05             	cmp    $0x5,%edx
407a75:	73 11                	jae    0x407a88
407a77:	8a 01                	mov    (%ecx),%al
407a79:	88 44 32 5c          	mov    %al,0x5c(%edx,%esi,1)
407a7d:	ff 46 58             	incl   0x58(%esi)
407a80:	41                   	inc    %ecx
407a81:	ff 07                	incl   (%edi)
407a83:	83 eb 01             	sub    $0x1,%ebx
407a86:	75 e7                	jne    0x407a6f
407a88:	89 4d 08             	mov    %ecx,0x8(%ebp)
407a8b:	83 7e 58 05          	cmpl   $0x5,0x58(%esi)
407a8f:	0f 82 e4 01 00 00    	jb     0x407c79
407a95:	80 7e 5c 00          	cmpb   $0x0,0x5c(%esi)
407a99:	0f 85 1d 02 00 00    	jne    0x407cbc
407a9f:	0f b6 4e 5d          	movzbl 0x5d(%esi),%ecx
407aa3:	0f b6 46 5e          	movzbl 0x5e(%esi),%eax
407aa7:	c1 e1 08             	shl    $0x8,%ecx
407aaa:	0b c8                	or     %eax,%ecx
407aac:	0f b6 46 5f          	movzbl 0x5f(%esi),%eax
407ab0:	c1 e1 08             	shl    $0x8,%ecx
407ab3:	0b c8                	or     %eax,%ecx
407ab5:	0f b6 46 60          	movzbl 0x60(%esi),%eax
407ab9:	83 4e 1c ff          	orl    $0xffffffff,0x1c(%esi)
407abd:	83 66 4c 00          	andl   $0x0,0x4c(%esi)
407ac1:	c1 e1 08             	shl    $0x8,%ecx
407ac4:	0b c8                	or     %eax,%ecx
407ac6:	83 66 58 00          	andl   $0x0,0x58(%esi)
407aca:	89 4e 20             	mov    %ecx,0x20(%esi)
407acd:	8b 45 f4             	mov    -0xc(%ebp),%eax
407ad0:	33 d2                	xor    %edx,%edx
407ad2:	89 55 fc             	mov    %edx,-0x4(%ebp)
407ad5:	39 46 24             	cmp    %eax,0x24(%esi)
407ad8:	72 27                	jb     0x407b01
407ada:	8b 46 48             	mov    0x48(%esi),%eax
407add:	85 c0                	test   %eax,%eax
407adf:	75 09                	jne    0x407aea
407ae1:	39 56 20             	cmp    %edx,0x20(%esi)
407ae4:	0f 84 9c 01 00 00    	je     0x407c86
407aea:	39 55 10             	cmp    %edx,0x10(%ebp)
407aed:	0f 84 9e 01 00 00    	je     0x407c91
407af3:	85 c0                	test   %eax,%eax
407af5:	0f 85 b8 01 00 00    	jne    0x407cb3
407afb:	33 d2                	xor    %edx,%edx
407afd:	42                   	inc    %edx
407afe:	89 55 fc             	mov    %edx,-0x4(%ebp)
407b01:	83 7e 50 00          	cmpl   $0x0,0x50(%esi)
407b05:	74 3d                	je     0x407b44
407b07:	8b 4e 04             	mov    0x4(%esi),%ecx
407b0a:	b8 00 03 00 00       	mov    $0x300,%eax
407b0f:	03 0e                	add    (%esi),%ecx
407b11:	8b 7e 10             	mov    0x10(%esi),%edi
407b14:	d3 e0                	shl    %cl,%eax
407b16:	8d 88 36 07 00 00    	lea    0x736(%eax),%ecx
407b1c:	b8 00 04 00 04       	mov    $0x4000400,%eax
407b21:	d1 e9                	shr    $1,%ecx
407b23:	f3 ab                	rep stos %eax,%es:(%edi)
407b25:	13 c9                	adc    %ecx,%ecx
407b27:	66 f3 ab             	rep stos %ax,%es:(%edi)
407b2a:	83 66 34 00          	andl   $0x0,0x34(%esi)
407b2e:	33 c0                	xor    %eax,%eax
407b30:	8b 7d 0c             	mov    0xc(%ebp),%edi
407b33:	40                   	inc    %eax
407b34:	83 66 50 00          	andl   $0x0,0x50(%esi)
407b38:	89 46 44             	mov    %eax,0x44(%esi)
407b3b:	89 46 40             	mov    %eax,0x40(%esi)
407b3e:	89 46 3c             	mov    %eax,0x3c(%esi)
407b41:	89 46 38             	mov    %eax,0x38(%esi)
407b44:	8b 4e 58             	mov    0x58(%esi),%ecx
407b47:	89 4d f0             	mov    %ecx,-0x10(%ebp)
407b4a:	85 c9                	test   %ecx,%ecx
407b4c:	75 66                	jne    0x407bb4
407b4e:	83 fb 14             	cmp    $0x14,%ebx
407b51:	72 0e                	jb     0x407b61
407b53:	85 d2                	test   %edx,%edx
407b55:	75 0a                	jne    0x407b61
407b57:	8b 45 08             	mov    0x8(%ebp),%eax
407b5a:	8d 48 ec             	lea    -0x14(%eax),%ecx
407b5d:	03 cb                	add    %ebx,%ecx
407b5f:	eb 28                	jmp    0x407b89
407b61:	8b 55 08             	mov    0x8(%ebp),%edx
407b64:	8b ce                	mov    %esi,%ecx
407b66:	53                   	push   %ebx
407b67:	e8 3d f9 ff ff       	call   0x4074a9
407b6c:	59                   	pop    %ecx
407b6d:	85 c0                	test   %eax,%eax
407b6f:	0f 84 27 01 00 00    	je     0x407c9c
407b75:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
407b79:	74 09                	je     0x407b84
407b7b:	83 f8 02             	cmp    $0x2,%eax
407b7e:	0f 85 2f 01 00 00    	jne    0x407cb3
407b84:	8b 45 08             	mov    0x8(%ebp),%eax
407b87:	8b c8                	mov    %eax,%ecx
407b89:	8b 55 f4             	mov    -0xc(%ebp),%edx
407b8c:	51                   	push   %ecx
407b8d:	8b ce                	mov    %esi,%ecx
407b8f:	89 46 18             	mov    %eax,0x18(%esi)
407b92:	e8 9d f8 ff ff       	call   0x407434
407b97:	85 c0                	test   %eax,%eax
407b99:	0f 85 1d 01 00 00    	jne    0x407cbc
407b9f:	8b 46 18             	mov    0x18(%esi),%eax
407ba2:	2b 45 08             	sub    0x8(%ebp),%eax
407ba5:	01 07                	add    %eax,(%edi)
407ba7:	2b d8                	sub    %eax,%ebx
407ba9:	8b 4e 18             	mov    0x18(%esi),%ecx
407bac:	89 4d 08             	mov    %ecx,0x8(%ebp)
407baf:	e9 9c 00 00 00       	jmp    0x407c50
407bb4:	33 d2                	xor    %edx,%edx
407bb6:	89 55 f8             	mov    %edx,-0x8(%ebp)
407bb9:	83 f9 14             	cmp    $0x14,%ecx
407bbc:	73 2d                	jae    0x407beb
407bbe:	8b 7d 08             	mov    0x8(%ebp),%edi
407bc1:	8d 46 5c             	lea    0x5c(%esi),%eax
407bc4:	03 c1                	add    %ecx,%eax
407bc6:	89 45 f8             	mov    %eax,-0x8(%ebp)
407bc9:	3b d3                	cmp    %ebx,%edx
407bcb:	73 12                	jae    0x407bdf
407bcd:	8b 75 f8             	mov    -0x8(%ebp),%esi
407bd0:	41                   	inc    %ecx
407bd1:	8a 04 3a             	mov    (%edx,%edi,1),%al
407bd4:	ff 45 f8             	incl   -0x8(%ebp)
407bd7:	42                   	inc    %edx
407bd8:	88 06                	mov    %al,(%esi)
407bda:	83 f9 14             	cmp    $0x14,%ecx
407bdd:	72 ea                	jb     0x407bc9
407bdf:	8b 75 ec             	mov    -0x14(%ebp),%esi
407be2:	8b 7d 0c             	mov    0xc(%ebp),%edi
407be5:	89 55 f8             	mov    %edx,-0x8(%ebp)
407be8:	89 4d f0             	mov    %ecx,-0x10(%ebp)
407beb:	89 4e 58             	mov    %ecx,0x58(%esi)
407bee:	83 f9 14             	cmp    $0x14,%ecx