510ced:	75 dc                	jne    0x510ccb
510cef:	51                   	push   %ecx
510cf0:	53                   	push   %ebx
510cf1:	e8 da 67 01 00       	call   0x5274d0
510cf6:	83 c4 08             	add    $0x8,%esp
510cf9:	85 c0                	test   %eax,%eax
510cfb:	74 70                	je     0x510d6d
510cfd:	ff 45 e4             	incl   -0x1c(%ebp)
510d00:	6a 00                	push   $0x0
510d02:	6a 00                	push   $0x0
510d04:	53                   	push   %ebx
510d05:	ff 37                	push   (%edi)
510d07:	e8 54 fb fe ff       	call   0x500860
510d0c:	8b f8                	mov    %eax,%edi
510d0e:	6a ff                	push   $0xffffffff
510d10:	57                   	push   %edi
510d11:	e8 ea 7c 04 00       	call   0x558a00
510d16:	8b 45 e0             	mov    -0x20(%ebp),%eax
510d19:	89 45 e8             	mov    %eax,-0x18(%ebp)
510d1c:	8b 45 14             	mov    0x14(%ebp),%eax
510d1f:	89 45 ec             	mov    %eax,-0x14(%ebp)
510d22:	89 45 f0             	mov    %eax,-0x10(%ebp)
510d25:	c7 45 f4 00 00 00 00 	movl   $0x0,-0xc(%ebp)
510d2c:	8b 46 1c             	mov    0x1c(%esi),%eax
510d2f:	89 45 f8             	mov    %eax,-0x8(%ebp)
510d32:	8d 45 e8             	lea    -0x18(%ebp),%eax
510d35:	57                   	push   %edi
510d36:	50                   	push   %eax
510d37:	e8 d4 6e 04 00       	call   0x557c10
510d3c:	8b 7d e0             	mov    -0x20(%ebp),%edi
510d3f:	83 c4 20             	add    $0x20,%esp
510d42:	f6 46 04 08          	testb  $0x8,0x4(%esi)
510d46:	50                   	push   %eax
510d47:	74 0e                	je     0x510d57
510d49:	ff 76 2c             	push   0x2c(%esi)
510d4c:	57                   	push   %edi
510d4d:	e8 ae 2a 01 00       	call   0x523800
510d52:	89 46 2c             	mov    %eax,0x2c(%esi)
510d55:	eb 0c                	jmp    0x510d63
510d57:	ff 76 24             	push   0x24(%esi)
510d5a:	57                   	push   %edi
510d5b:	e8 a0 2a 01 00       	call   0x523800
510d60:	89 46 24             	mov    %eax,0x24(%esi)
510d63:	8b 76 34             	mov    0x34(%esi),%esi
510d66:	83 c4 0c             	add    $0xc,%esp
510d69:	85 f6                	test   %esi,%esi
510d6b:	75 93                	jne    0x510d00
510d6d:	8b 4d fc             	mov    -0x4(%ebp),%ecx
510d70:	8b 45 e4             	mov    -0x1c(%ebp),%eax
510d73:	33 cd                	xor    %ebp,%ecx
510d75:	5f                   	pop    %edi
510d76:	5e                   	pop    %esi
510d77:	5b                   	pop    %ebx
510d78:	e8 5d 07 0d 00       	call   0x5e14da
510d7d:	8b e5                	mov    %ebp,%esp
510d7f:	5d                   	pop    %ebp
510d80:	c3                   	ret
510d81:	cc                   	int3
510d82:	cc                   	int3
510d83:	cc                   	int3
510d84:	cc                   	int3
510d85:	cc                   	int3
510d86:	cc                   	int3
510d87:	cc                   	int3
510d88:	cc                   	int3
510d89:	cc                   	int3
510d8a:	cc                   	int3
510d8b:	cc                   	int3
510d8c:	cc                   	int3
510d8d:	cc                   	int3
510d8e:	cc                   	int3
510d8f:	cc                   	int3
510d90:	55                   	push   %ebp
510d91:	8b ec                	mov    %esp,%ebp
510d93:	83 ec 20             	sub    $0x20,%esp
510d96:	53                   	push   %ebx
510d97:	8b 5d 08             	mov    0x8(%ebp),%ebx
510d9a:	56                   	push   %esi
510d9b:	57                   	push   %edi
510d9c:	8b 7d 0c             	mov    0xc(%ebp),%edi
510d9f:	8b 73 08             	mov    0x8(%ebx),%esi
510da2:	c7 45 f0 00 00 00 00 	movl   $0x0,-0x10(%ebp)
510da9:	0f b6 4f 20          	movzbl 0x20(%edi),%ecx
510dad:	8b 07                	mov    (%edi),%eax
510daf:	f7 d1                	not    %ecx
510db1:	83 e1 01             	and    $0x1,%ecx
510db4:	89 4d f4             	mov    %ecx,-0xc(%ebp)
510db7:	8b 00                	mov    (%eax),%eax
510db9:	03 c8                	add    %eax,%ecx
510dbb:	03 4d 1c             	add    0x1c(%ebp),%ecx
510dbe:	89 45 f8             	mov    %eax,-0x8(%ebp)
510dc1:	8b 47 04             	mov    0x4(%edi),%eax
510dc4:	89 45 ec             	mov    %eax,-0x14(%ebp)
510dc7:	33 c0                	xor    %eax,%eax
510dc9:	89 45 e0             	mov    %eax,-0x20(%ebp)
510dcc:	8b 45 20             	mov    0x20(%ebp),%eax
510dcf:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
510dd2:	85 c0                	test   %eax,%eax
510dd4:	74 07                	je     0x510ddd
510dd6:	8b 55 14             	mov    0x14(%ebp),%edx
510dd9:	2b d0                	sub    %eax,%edx
510ddb:	eb 0b                	jmp    0x510de8
510ddd:	8b 43 2c             	mov    0x2c(%ebx),%eax
510de0:	8d 50 01             	lea    0x1(%eax),%edx
510de3:	03 c1                	add    %ecx,%eax
510de5:	89 43 2c             	mov    %eax,0x2c(%ebx)
510de8:	8b 4d 10             	mov    0x10(%ebp),%ecx
510deb:	89 55 fc             	mov    %edx,-0x4(%ebp)
510dee:	8b 41 0c             	mov    0xc(%ecx),%eax
510df1:	85 c0                	test   %eax,%eax
510df3:	74 03                	je     0x510df8
510df5:	40                   	inc    %eax
510df6:	eb 03                	jmp    0x510dfb
510df8:	8b 41 08             	mov    0x8(%ecx),%eax
510dfb:	ff 4b 38             	decl   0x38(%ebx)
510dfe:	8b 4d 18             	mov    0x18(%ebp),%ecx
510e01:	85 c9                	test   %ecx,%ecx
510e03:	89 45 e8             	mov    %eax,-0x18(%ebp)
510e06:	8b 43 38             	mov    0x38(%ebx),%eax
510e09:	89 47 18             	mov    %eax,0x18(%edi)
510e0c:	0f 95 c0             	setne  %al
510e0f:	8d 04 85 01 00 00 00 	lea    0x1(,%eax,4),%eax
510e16:	50                   	push   %eax
510e17:	51                   	push   %ecx
510e18:	52                   	push   %edx
510e19:	ff 37                	push   (%edi)
510e1b:	53                   	push   %ebx
510e1c:	e8 af 2e 01 00       	call   0x523cd0
510e21:	8b 4d f4             	mov    -0xc(%ebp),%ecx
510e24:	83 c4 14             	add    $0x14,%esp
510e27:	8b 55 fc             	mov    -0x4(%ebp),%edx
510e2a:	85 c9                	test   %ecx,%ecx
510e2c:	74 62                	je     0x510e90
510e2e:	8b 4f 08             	mov    0x8(%edi),%ecx
510e31:	8b 45 f8             	mov    -0x8(%ebp),%eax
510e34:	89 4d 18             	mov    %ecx,0x18(%ebp)
510e37:	03 c2                	add    %edx,%eax
510e39:	8b 4e 6c             	mov    0x6c(%esi),%ecx
510e3c:	39 4e 70             	cmp    %ecx,0x70(%esi)
510e3f:	7f 16                	jg     0x510e57
510e41:	6a 00                	push   $0x0
510e43:	50                   	push   %eax
510e44:	ff 75 18             	push   0x18(%ebp)
510e47:	6a 77                	push   $0x77
510e49:	56                   	push   %esi
510e4a:	e8 b1 56 ff ff       	call   0x506500
510e4f:	8b 55 fc             	mov    -0x4(%ebp),%edx
510e52:	83 c4 14             	add    $0x14,%esp
510e55:	eb 36                	jmp    0x510e8d
510e57:	8b 7d 18             	mov    0x18(%ebp),%edi
510e5a:	8d 41 01             	lea    0x1(%ecx),%eax
510e5d:	89 46 6c             	mov    %eax,0x6c(%esi)
510e60:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
510e63:	8b 46 68             	mov    0x68(%esi),%eax
510e66:	89 7c 88 04          	mov    %edi,0x4(%eax,%ecx,4)
510e6a:	8b 7d f8             	mov    -0x8(%ebp),%edi
510e6d:	03 fa                	add    %edx,%edi
510e6f:	c7 04 88 77 00 00 00 	movl   $0x77,(%eax,%ecx,4)
510e76:	89 7c 88 08          	mov    %edi,0x8(%eax,%ecx,4)
510e7a:	8b 7d 0c             	mov    0xc(%ebp),%edi
510e7d:	c7 44 88 0c 00 00 00 	movl   $0x0,0xc(%eax,%ecx,4)
510e84:	00
510e85:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
510e8c:	00
510e8d:	8b 4d f4             	mov    -0xc(%ebp),%ecx
510e90:	83 7d 20 00          	cmpl   $0x0,0x20(%ebp)
510e94:	75 1c                	jne    0x510eb2
510e96:	8b 45 1c             	mov    0x1c(%ebp),%eax
510e99:	85 c0                	test   %eax,%eax
510e9b:	7e 15                	jle    0x510eb2
510e9d:	50                   	push   %eax
510e9e:	8b 45 f8             	mov    -0x8(%ebp),%eax
510ea1:	03 c2                	add    %edx,%eax
510ea3:	03 c1                	add    %ecx,%eax
510ea5:	50                   	push   %eax
510ea6:	ff 75 14             	push   0x14(%ebp)
510ea9:	53                   	push   %ebx
510eaa:	e8 41 43 01 00       	call   0x5251f0
510eaf:	83 c4 10             	add    $0x10,%esp
510eb2:	83 7d ec 00          	cmpl   $0x0,-0x14(%ebp)
510eb6:	0f 8e 5b 02 00 00    	jle    0x511117
510ebc:	ff 75 e4             	push   -0x1c(%ebp)
510ebf:	ff 75 fc             	push   -0x4(%ebp)
510ec2:	ff 75 10             	push   0x10(%ebp)
510ec5:	57                   	push   %edi
510ec6:	53                   	push   %ebx
510ec7:	e8 a4 83 ff ff       	call   0x509270
510ecc:	8b 53 2c             	mov    0x2c(%ebx),%edx
510ecf:	83 c4 14             	add    $0x14,%esp
510ed2:	8b 4f 04             	mov    0x4(%edi),%ecx
510ed5:	03 ca                	add    %edx,%ecx
510ed7:	89 45 f0             	mov    %eax,-0x10(%ebp)
510eda:	89 4b 2c             	mov    %ecx,0x2c(%ebx)
510edd:	8d 42 01             	lea    0x1(%edx),%eax
510ee0:	8b 55 f8             	mov    -0x8(%ebp),%edx
510ee3:	8b ca                	mov    %edx,%ecx
510ee5:	89 45 08             	mov    %eax,0x8(%ebp)
510ee8:	2b 4f 04             	sub    0x4(%edi),%ecx
510eeb:	8b 45 f4             	mov    -0xc(%ebp),%eax
510eee:	03 c8                	add    %eax,%ecx
510ef0:	89 4d f4             	mov    %ecx,-0xc(%ebp)
510ef3:	85 c0                	test   %eax,%eax
510ef5:	74 0a                	je     0x510f01
510ef7:	8b 45 fc             	mov    -0x4(%ebp),%eax
510efa:	03 c2                	add    %edx,%eax
510efc:	50                   	push   %eax
510efd:	6a 14                	push   $0x14
510eff:	eb 05                	jmp    0x510f06
510f01:	ff 77 08             	push   0x8(%edi)
510f04:	6a 71                	push   $0x71
510f06:	56                   	push   %esi
510f07:	e8 74 0b 03 00       	call   0x541a80
510f0c:	8b 4e 6c             	mov    0x6c(%esi),%ecx
510f0f:	83 c4 0c             	add    $0xc,%esp
510f12:	8b 55 08             	mov    0x8(%ebp),%edx
510f15:	89 45 18             	mov    %eax,0x18(%ebp)
510f18:	8b 47 04             	mov    0x4(%edi),%eax
510f1b:	89 45 20             	mov    %eax,0x20(%ebp)
510f1e:	39 4e 70             	cmp    %ecx,0x70(%esi)
510f21:	7f 12                	jg     0x510f35
510f23:	50                   	push   %eax
510f24:	ff 75 fc             	push   -0x4(%ebp)
510f27:	52                   	push   %edx
510f28:	6a 56                	push   $0x56
510f2a:	56                   	push   %esi
510f2b:	e8 d0 55 ff ff       	call   0x506500
510f30:	83 c4 14             	add    $0x14,%esp
510f33:	eb 2d                	jmp    0x510f62
510f35:	8d 41 01             	lea    0x1(%ecx),%eax
510f38:	89 46 6c             	mov    %eax,0x6c(%esi)
510f3b:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
510f3e:	8b 46 68             	mov    0x68(%esi),%eax
510f41:	89 54 88 04          	mov    %edx,0x4(%eax,%ecx,4)
510f45:	8b 55 fc             	mov    -0x4(%ebp),%edx
510f48:	89 54 88 08          	mov    %edx,0x8(%eax,%ecx,4)
510f4c:	8b 55 20             	mov    0x20(%ebp),%edx
510f4f:	c7 04 88 56 00 00 00 	movl   $0x56,(%eax,%ecx,4)
510f56:	89 54 88 0c          	mov    %edx,0xc(%eax,%ecx,4)
510f5a:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
510f61:	00
510f62:	8b 4f 14             	mov    0x14(%edi),%ecx
510f65:	85 c9                	test   %ecx,%ecx
510f67:	79 04                	jns    0x510f6d
510f69:	8b 4e 6c             	mov    0x6c(%esi),%ecx
510f6c:	49                   	dec    %ecx
510f6d:	8b 06                	mov    (%esi),%eax
510f6f:	80 78 51 00          	cmpb   $0x0,0x51(%eax)
510f73:	74 07                	je     0x510f7c
510f75:	b9 ec 02 73 00       	mov    $0x7302ec,%ecx
510f7a:	eb 09                	jmp    0x510f85
510f7c:	8b 46 68             	mov    0x68(%esi),%eax
510f7f:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
510f82:	8d 0c 88             	lea    (%eax,%ecx,4),%ecx
510f85:	8b 03                	mov    (%ebx),%eax
510f87:	89 4d 20             	mov    %ecx,0x20(%ebp)
510f8a:	80 78 51 00          	cmpb   $0x0,0x51(%eax)
510f8e:	0f 85 a4 02 00 00    	jne    0x511238
510f94:	8b 45 f4             	mov    -0xc(%ebp),%eax
510f97:	03 45 1c             	add    0x1c(%ebp),%eax
510f9a:	89 41 08             	mov    %eax,0x8(%ecx)
510f9d:	8b 49 10             	mov    0x10(%ecx),%ecx
510fa0:	89 4d 1c             	mov    %ecx,0x1c(%ebp)
510fa3:	0f b7 41 06          	movzwl 0x6(%ecx),%eax
510fa7:	50                   	push   %eax
510fa8:	6a 00                	push   $0x0
510faa:	ff 71 10             	push   0x10(%ecx)
510fad:	e8 4e 2a 0d 00       	call   0x5e3a00
510fb2:	8b 06                	mov    (%esi),%eax
510fb4:	83 c4 0c             	add    $0xc,%esp
510fb7:	80 78 51 00          	cmpb   $0x0,0x51(%eax)
510fbb:	74 13                	je     0x510fd0
510fbd:	ff 75 1c             	push   0x1c(%ebp)
510fc0:	6a f7                	push   $0xfffffff7
510fc2:	50                   	push   %eax
510fc3:	e8 e8 2c ff ff       	call   0x503cb0
510fc8:	8b 45 1c             	mov    0x1c(%ebp),%eax
510fcb:	83 c4 0c             	add    $0xc,%esp
510fce:	eb 32                	jmp    0x511002
510fd0:	8b 46 6c             	mov    0x6c(%esi),%eax
510fd3:	48                   	dec    %eax
510fd4:	8d 0c 80             	lea    (%eax,%eax,4),%ecx
510fd7:	8b 46 68             	mov    0x68(%esi),%eax
510fda:	80 7c 88 01 00       	cmpb   $0x0,0x1(%eax,%ecx,4)
510fdf:	8d 0c 88             	lea    (%eax,%ecx,4),%ecx
510fe2:	74 14                	je     0x510ff8
510fe4:	6a f7                	push   $0xfffffff7
510fe6:	ff 75 1c             	push   0x1c(%ebp)
510fe9:	51                   	push   %ecx
510fea:	56                   	push   %esi
510feb:	e8 50 8c 04 00       	call   0x559c40
510ff0:	8b 45 1c             	mov    0x1c(%ebp),%eax
510ff3:	83 c4 10             	add    $0x10,%esp
510ff6:	eb 0a                	jmp    0x511002
510ff8:	8b 45 1c             	mov    0x1c(%ebp),%eax
510ffb:	89 41 10             	mov    %eax,0x10(%ecx)
510ffe:	c6 41 01 f7          	movb   $0xf7,0x1(%ecx)
511002:	0f b7 48 08          	movzwl 0x8(%eax),%ecx
511006:	0f b7 40 06          	movzwl 0x6(%eax),%eax
51100a:	2b c8                	sub    %eax,%ecx
51100c:	49                   	dec    %ecx
51100d:	51                   	push   %ecx
51100e:	ff 75 ec             	push   -0x14(%ebp)
511011:	ff 37                	push   (%edi)
511013:	53                   	push   %ebx
511014:	e8 57 ec 01 00       	call   0x52fc70
511019:	8b 4d 20             	mov    0x20(%ebp),%ecx
51101c:	83 c4 10             	add    $0x10,%esp
51101f:	89 41 10             	mov    %eax,0x10(%ecx)
511022:	8b 4e 6c             	mov    0x6c(%esi),%ecx
511025:	89 4d 1c             	mov    %ecx,0x1c(%ebp)
511028:	8d 51 01             	lea    0x1(%ecx),%edx
51102b:	39 4e 70             	cmp    %ecx,0x70(%esi)
51102e:	7f 11                	jg     0x511041
511030:	52                   	push   %edx
511031:	6a 00                	push   $0x0
511033:	52                   	push   %edx
511034:	6a 10                	push   $0x10
511036:	56                   	push   %esi
511037:	e8 c4 54 ff ff       	call   0x506500
51103c:	83 c4 14             	add    $0x14,%esp
51103f:	eb 2e                	jmp    0x51106f
511041:	8b 7d 0c             	mov    0xc(%ebp),%edi
511044:	8d 41 01             	lea    0x1(%ecx),%eax
511047:	89 46 6c             	mov    %eax,0x6c(%esi)
51104a:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
51104d:	8b 46 68             	mov    0x68(%esi),%eax
511050:	c7 04 88 10 00 00 00 	movl   $0x10,(%eax,%ecx,4)
511057:	89 54 88 04          	mov    %edx,0x4(%eax,%ecx,4)
51105b:	c7 44 88 08 00 00 00 	movl   $0x0,0x8(%eax,%ecx,4)
511062:	00
511063:	89 54 88 0c          	mov    %edx,0xc(%eax,%ecx,4)
511067:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
51106e:	00
51106f:	ff 4b 38             	decl   0x38(%ebx)
511072:	8b 43 38             	mov    0x38(%ebx),%eax
511075:	89 47 10             	mov    %eax,0x10(%edi)
511078:	8b 43 2c             	mov    0x2c(%ebx),%eax
51107b:	40                   	inc    %eax
51107c:	89 43 2c             	mov    %eax,0x2c(%ebx)
51107f:	ff 77 10             	push   0x10(%edi)
511082:	89 47 0c             	mov    %eax,0xc(%edi)
511085:	50                   	push   %eax
511086:	6a 0c                	push   $0xc
511088:	56                   	push   %esi
511089:	e8 52 0a 03 00       	call   0x541ae0
51108e:	ff 77 08             	push   0x8(%edi)
511091:	68 8a 00 00 00       	push   $0x8a
511096:	56                   	push   %esi
511097:	e8 e4 09 03 00       	call   0x541a80
51109c:	8b 45 e8             	mov    -0x18(%ebp),%eax