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
407bf1:	72 06                	jb     0x407bf9
407bf3:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
407bf7:	74 23                	je     0x407c1c
407bf9:	51                   	push   %ecx
407bfa:	8d 56 5c             	lea    0x5c(%esi),%edx
407bfd:	8b ce                	mov    %esi,%ecx
407bff:	e8 a5 f8 ff ff       	call   0x4074a9
407c04:	59                   	pop    %ecx
407c05:	85 c0                	test   %eax,%eax
407c07:	0f 84 b4 00 00 00    	je     0x407cc1
407c0d:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
407c11:	74 09                	je     0x407c1c
407c13:	83 f8 02             	cmp    $0x2,%eax
407c16:	0f 85 97 00 00 00    	jne    0x407cb3
407c1c:	8b 55 f4             	mov    -0xc(%ebp),%edx
407c1f:	8d 46 5c             	lea    0x5c(%esi),%eax
407c22:	50                   	push   %eax
407c23:	8b ce                	mov    %esi,%ecx
407c25:	89 46 18             	mov    %eax,0x18(%esi)
407c28:	e8 07 f8 ff ff       	call   0x407434
407c2d:	85 c0                	test   %eax,%eax
407c2f:	0f 85 87 00 00 00    	jne    0x407cbc
407c35:	8b 46 18             	mov    0x18(%esi),%eax
407c38:	2b 45 f0             	sub    -0x10(%ebp),%eax
407c3b:	8b 4d f8             	mov    -0x8(%ebp),%ecx
407c3e:	2b c6                	sub    %esi,%eax
407c40:	83 c1 a4             	add    $0xffffffa4,%ecx
407c43:	03 c1                	add    %ecx,%eax
407c45:	01 07                	add    %eax,(%edi)
407c47:	2b d8                	sub    %eax,%ebx
407c49:	01 45 08             	add    %eax,0x8(%ebp)
407c4c:	83 66 58 00          	andl   $0x0,0x58(%esi)
407c50:	81 7e 48 12 01 00 00 	cmpl   $0x112,0x48(%esi)
407c57:	0f 85 05 fe ff ff    	jne    0x407a62
407c5d:	8b 55 14             	mov    0x14(%ebp),%edx
407c60:	8b 4e 20             	mov    0x20(%esi),%ecx
407c63:	85 c9                	test   %ecx,%ecx
407c65:	75 06                	jne    0x407c6d
407c67:	c7 02 01 00 00 00    	movl   $0x1,(%edx)
407c6d:	33 c0                	xor    %eax,%eax
407c6f:	85 c9                	test   %ecx,%ecx
407c71:	0f 95 c0             	setne  %al
407c74:	5f                   	pop    %edi
407c75:	5e                   	pop    %esi
407c76:	5b                   	pop    %ebx
407c77:	c9                   	leave
407c78:	c3                   	ret
407c79:	8b 45 14             	mov    0x14(%ebp),%eax
407c7c:	c7 00 03 00 00 00    	movl   $0x3,(%eax)
407c82:	33 c0                	xor    %eax,%eax
407c84:	eb ee                	jmp    0x407c74
407c86:	8b 45 14             	mov    0x14(%ebp),%eax
407c89:	c7 00 04 00 00 00    	movl   $0x4,(%eax)
407c8f:	eb f1                	jmp    0x407c82
407c91:	8b 45 14             	mov    0x14(%ebp),%eax
407c94:	c7 00 02 00 00 00    	movl   $0x2,(%eax)
407c9a:	eb e6                	jmp    0x407c82
407c9c:	53                   	push   %ebx
407c9d:	ff 75 08             	push   0x8(%ebp)
407ca0:	8d 46 5c             	lea    0x5c(%esi),%eax
407ca3:	50                   	push   %eax
407ca4:	e8 27 1f 00 00       	call   0x409bd0
407ca9:	83 c4 0c             	add    $0xc,%esp
407cac:	89 5e 58             	mov    %ebx,0x58(%esi)
407caf:	01 1f                	add    %ebx,(%edi)
407cb1:	eb c6                	jmp    0x407c79
407cb3:	8b 45 14             	mov    0x14(%ebp),%eax
407cb6:	c7 00 02 00 00 00    	movl   $0x2,(%eax)
407cbc:	33 c0                	xor    %eax,%eax
407cbe:	40                   	inc    %eax
407cbf:	eb b3                	jmp    0x407c74
407cc1:	8b 4d f8             	mov    -0x8(%ebp),%ecx
407cc4:	01 0f                	add    %ecx,(%edi)
407cc6:	eb b1                	jmp    0x407c79
407cc8:	55                   	push   %ebp
407cc9:	8b ec                	mov    %esp,%ebp
407ccb:	83 ec 10             	sub    $0x10,%esp
407cce:	8b 45 10             	mov    0x10(%ebp),%eax
407cd1:	53                   	push   %ebx
407cd2:	8b d9                	mov    %ecx,%ebx
407cd4:	89 55 f4             	mov    %edx,-0xc(%ebp)
407cd7:	8b 4d 08             	mov    0x8(%ebp),%ecx
407cda:	8b 10                	mov    (%eax),%edx
407cdc:	56                   	push   %esi
407cdd:	57                   	push   %edi
407cde:	8b 39                	mov    (%ecx),%edi
407ce0:	83 21 00             	andl   $0x0,(%ecx)
407ce3:	83 20 00             	andl   $0x0,(%eax)
407ce6:	89 55 fc             	mov    %edx,-0x4(%ebp)
407ce9:	8b 73 24             	mov    0x24(%ebx),%esi
407cec:	89 55 f8             	mov    %edx,-0x8(%ebp)
407cef:	8b 53 28             	mov    0x28(%ebx),%edx
407cf2:	3b f2                	cmp    %edx,%esi
407cf4:	75 06                	jne    0x407cfc
407cf6:	83 63 24 00          	andl   $0x0,0x24(%ebx)
407cfa:	33 f6                	xor    %esi,%esi
407cfc:	8b c2                	mov    %edx,%eax
407cfe:	2b c6                	sub    %esi,%eax
407d00:	3b f8                	cmp    %eax,%edi
407d02:	77 03                	ja     0x407d07
407d04:	8d 14 3e             	lea    (%esi,%edi,1),%edx
407d07:	ff 75 18             	push   0x18(%ebp)
407d0a:	3b c7                	cmp    %edi,%eax
407d0c:	8b cb                	mov    %ebx,%ecx
407d0e:	1b c0                	sbb    %eax,%eax
407d10:	40                   	inc    %eax
407d11:	50                   	push   %eax
407d12:	8d 45 f8             	lea    -0x8(%ebp),%eax
407d15:	50                   	push   %eax
407d16:	ff 75 0c             	push   0xc(%ebp)
407d19:	e8 11 fd ff ff       	call   0x407a2f
407d1e:	8b 4d f8             	mov    -0x8(%ebp),%ecx
407d21:	01 4d 0c             	add    %ecx,0xc(%ebp)
407d24:	29 4d fc             	sub    %ecx,-0x4(%ebp)
407d27:	89 45 f0             	mov    %eax,-0x10(%ebp)
407d2a:	8b 45 10             	mov    0x10(%ebp),%eax
407d2d:	01 08                	add    %ecx,(%eax)
407d2f:	8b 43 24             	mov    0x24(%ebx),%eax
407d32:	8b 4b 14             	mov    0x14(%ebx),%ecx
407d35:	2b c6                	sub    %esi,%eax
407d37:	50                   	push   %eax
407d38:	03 ce                	add    %esi,%ecx
407d3a:	89 45 f8             	mov    %eax,-0x8(%ebp)
407d3d:	8b 75 f4             	mov    -0xc(%ebp),%esi
407d40:	51                   	push   %ecx
407d41:	56                   	push   %esi
407d42:	e8 89 1e 00 00       	call   0x409bd0
407d47:	8b 4d 08             	mov    0x8(%ebp),%ecx
407d4a:	83 c4 1c             	add    $0x1c,%esp
407d4d:	8b 45 f8             	mov    -0x8(%ebp),%eax
407d50:	03 f0                	add    %eax,%esi
407d52:	2b f8                	sub    %eax,%edi
407d54:	89 75 f4             	mov    %esi,-0xc(%ebp)
407d57:	01 01                	add    %eax,(%ecx)
407d59:	8b 4d f0             	mov    -0x10(%ebp),%ecx
407d5c:	85 c9                	test   %ecx,%ecx
407d5e:	75 13                	jne    0x407d73
407d60:	85 c0                	test   %eax,%eax
407d62:	74 0b                	je     0x407d6f
407d64:	8b 55 fc             	mov    -0x4(%ebp),%edx
407d67:	85 ff                	test   %edi,%edi
407d69:	0f 85 7a ff ff ff    	jne    0x407ce9
407d6f:	33 c0                	xor    %eax,%eax
407d71:	eb 02                	jmp    0x407d75
407d73:	8b c1                	mov    %ecx,%eax
407d75:	5f                   	pop    %edi
407d76:	5e                   	pop    %esi
407d77:	5b                   	pop    %ebx
407d78:	c9                   	leave
407d79:	c3                   	ret
407d7a:	56                   	push   %esi
407d7b:	8b 72 04             	mov    0x4(%edx),%esi
407d7e:	57                   	push   %edi
407d7f:	8b f9                	mov    %ecx,%edi
407d81:	8b ce                	mov    %esi,%ecx
407d83:	ff 77 10             	push   0x10(%edi)
407d86:	52                   	push   %edx
407d87:	ff 15 50 c2 41 00    	call   *0x41c250
407d8d:	ff d6                	call   *%esi
407d8f:	83 67 10 00          	andl   $0x0,0x10(%edi)
407d93:	59                   	pop    %ecx
407d94:	59                   	pop    %ecx
407d95:	5f                   	pop    %edi
407d96:	5e                   	pop    %esi
407d97:	c3                   	ret
407d98:	0f b6 42 03          	movzbl 0x3(%edx),%eax
407d9c:	56                   	push   %esi
407d9d:	0f b6 72 04          	movzbl 0x4(%edx),%esi
407da1:	c1 e6 08             	shl    $0x8,%esi
407da4:	0b f0                	or     %eax,%esi
407da6:	0f b6 42 02          	movzbl 0x2(%edx),%eax
407daa:	c1 e6 08             	shl    $0x8,%esi
407dad:	0b f0                	or     %eax,%esi
407daf:	0f b6 42 01          	movzbl 0x1(%edx),%eax
407db3:	c1 e6 08             	shl    $0x8,%esi