502c74:	8b 5d 08             	mov    0x8(%ebp),%ebx
502c77:	8b 45 18             	mov    0x18(%ebp),%eax
502c7a:	8b 4d 10             	mov    0x10(%ebp),%ecx
502c7d:	3b 08                	cmp    (%eax),%ecx
502c7f:	0f 85 29 01 00 00    	jne    0x502dae
502c85:	83 7d 24 01          	cmpl   $0x1,0x24(%ebp)
502c89:	0f 85 1f 01 00 00    	jne    0x502dae
502c8f:	8b 46 6c             	mov    0x6c(%esi),%eax
502c92:	40                   	inc    %eax
502c93:	03 c7                	add    %edi,%eax
502c95:	89 45 e4             	mov    %eax,-0x1c(%ebp)
502c98:	33 c0                	xor    %eax,%eax
502c9a:	89 45 f0             	mov    %eax,-0x10(%ebp)
502c9d:	85 ff                	test   %edi,%edi
502c9f:	0f 8e bb 00 00 00    	jle    0x502d60
502ca5:	8b 5d 18             	mov    0x18(%ebp),%ebx
502ca8:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
502cab:	0f b7 04 81          	movzwl (%ecx,%eax,4),%eax
502caf:	50                   	push   %eax
502cb0:	ff 33                	push   (%ebx)
502cb2:	e8 99 b1 03 00       	call   0x53de50
502cb7:	8b 4d 20             	mov    0x20(%ebp),%ecx
502cba:	8b 55 14             	mov    0x14(%ebp),%edx
502cbd:	41                   	inc    %ecx
502cbe:	98                   	cwtl
502cbf:	03 c1                	add    %ecx,%eax
502cc1:	8b 4d f0             	mov    -0x10(%ebp),%ecx
502cc4:	89 45 e8             	mov    %eax,-0x18(%ebp)
502cc7:	8b 42 04             	mov    0x4(%edx),%eax
502cca:	0f b7 3c 48          	movzwl (%eax,%ecx,2),%edi
502cce:	57                   	push   %edi
502ccf:	ff 72 0c             	push   0xc(%edx)
502cd2:	e8 79 b1 03 00       	call   0x53de50
502cd7:	8b 4d 20             	mov    0x20(%ebp),%ecx
502cda:	83 c4 10             	add    $0x10,%esp
502cdd:	98                   	cwtl
502cde:	8d 51 01             	lea    0x1(%ecx),%edx
502ce1:	03 d0                	add    %eax,%edx
502ce3:	8b 45 10             	mov    0x10(%ebp),%eax
502ce6:	66 3b 78 28          	cmp    0x28(%eax),%di
502cea:	8b 7d e8             	mov    -0x18(%ebp),%edi
502ced:	0f 44 d1             	cmove  %ecx,%edx
502cf0:	8b 4e 6c             	mov    0x6c(%esi),%ecx
502cf3:	39 4e 70             	cmp    %ecx,0x70(%esi)
502cf6:	7f 12                	jg     0x502d0a
502cf8:	52                   	push   %edx
502cf9:	ff 75 e4             	push   -0x1c(%ebp)
502cfc:	57                   	push   %edi
502cfd:	6a 34                	push   $0x34
502cff:	56                   	push   %esi
502d00:	e8 fb 37 00 00       	call   0x506500
502d05:	83 c4 14             	add    $0x14,%esp
502d08:	eb 2a                	jmp    0x502d34
502d0a:	8d 41 01             	lea    0x1(%ecx),%eax
502d0d:	89 46 6c             	mov    %eax,0x6c(%esi)
502d10:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
502d13:	8b 46 68             	mov    0x68(%esi),%eax
502d16:	89 7c 88 04          	mov    %edi,0x4(%eax,%ecx,4)
502d1a:	8b 7d e4             	mov    -0x1c(%ebp),%edi
502d1d:	c7 04 88 34 00 00 00 	movl   $0x34,(%eax,%ecx,4)
502d24:	89 7c 88 08          	mov    %edi,0x8(%eax,%ecx,4)
502d28:	89 54 88 0c          	mov    %edx,0xc(%eax,%ecx,4)
502d2c:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
502d33:	00
502d34:	8b 46 6c             	mov    0x6c(%esi),%eax
502d37:	85 c0                	test   %eax,%eax
502d39:	7e 10                	jle    0x502d4b
502d3b:	8d 0c 80             	lea    (%eax,%eax,4),%ecx
502d3e:	ba 10 00 00 00       	mov    $0x10,%edx
502d43:	8b 46 68             	mov    0x68(%esi),%eax
502d46:	66 89 54 88 ee       	mov    %dx,-0x12(%eax,%ecx,4)
502d4b:	8b 45 f0             	mov    -0x10(%ebp),%eax
502d4e:	8b 7d ec             	mov    -0x14(%ebp),%edi
502d51:	40                   	inc    %eax
502d52:	89 45 f0             	mov    %eax,-0x10(%ebp)
502d55:	3b c7                	cmp    %edi,%eax
502d57:	0f 8c 4b ff ff ff    	jl     0x502ca8
502d5d:	8b 5d 08             	mov    0x8(%ebp),%ebx
502d60:	8b 4e 6c             	mov    0x6c(%esi),%ecx
502d63:	39 4e 70             	cmp    %ecx,0x70(%esi)
502d66:	7f 14                	jg     0x502d7c
502d68:	6a 00                	push   $0x0
502d6a:	ff 75 fc             	push   -0x4(%ebp)
502d6d:	6a 00                	push   $0x0
502d6f:	6a 0b                	push   $0xb
502d71:	56                   	push   %esi
502d72:	e8 89 37 00 00       	call   0x506500
502d77:	83 c4 14             	add    $0x14,%esp
502d7a:	eb 32                	jmp    0x502dae
502d7c:	8b 55 fc             	mov    -0x4(%ebp),%edx
502d7f:	8d 41 01             	lea    0x1(%ecx),%eax
502d82:	89 46 6c             	mov    %eax,0x6c(%esi)
502d85:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
502d88:	8b 46 68             	mov    0x68(%esi),%eax
502d8b:	c7 04 88 0b 00 00 00 	movl   $0xb,(%eax,%ecx,4)
502d92:	c7 44 88 04 00 00 00 	movl   $0x0,0x4(%eax,%ecx,4)
502d99:	00
502d9a:	89 54 88 08          	mov    %edx,0x8(%eax,%ecx,4)
502d9e:	c7 44 88 0c 00 00 00 	movl   $0x0,0xc(%eax,%ecx,4)
502da5:	00
502da6:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
502dad:	00
502dae:	ff 75 14             	push   0x14(%ebp)
502db1:	ff 33                	push   (%ebx)
502db3:	e8 18 b2 02 00       	call   0x52dfd0
502db8:	89 45 f0             	mov    %eax,-0x10(%ebp)
502dbb:	83 c4 08             	add    $0x8,%esp
502dbe:	8b 46 6c             	mov    0x6c(%esi),%eax
502dc1:	89 45 e4             	mov    %eax,-0x1c(%ebp)
502dc4:	39 46 70             	cmp    %eax,0x70(%esi)
502dc7:	7f 19                	jg     0x502de2
502dc9:	ff 75 f4             	push   -0xc(%ebp)
502dcc:	57                   	push   %edi
502dcd:	ff 75 28             	push   0x28(%ebp)
502dd0:	6a 5b                	push   $0x5b
502dd2:	56                   	push   %esi
502dd3:	e8 28 37 00 00       	call   0x506500
502dd8:	8b 55 ec             	mov    -0x14(%ebp),%edx
502ddb:	83 c4 14             	add    $0x14,%esp
502dde:	8b f8                	mov    %eax,%edi
502de0:	eb 36                	jmp    0x502e18
502de2:	8b 7d e4             	mov    -0x1c(%ebp),%edi
502de5:	8b 55 28             	mov    0x28(%ebp),%edx
502de8:	8b 5d f4             	mov    -0xc(%ebp),%ebx
502deb:	8d 47 01             	lea    0x1(%edi),%eax
502dee:	89 46 6c             	mov    %eax,0x6c(%esi)
502df1:	8d 0c bf             	lea    (%edi,%edi,4),%ecx
502df4:	8b 46 68             	mov    0x68(%esi),%eax
502df7:	89 54 88 04          	mov    %edx,0x4(%eax,%ecx,4)
502dfb:	8b 55 ec             	mov    -0x14(%ebp),%edx
502dfe:	89 5c 88 0c          	mov    %ebx,0xc(%eax,%ecx,4)
502e02:	8b 5d 08             	mov    0x8(%ebp),%ebx
502e05:	c7 04 88 5b 00 00 00 	movl   $0x5b,(%eax,%ecx,4)
502e0c:	89 54 88 08          	mov    %edx,0x8(%eax,%ecx,4)
502e10:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
502e17:	00
502e18:	8b 0e                	mov    (%esi),%ecx
502e1a:	80 79 51 00          	cmpb   $0x0,0x51(%ecx)
502e1e:	74 15                	je     0x502e35
502e20:	83 fa f4             	cmp    $0xfffffff4,%edx
502e23:	74 5e                	je     0x502e83
502e25:	8b 45 f0             	mov    -0x10(%ebp),%eax
502e28:	50                   	push   %eax
502e29:	52                   	push   %edx
502e2a:	51                   	push   %ecx
502e2b:	e8 80 0e 00 00       	call   0x503cb0
502e30:	83 c4 0c             	add    $0xc,%esp
502e33:	eb 4e                	jmp    0x502e83
502e35:	85 ff                	test   %edi,%edi
502e37:	79 04                	jns    0x502e3d
502e39:	8b 7e 6c             	mov    0x6c(%esi),%edi
502e3c:	4f                   	dec    %edi
502e3d:	8b 46 68             	mov    0x68(%esi),%eax
502e40:	8d 0c bf             	lea    (%edi,%edi,4),%ecx
502e43:	8d 0c 88             	lea    (%eax,%ecx,4),%ecx
502e46:	85 d2                	test   %edx,%edx
502e48:	79 2a                	jns    0x502e74
502e4a:	80 79 01 00          	cmpb   $0x0,0x1(%ecx)
502e4e:	75 24                	jne    0x502e74
502e50:	8b 45 f0             	mov    -0x10(%ebp),%eax
502e53:	83 fa fd             	cmp    $0xfffffffd,%edx
502e56:	75 08                	jne    0x502e60
502e58:	89 41 10             	mov    %eax,0x10(%ecx)
502e5b:	88 51 01             	mov    %dl,0x1(%ecx)
502e5e:	eb 23                	jmp    0x502e83
502e60:	85 c0                	test   %eax,%eax
502e62:	74 1f                	je     0x502e83
502e64:	89 41 10             	mov    %eax,0x10(%ecx)
502e67:	88 51 01             	mov    %dl,0x1(%ecx)
502e6a:	83 fa f4             	cmp    $0xfffffff4,%edx
502e6d:	75 14                	jne    0x502e83
502e6f:	ff 40 0c             	incl   0xc(%eax)
502e72:	eb 0f                	jmp    0x502e83
502e74:	8b 45 f0             	mov    -0x10(%ebp),%eax
502e77:	52                   	push   %edx
502e78:	50                   	push   %eax
502e79:	51                   	push   %ecx
502e7a:	56                   	push   %esi
502e7b:	e8 c0 6d 05 00       	call   0x559c40
502e80:	83 c4 10             	add    $0x10,%esp
502e83:	8b 7e 6c             	mov    0x6c(%esi),%edi
502e86:	39 7e 70             	cmp    %edi,0x70(%esi)
502e89:	7f 1b                	jg     0x502ea6
502e8b:	ff 75 f4             	push   -0xc(%ebp)
502e8e:	ff 75 fc             	push   -0x4(%ebp)
502e91:	ff 75 f8             	push   -0x8(%ebp)
502e94:	6a 1e                	push   $0x1e
502e96:	56                   	push   %esi
502e97:	e8 64 36 00 00       	call   0x506500
502e9c:	8b 55 f4             	mov    -0xc(%ebp),%edx
502e9f:	83 c4 14             	add    $0x14,%esp
502ea2:	8b f8                	mov    %eax,%edi
502ea4:	eb 30                	jmp    0x502ed6
502ea6:	8b 55 f8             	mov    -0x8(%ebp),%edx
502ea9:	8d 47 01             	lea    0x1(%edi),%eax
502eac:	89 46 6c             	mov    %eax,0x6c(%esi)
502eaf:	8d 0c bf             	lea    (%edi,%edi,4),%ecx
502eb2:	8b 46 68             	mov    0x68(%esi),%eax
502eb5:	89 54 88 04          	mov    %edx,0x4(%eax,%ecx,4)
502eb9:	8b 55 fc             	mov    -0x4(%ebp),%edx
502ebc:	89 54 88 08          	mov    %edx,0x8(%eax,%ecx,4)
502ec0:	8b 55 f4             	mov    -0xc(%ebp),%edx
502ec3:	c7 04 88 1e 00 00 00 	movl   $0x1e,(%eax,%ecx,4)
502eca:	89 54 88 0c          	mov    %edx,0xc(%eax,%ecx,4)
502ece:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
502ed5:	00
502ed6:	8b 06                	mov    (%esi),%eax
502ed8:	80 78 51 00          	cmpb   $0x0,0x51(%eax)
502edc:	75 13                	jne    0x502ef1
502ede:	8b 46 68             	mov    0x68(%esi),%eax
502ee1:	8d 0c bf             	lea    (%edi,%edi,4),%ecx
502ee4:	c6 44 88 01 fd       	movb   $0xfd,0x1(%eax,%ecx,4)
502ee9:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
502ef0:	00
502ef1:	85 d2                	test   %edx,%edx
502ef3:	74 14                	je     0x502f09
502ef5:	8a 43 13             	mov    0x13(%ebx),%al
502ef8:	3c 08                	cmp    $0x8,%al
502efa:	73 0d                	jae    0x502f09
502efc:	0f b6 c0             	movzbl %al,%eax
502eff:	89 94 83 94 00 00 00 	mov    %edx,0x94(%ebx,%eax,4)
502f06:	fe 43 13             	incb   0x13(%ebx)
502f09:	8b 45 ec             	mov    -0x14(%ebp),%eax
502f0c:	83 f8 01             	cmp    $0x1,%eax
502f0f:	75 1d                	jne    0x502f2e
502f11:	8b 4d 28             	mov    0x28(%ebp),%ecx
502f14:	85 c9                	test   %ecx,%ecx
502f16:	74 24                	je     0x502f3c
502f18:	8a 43 13             	mov    0x13(%ebx),%al
502f1b:	3c 08                	cmp    $0x8,%al
502f1d:	73 1d                	jae    0x502f3c
502f1f:	0f b6 c0             	movzbl %al,%eax
502f22:	89 8c 83 94 00 00 00 	mov    %ecx,0x94(%ebx,%eax,4)
502f29:	fe 43 13             	incb   0x13(%ebx)
502f2c:	eb 0e                	jmp    0x502f3c
502f2e:	3b 43 1c             	cmp    0x1c(%ebx),%eax
502f31:	7e 09                	jle    0x502f3c
502f33:	89 43 1c             	mov    %eax,0x1c(%ebx)
502f36:	8b 45 28             	mov    0x28(%ebp),%eax
502f39:	89 43 20             	mov    %eax,0x20(%ebx)
502f3c:	8b 4d 18             	mov    0x18(%ebp),%ecx
502f3f:	8a 51 18             	mov    0x18(%ecx),%dl
502f42:	84 d2                	test   %dl,%dl
502f44:	75 74                	jne    0x502fba
502f46:	8b 03                	mov    (%ebx),%eax
502f48:	8b 40 20             	mov    0x20(%eax),%eax
502f4b:	25 00 00 08 00       	and    $0x80000,%eax
502f50:	83 c8 00             	or     $0x0,%eax
502f53:	75 65                	jne    0x502fba
502f55:	39 43 74             	cmp    %eax,0x74(%ebx)
502f58:	75 60                	jne    0x502fba
502f5a:	38 43 14             	cmp    %al,0x14(%ebx)
502f5d:	75 5b                	jne    0x502fba
502f5f:	8b 7b 08             	mov    0x8(%ebx),%edi
502f62:	85 ff                	test   %edi,%edi
502f64:	75 17                	jne    0x502f7d
502f66:	8b 03                	mov    (%ebx),%eax
502f68:	f6 40 4c 08          	testb  $0x8,0x4c(%eax)
502f6c:	75 04                	jne    0x502f72
502f6e:	c6 43 17 01          	movb   $0x1,0x17(%ebx)
502f72:	53                   	push   %ebx
502f73:	e8 98 f4 03 00       	call   0x542410
502f78:	83 c4 04             	add    $0x4,%esp
502f7b:	8b f8                	mov    %eax,%edi
502f7d:	8b 4b 74             	mov    0x74(%ebx),%ecx
502f80:	85 c9                	test   %ecx,%ecx
502f82:	6a ff                	push   $0xffffffff
502f84:	6a 00                	push   $0x0
502f86:	6a 00                	push   $0x0
502f88:	6a 02                	push   $0x2
502f8a:	0f 45 d9             	cmovne %ecx,%ebx
502f8d:	68 13 03 00 00       	push   $0x313
502f92:	6a 44                	push   $0x44
502f94:	57                   	push   %edi
502f95:	c6 43 15 01          	movb   $0x1,0x15(%ebx)
502f99:	e8 f2 eb 03 00       	call   0x541b90
502f9e:	8b 47 6c             	mov    0x6c(%edi),%eax
502fa1:	83 c4 1c             	add    $0x1c,%esp
502fa4:	85 c0                	test   %eax,%eax
502fa6:	7e 74                	jle    0x50301c
502fa8:	8d 0c 80             	lea    (%eax,%eax,4),%ecx
502fab:	ba 04 00 00 00       	mov    $0x4,%edx
502fb0:	8b 47 68             	mov    0x68(%edi),%eax
502fb3:	66 89 54 88 ee       	mov    %dx,-0x12(%eax,%ecx,4)
502fb8:	eb 62                	jmp    0x50301c
502fba:	8b 7d 24             	mov    0x24(%ebp),%edi
502fbd:	85 ff                	test   %edi,%edi
502fbf:	7e 10                	jle    0x502fd1
502fc1:	84 d2                	test   %dl,%dl
502fc3:	75 0c                	jne    0x502fd1
502fc5:	8b 43 74             	mov    0x74(%ebx),%eax
502fc8:	85 c0                	test   %eax,%eax
502fca:	0f 45 d8             	cmovne %eax,%ebx
502fcd:	c6 43 15 01          	movb   $0x1,0x15(%ebx)
502fd1:	0f b6 51 18          	movzbl 0x18(%ecx),%edx
502fd5:	8b 4e 6c             	mov    0x6c(%esi),%ecx
502fd8:	39 4e 70             	cmp    %ecx,0x70(%esi)
502fdb:	7f 14                	jg     0x502ff1
502fdd:	6a 00                	push   $0x0
502fdf:	57                   	push   %edi
502fe0:	52                   	push   %edx
502fe1:	68 95 00 00 00       	push   $0x95
502fe6:	56                   	push   %esi
502fe7:	e8 14 35 00 00       	call   0x506500
502fec:	83 c4 14             	add    $0x14,%esp
502fef:	eb 2b                	jmp    0x50301c
502ff1:	8d 41 01             	lea    0x1(%ecx),%eax
502ff4:	89 46 6c             	mov    %eax,0x6c(%esi)
502ff7:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
502ffa:	8b 46 68             	mov    0x68(%esi),%eax
502ffd:	c7 04 88 95 00 00 00 	movl   $0x95,(%eax,%ecx,4)
503004:	89 54 88 04          	mov    %edx,0x4(%eax,%ecx,4)
503008:	89 7c 88 08          	mov    %edi,0x8(%eax,%ecx,4)
50300c:	c7 44 88 0c 00 00 00 	movl   $0x0,0xc(%eax,%ecx,4)
503013:	00
503014:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
50301b:	00
50301c:	8b 4e 0c             	mov    0xc(%esi),%ecx
50301f:	8b 55 fc             	mov    -0x4(%ebp),%edx
503022:	f7 d2                	not    %edx
503024:	8b 41 3c             	mov    0x3c(%ecx),%eax
503027:	03 41 38             	add    0x38(%ecx),%eax
50302a:	79 0d                	jns    0x503039
50302c:	52                   	push   %edx
50302d:	56                   	push   %esi
50302e:	51                   	push   %ecx
50302f:	e8 6c 07 01 00       	call   0x5137a0
503034:	83 c4 0c             	add    $0xc,%esp
503037:	eb 09                	jmp    0x503042
503039:	8b 49 40             	mov    0x40(%ecx),%ecx
50303c:	8b 46 6c             	mov    0x6c(%esi),%eax
50303f:	89 04 91             	mov    %eax,(%ecx,%edx,4)
503042:	8b 4e 6c             	mov    0x6c(%esi),%ecx
503045:	39 4e 70             	cmp    %ecx,0x70(%esi)
503048:	7f 19                	jg     0x503063
50304a:	6a 00                	push   $0x0
50304c:	6a 00                	push   $0x0
50304e:	ff 75 f8             	push   -0x8(%ebp)
503051:	6a 74                	push   $0x74
503053:	56                   	push   %esi
503054:	e8 a7 34 00 00       	call   0x506500
503059:	83 c4 14             	add    $0x14,%esp
50305c:	5f                   	pop    %edi
50305d:	5e                   	pop    %esi
50305e:	5b                   	pop    %ebx
50305f:	8b e5                	mov    %ebp,%esp
503061:	5d                   	pop    %ebp
503062:	c3                   	ret
503063:	8b 55 f8             	mov    -0x8(%ebp),%edx
503066:	8d 41 01             	lea    0x1(%ecx),%eax