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
51109f:	83 c4 1c             	add    $0x1c,%esp
5110a2:	85 c0                	test   %eax,%eax
5110a4:	74 0f                	je     0x5110b5
5110a6:	ff 77 18             	push   0x18(%edi)
5110a9:	50                   	push   %eax
5110aa:	6a 14                	push   $0x14
5110ac:	56                   	push   %esi
5110ad:	e8 2e 0a 03 00       	call   0x541ae0
5110b2:	83 c4 10             	add    $0x10,%esp
5110b5:	8b 4d 18             	mov    0x18(%ebp),%ecx
5110b8:	8b 56 6c             	mov    0x6c(%esi),%edx
5110bb:	85 c9                	test   %ecx,%ecx
5110bd:	79 03                	jns    0x5110c2
5110bf:	8d 4a ff             	lea    -0x1(%edx),%ecx
5110c2:	8b 06                	mov    (%esi),%eax
5110c4:	80 78 51 00          	cmpb   $0x0,0x51(%eax)
5110c8:	74 07                	je     0x5110d1
5110ca:	b8 ec 02 73 00       	mov    $0x7302ec,%eax
5110cf:	eb 09                	jmp    0x5110da
5110d1:	8b 46 68             	mov    0x68(%esi),%eax
5110d4:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
5110d7:	8d 04 88             	lea    (%eax,%ecx,4),%eax
5110da:	89 50 08             	mov    %edx,0x8(%eax)
5110dd:	ff 77 04             	push   0x4(%edi)
5110e0:	ff 75 08             	push   0x8(%ebp)
5110e3:	ff 75 fc             	push   -0x4(%ebp)
5110e6:	53                   	push   %ebx
5110e7:	e8 04 41 01 00       	call   0x5251f0
5110ec:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
5110ef:	83 c4 10             	add    $0x10,%esp
5110f2:	8b 56 6c             	mov    0x6c(%esi),%edx
5110f5:	85 c9                	test   %ecx,%ecx
5110f7:	79 03                	jns    0x5110fc
5110f9:	8d 4a ff             	lea    -0x1(%edx),%ecx
5110fc:	8b 06                	mov    (%esi),%eax
5110fe:	80 78 51 00          	cmpb   $0x0,0x51(%eax)
511102:	74 07                	je     0x51110b
511104:	b8 ec 02 73 00       	mov    $0x7302ec,%eax
511109:	eb 09                	jmp    0x511114
51110b:	8b 46 68             	mov    0x68(%esi),%eax
51110e:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
511111:	8d 04 88             	lea    (%eax,%ecx,4),%eax
511114:	89 50 08             	mov    %edx,0x8(%eax)
511117:	8b 4d e8             	mov    -0x18(%ebp),%ecx
51111a:	85 c9                	test   %ecx,%ecx
51111c:	0f 84 91 00 00 00    	je     0x5111b3
511122:	8b 47 08             	mov    0x8(%edi),%eax
511125:	89 45 1c             	mov    %eax,0x1c(%ebp)
511128:	8b 46 6c             	mov    0x6c(%esi),%eax
51112b:	83 c0 04             	add    $0x4,%eax
51112e:	50                   	push   %eax
51112f:	51                   	push   %ecx
511130:	6a 31                	push   $0x31
511132:	56                   	push   %esi
511133:	e8 a8 09 03 00       	call   0x541ae0
511138:	8b 4e 6c             	mov    0x6c(%esi),%ecx
51113b:	83 c4 10             	add    $0x10,%esp
51113e:	8b 55 1c             	mov    0x1c(%ebp),%edx
511141:	39 4e 70             	cmp    %ecx,0x70(%esi)
511144:	7f 12                	jg     0x511158
511146:	6a 00                	push   $0x0
511148:	6a 00                	push   $0x0
51114a:	52                   	push   %edx
51114b:	6a 21                	push   $0x21
51114d:	56                   	push   %esi
51114e:	e8 ad 53 ff ff       	call   0x506500
511153:	83 c4 14             	add    $0x14,%esp
511156:	eb 2f                	jmp    0x511187
511158:	8d 41 01             	lea    0x1(%ecx),%eax
51115b:	89 46 6c             	mov    %eax,0x6c(%esi)
51115e:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
511161:	8b 46 68             	mov    0x68(%esi),%eax
511164:	c7 04 88 21 00 00 00 	movl   $0x21,(%eax,%ecx,4)
51116b:	89 54 88 04          	mov    %edx,0x4(%eax,%ecx,4)
51116f:	c7 44 88 08 00 00 00 	movl   $0x0,0x8(%eax,%ecx,4)
511176:	00
511177:	c7 44 88 0c 00 00 00 	movl   $0x0,0xc(%eax,%ecx,4)
51117e:	00
51117f:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
511186:	00
511187:	8b 45 f8             	mov    -0x8(%ebp),%eax
51118a:	2b 45 ec             	sub    -0x14(%ebp),%eax
51118d:	50                   	push   %eax
51118e:	8b 45 fc             	mov    -0x4(%ebp),%eax
511191:	03 45 ec             	add    -0x14(%ebp),%eax
511194:	50                   	push   %eax
511195:	6a 00                	push   $0x0
511197:	ff 75 1c             	push   0x1c(%ebp)
51119a:	6a 26                	push   $0x26
51119c:	56                   	push   %esi
51119d:	e8 6e 0a 03 00       	call   0x541c10
5111a2:	ff 75 1c             	push   0x1c(%ebp)
5111a5:	89 45 e0             	mov    %eax,-0x20(%ebp)
5111a8:	6a 7a                	push   $0x7a
5111aa:	56                   	push   %esi
5111ab:	e8 d0 08 03 00       	call   0x541a80
5111b0:	83 c4 24             	add    $0x24,%esp
5111b3:	8b 55 f0             	mov    -0x10(%ebp),%edx
5111b6:	85 d2                	test   %edx,%edx
5111b8:	75 18                	jne    0x5111d2
5111ba:	ff 75 e4             	push   -0x1c(%ebp)
5111bd:	ff 75 fc             	push   -0x4(%ebp)
5111c0:	ff 75 10             	push   0x10(%ebp)
5111c3:	57                   	push   %edi
5111c4:	53                   	push   %ebx
5111c5:	e8 a6 80 ff ff       	call   0x509270
5111ca:	83 c4 14             	add    $0x14,%esp
5111cd:	89 45 f0             	mov    %eax,-0x10(%ebp)
5111d0:	8b d0                	mov    %eax,%edx
5111d2:	8b 45 e4             	mov    -0x1c(%ebp),%eax
5111d5:	2b 45 ec             	sub    -0x14(%ebp),%eax
5111d8:	50                   	push   %eax
5111d9:	8b 45 fc             	mov    -0x4(%ebp),%eax
5111dc:	03 45 ec             	add    -0x14(%ebp),%eax
5111df:	50                   	push   %eax
5111e0:	8a 47 20             	mov    0x20(%edi),%al
5111e3:	52                   	push   %edx
5111e4:	ff 77 08             	push   0x8(%edi)
5111e7:	f6 d0                	not    %al
5111e9:	83 e0 01             	and    $0x1,%eax
5111ec:	0d 82 00 00 00       	or     $0x82,%eax
5111f1:	50                   	push   %eax
5111f2:	56                   	push   %esi
5111f3:	e8 18 0a 03 00       	call   0x541c10
5111f8:	8b 4d e0             	mov    -0x20(%ebp),%ecx
5111fb:	83 c4 18             	add    $0x18,%esp
5111fe:	85 c9                	test   %ecx,%ecx
511200:	74 36                	je     0x511238
511202:	8b 57 1c             	mov    0x1c(%edi),%edx
511205:	85 d2                	test   %edx,%edx
511207:	75 03                	jne    0x51120c
511209:	8b 56 6c             	mov    0x6c(%esi),%edx
51120c:	85 c9                	test   %ecx,%ecx
51120e:	79 04                	jns    0x511214
511210:	8b 4e 6c             	mov    0x6c(%esi),%ecx
511213:	49                   	dec    %ecx
511214:	8b 06                	mov    (%esi),%eax
511216:	80 78 51 00          	cmpb   $0x0,0x51(%eax)
51121a:	74 0f                	je     0x51122b
51121c:	b8 ec 02 73 00       	mov    $0x7302ec,%eax
511221:	5f                   	pop    %edi
511222:	5e                   	pop    %esi
511223:	5b                   	pop    %ebx
511224:	89 50 08             	mov    %edx,0x8(%eax)
511227:	8b e5                	mov    %ebp,%esp
511229:	5d                   	pop    %ebp
51122a:	c3                   	ret
51122b:	8b 46 68             	mov    0x68(%esi),%eax
51122e:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
511231:	89 54 88 08          	mov    %edx,0x8(%eax,%ecx,4)
511235:	8d 04 88             	lea    (%eax,%ecx,4),%eax
511238:	5f                   	pop    %edi
511239:	5e                   	pop    %esi
51123a:	5b                   	pop    %ebx
51123b:	8b e5                	mov    %ebp,%esp
51123d:	5d                   	pop    %ebp
51123e:	c3                   	ret
51123f:	cc                   	int3
511240:	55                   	push   %ebp
511241:	8b ec                	mov    %esp,%ebp
511243:	8b 45 10             	mov    0x10(%ebp),%eax
511246:	33 c9                	xor    %ecx,%ecx
511248:	8b d0                	mov    %eax,%edx
51124a:	83 ec 0c             	sub    $0xc,%esp
51124d:	81 e2 00 00 00 ff    	and    $0xff000000,%edx
511253:	0b ca                	or     %edx,%ecx
511255:	0f 84 89 00 00 00    	je     0x5112e4
51125b:	8b 55 08             	mov    0x8(%ebp),%edx
51125e:	53                   	push   %ebx
51125f:	8b 5d 0c             	mov    0xc(%ebp),%ebx
511262:	88 5a 08             	mov    %bl,0x8(%edx)
511265:	0f ac c3 08          	shrd   $0x8,%eax,%ebx
511269:	c1 e8 08             	shr    $0x8,%eax
51126c:	8a cb                	mov    %bl,%cl
51126e:	0f ac c3 07          	shrd   $0x7,%eax,%ebx