476ec0:	00
476ec1:	33 c0                	xor    %eax,%eax
476ec3:	8d 7c 24 3a          	lea    0x3a(%esp),%edi
476ec7:	66 89 44 24 38       	mov    %ax,0x38(%esp)
476ecc:	ab                   	stos   %eax,%es:(%edi)
476ecd:	6a 00                	push   $0x0
476ecf:	ab                   	stos   %eax,%es:(%edi)
476ed0:	ab                   	stos   %eax,%es:(%edi)
476ed1:	66 ab                	stos   %ax,%es:(%edi)
476ed3:	83 fb ff             	cmp    $0xffffffff,%ebx
476ed6:	75 06                	jne    0x476ede
476ed8:	53                   	push   %ebx
476ed9:	e9 78 ff ff ff       	jmp    0x476e56
476ede:	6a 64                	push   $0x64
476ee0:	8d 44 24 60          	lea    0x60(%esp),%eax
476ee4:	8b ce                	mov    %esi,%ecx
476ee6:	50                   	push   %eax
476ee7:	53                   	push   %ebx
476ee8:	e8 44 12 00 00       	call   0x478131
476eed:	83 f8 ff             	cmp    $0xffffffff,%eax
476ef0:	0f 84 ee 01 00 00    	je     0x4770e4
476ef6:	8b 7c 24 10          	mov    0x10(%esp),%edi
476efa:	8d 47 01             	lea    0x1(%edi),%eax
476efd:	50                   	push   %eax
476efe:	e8 f3 a0 fa ff       	call   0x420ff6
476f03:	59                   	pop    %ecx
476f04:	50                   	push   %eax
476f05:	8d 4c 24 20          	lea    0x20(%esp),%ecx
476f09:	e8 80 e4 f8 ff       	call   0x40538e
476f0e:	8d 44 24 58          	lea    0x58(%esp),%eax
476f12:	50                   	push   %eax
476f13:	53                   	push   %ebx
476f14:	ff 15 ec f7 48 00    	call   *0x48f7ec
476f1a:	85 c0                	test   %eax,%eax
476f1c:	0f 84 a9 01 00 00    	je     0x4770cb
476f22:	8d 44 24 18          	lea    0x18(%esp),%eax
476f26:	50                   	push   %eax
476f27:	8d 44 24 3c          	lea    0x3c(%esp),%eax
476f2b:	50                   	push   %eax
476f2c:	6a 00                	push   $0x0
476f2e:	57                   	push   %edi
476f2f:	8b 7c 24 2c          	mov    0x2c(%esp),%edi
476f33:	57                   	push   %edi
476f34:	53                   	push   %ebx
476f35:	ff 15 dc f7 48 00    	call   *0x48f7dc
476f3b:	8b d8                	mov    %eax,%ebx
476f3d:	89 5c 24 10          	mov    %ebx,0x10(%esp)
476f41:	83 fb ff             	cmp    $0xffffffff,%ebx
476f44:	75 0e                	jne    0x476f54
476f46:	6a 00                	push   $0x0
476f48:	ff 15 04 f8 48 00    	call   *0x48f804
476f4e:	50                   	push   %eax
476f4f:	e9 7b 01 00 00       	jmp    0x4770cf
476f54:	8b 45 08             	mov    0x8(%ebp),%eax
476f57:	33 f6                	xor    %esi,%esi
476f59:	83 78 08 03          	cmpl   $0x3,0x8(%eax)
476f5d:	0f 82 f0 00 00 00    	jb     0x477053
476f63:	8b 40 04             	mov    0x4(%eax),%eax
476f66:	8b 48 08             	mov    0x8(%eax),%ecx
476f69:	e8 2e 2d f9 ff       	call   0x409c9c
476f6e:	8b 4d 08             	mov    0x8(%ebp),%ecx
476f71:	83 e0 01             	and    $0x1,%eax
476f74:	89 44 24 14          	mov    %eax,0x14(%esp)
476f78:	8b 49 04             	mov    0x4(%ecx),%ecx
476f7b:	8b 49 08             	mov    0x8(%ecx),%ecx
476f7e:	e8 19 2d f9 ff       	call   0x409c9c
476f83:	8b f0                	mov    %eax,%esi
476f85:	83 e6 02             	and    $0x2,%esi
476f88:	89 74 24 34          	mov    %esi,0x34(%esp)
476f8c:	0f 84 ad 00 00 00    	je     0x47703f
476f92:	8b 4d 0c             	mov    0xc(%ebp),%ecx
476f95:	e8 94 24 f9 ff       	call   0x40942e
476f9a:	33 ff                	xor    %edi,%edi
476f9c:	8b d8                	mov    %eax,%ebx
476f9e:	6a 03                	push   $0x3
476fa0:	47                   	inc    %edi
476fa1:	57                   	push   %edi
476fa2:	53                   	push   %ebx
476fa3:	e8 08 22 f9 ff       	call   0x4091b0
476fa8:	57                   	push   %edi
476fa9:	57                   	push   %edi
476faa:	6a 02                	push   $0x2
476fac:	53                   	push   %ebx
476fad:	e8 ee 1e f9 ff       	call   0x408ea0
476fb2:	83 c4 1c             	add    $0x1c,%esp
476fb5:	8b f0                	mov    %eax,%esi
476fb7:	ff 74 24 3c          	push   0x3c(%esp)
476fbb:	ff 15 14 f8 48 00    	call   *0x48f814
476fc1:	50                   	push   %eax
476fc2:	8d 4c 24 28          	lea    0x28(%esp),%ecx
476fc6:	e8 49 3e fe ff       	call   0x45ae14
476fcb:	8d 44 24 48          	lea    0x48(%esp),%eax
476fcf:	50                   	push   %eax
476fd0:	8d 4c 24 28          	lea    0x28(%esp),%ecx
476fd4:	e8 d3 12 00 00       	call   0x4782ac
476fd9:	50                   	push   %eax
476fda:	8b ce                	mov    %esi,%ecx
476fdc:	e8 bb 2b f9 ff       	call   0x409b9c
476fe1:	8d 4c 24 48          	lea    0x48(%esp),%ecx
476fe5:	e8 7a ea f8 ff       	call   0x405a64
476fea:	6a 02                	push   $0x2
476fec:	57                   	push   %edi
476fed:	6a 02                	push   $0x2
476fef:	53                   	push   %ebx
476ff0:	e8 ab 1e f9 ff       	call   0x408ea0
476ff5:	83 c4 10             	add    $0x10,%esp
476ff8:	8b f8                	mov    %eax,%edi
476ffa:	ff 74 24 3a          	push   0x3a(%esp)
476ffe:	ff 15 d8 f7 48 00    	call   *0x48f7d8
477004:	8b cf                	mov    %edi,%ecx
477006:	0f b7 f0             	movzwl %ax,%esi
477009:	e8 12 2a f9 ff       	call   0x409a20
47700e:	6a 00                	push   $0x0
477010:	6a 01                	push   $0x1
477012:	6a 02                	push   $0x2
477014:	53                   	push   %ebx
477015:	c7 47 0c 01 00 00 00 	movl   $0x1,0xc(%edi)
47701c:	89 37                	mov    %esi,(%edi)
47701e:	e8 7d 1e f9 ff       	call   0x408ea0
477023:	83 c4 10             	add    $0x10,%esp
477026:	89 44 24 0c          	mov    %eax,0xc(%esp)
47702a:	8d 4c 24 24          	lea    0x24(%esp),%ecx
47702e:	e8 31 ea f8 ff       	call   0x405a64
477033:	8b 5c 24 10          	mov    0x10(%esp),%ebx
477037:	8b 7c 24 1c          	mov    0x1c(%esp),%edi
47703b:	8b 74 24 34          	mov    0x34(%esp),%esi
47703f:	83 7c 24 14 00       	cmpl   $0x0,0x14(%esp)
477044:	74 0d                	je     0x477053
477046:	53                   	push   %ebx
477047:	57                   	push   %edi
477048:	53                   	push   %ebx
477049:	85 f6                	test   %esi,%esi
47704b:	74 6b                	je     0x4770b8
47704d:	8b 4c 24 18          	mov    0x18(%esp),%ecx
477051:	eb 68                	jmp    0x4770bb
477053:	57                   	push   %edi
477054:	c6 04 1f 00          	movb   $0x0,(%edi,%ebx,1)
477058:	e8 23 c9 fa ff       	call   0x423980
47705d:	59                   	pop    %ecx
47705e:	53                   	push   %ebx
47705f:	3b c3                	cmp    %ebx,%eax
477061:	75 4b                	jne    0x4770ae
477063:	8d 4c 24 28          	lea    0x28(%esp),%ecx
477067:	e8 0a 0b f9 ff       	call   0x407b76
47706c:	57                   	push   %edi
47706d:	8d 4c 24 4c          	lea    0x4c(%esp),%ecx
477071:	e8 9e 3d fe ff       	call   0x45ae14
477076:	8d 44 24 24          	lea    0x24(%esp),%eax
47707a:	50                   	push   %eax
47707b:	8d 44 24 4c          	lea    0x4c(%esp),%eax
47707f:	50                   	push   %eax
477080:	e8 b5 08 f9 ff       	call   0x40793a
477085:	8d 4c 24 48          	lea    0x48(%esp),%ecx
477089:	e8 d6 e9 f8 ff       	call   0x405a64
47708e:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
477092:	8d 44 24 24          	lea    0x24(%esp),%eax
477096:	50                   	push   %eax
477097:	85 f6                	test   %esi,%esi
477099:	75 03                	jne    0x47709e
47709b:	8b 4d 0c             	mov    0xc(%ebp),%ecx
47709e:	e8 f9 2a f9 ff       	call   0x409b9c
4770a3:	8d 4c 24 24          	lea    0x24(%esp),%ecx
4770a7:	e8 b8 e9 f8 ff       	call   0x405a64
4770ac:	eb 2d                	jmp    0x4770db
4770ae:	8b 4c 24 10          	mov    0x10(%esp),%ecx
4770b2:	57                   	push   %edi
4770b3:	53                   	push   %ebx
4770b4:	85 f6                	test   %esi,%esi
4770b6:	75 03                	jne    0x4770bb
4770b8:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4770bb:	e8 8e 08 ff ff       	call   0x46794e
4770c0:	50                   	push   %eax
4770c1:	e8 ba 9f fa ff       	call   0x421080
4770c6:	83 c4 0c             	add    $0xc,%esp
4770c9:	eb 10                	jmp    0x4770db
4770cb:	6a 00                	push   $0x0
4770cd:	6a fe                	push   $0xfffffffe
4770cf:	8b 06                	mov    (%esi),%eax
4770d1:	8b 48 04             	mov    0x4(%eax),%ecx
4770d4:	03 ce                	add    %esi,%ecx
4770d6:	e8 c8 f9 fd ff       	call   0x456aa3
4770db:	8d 4c 24 1c          	lea    0x1c(%esp),%ecx
4770df:	e8 8d e2 f8 ff       	call   0x405371
4770e4:	5f                   	pop    %edi
4770e5:	5e                   	pop    %esi
4770e6:	33 c0                	xor    %eax,%eax
4770e8:	5b                   	pop    %ebx
4770e9:	8b e5                	mov    %ebp,%esp
4770eb:	5d                   	pop    %ebp
4770ec:	c2 08 00             	ret    $0x8
4770ef:	55                   	push   %ebp
4770f0:	8b ec                	mov    %esp,%ebp
4770f2:	8b 45 08             	mov    0x8(%ebp),%eax
4770f5:	83 ec 14             	sub    $0x14,%esp
4770f8:	8b 40 04             	mov    0x4(%eax),%eax
4770fb:	53                   	push   %ebx
4770fc:	56                   	push   %esi
4770fd:	57                   	push   %edi
4770fe:	8b 30                	mov    (%eax),%esi
477100:	8b d9                	mov    %ecx,%ebx
477102:	83 7e 0c 05          	cmpl   $0x5,0xc(%esi)
477106:	74 1d                	je     0x477125
477108:	8b 75 0c             	mov    0xc(%ebp),%esi
47710b:	8b ce                	mov    %esi,%ecx
47710d:	e8 0e 29 f9 ff       	call   0x409a20
477112:	33 ff                	xor    %edi,%edi
477114:	57                   	push   %edi
477115:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
47711c:	89 3e                	mov    %edi,(%esi)
47711e:	6a fd                	push   $0xfffffffd
477120:	e9 1c 01 00 00       	jmp    0x477241
477125:	33 ff                	xor    %edi,%edi
477127:	83 7e 0c 05          	cmpl   $0x5,0xc(%esi)
47712b:	75 07                	jne    0x477134
47712d:	8b 36                	mov    (%esi),%esi
47712f:	89 75 fc             	mov    %esi,-0x4(%ebp)
477132:	eb 05                	jmp    0x477139
477134:	8b f7                	mov    %edi,%esi
477136:	89 7d fc             	mov    %edi,-0x4(%ebp)
477139:	57                   	push   %edi
47713a:	6a 01                	push   $0x1
47713c:	6a 01                	push   $0x1
47713e:	56                   	push   %esi
47713f:	e8 5c 1d f9 ff       	call   0x408ea0
477144:	83 c4 10             	add    $0x10,%esp
477147:	85 c0                	test   %eax,%eax
477149:	75 0c                	jne    0x477157
47714b:	8b 75 0c             	mov    0xc(%ebp),%esi
47714e:	8b ce                	mov    %esi,%ecx
477150:	e8 cb 28 f9 ff       	call   0x409a20
477155:	eb bd                	jmp    0x477114
477157:	8b c8                	mov    %eax,%ecx
477159:	e8 3e 2b f9 ff       	call   0x409c9c
47715e:	3d d1 94 b5 02       	cmp    $0x2b594d1,%eax
477163:	74 1b                	je     0x477180
477165:	8b 75 0c             	mov    0xc(%ebp),%esi
477168:	8b ce                	mov    %esi,%ecx
47716a:	e8 b1 28 f9 ff       	call   0x409a20
47716f:	57                   	push   %edi
477170:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
477177:	89 3e                	mov    %edi,(%esi)
477179:	6a fc                	push   $0xfffffffc
47717b:	e9 c1 00 00 00       	jmp    0x477241
477180:	6a 02                	push   $0x2
477182:	6a 01                	push   $0x1
477184:	6a 01                	push   $0x1
477186:	56                   	push   %esi
477187:	e8 14 1d f9 ff       	call   0x408ea0
47718c:	83 c4 10             	add    $0x10,%esp
47718f:	8b f0                	mov    %eax,%esi
477191:	8b ce                	mov    %esi,%ecx
477193:	e8 ff 27 f9 ff       	call   0x409997
477198:	8b 76 08             	mov    0x8(%esi),%esi
47719b:	6a 03                	push   $0x3
47719d:	6a 01                	push   $0x1
47719f:	6a 01                	push   $0x1
4771a1:	ff 75 fc             	push   -0x4(%ebp)
4771a4:	e8 f7 1c f9 ff       	call   0x408ea0
4771a9:	83 c4 10             	add    $0x10,%esp
4771ac:	8b c8                	mov    %eax,%ecx
4771ae:	e8 e9 2a f9 ff       	call   0x409c9c
4771b3:	50                   	push   %eax
4771b4:	56                   	push   %esi
4771b5:	8d 45 ec             	lea    -0x14(%ebp),%eax
4771b8:	8b cb                	mov    %ebx,%ecx
4771ba:	50                   	push   %eax
4771bb:	e8 e0 0e 00 00       	call   0x4780a0
4771c0:	84 c0                	test   %al,%al
4771c2:	75 12                	jne    0x4771d6
4771c4:	8b 75 0c             	mov    0xc(%ebp),%esi
4771c7:	8b ce                	mov    %esi,%ecx
4771c9:	e8 52 28 f9 ff       	call   0x409a20
4771ce:	83 0e ff             	orl    $0xffffffff,(%esi)
4771d1:	e9 83 00 00 00       	jmp    0x477259
4771d6:	6a 01                	push   $0x1
4771d8:	6a 01                	push   $0x1
4771da:	6a 01                	push   $0x1
4771dc:	ff 75 fc             	push   -0x4(%ebp)
4771df:	e8 bc 1c f9 ff       	call   0x408ea0
4771e4:	83 c4 10             	add    $0x10,%esp
4771e7:	8b c8                	mov    %eax,%ecx
4771e9:	e8 ae 2a f9 ff       	call   0x409c9c
4771ee:	8b f0                	mov    %eax,%esi
4771f0:	8b 45 08             	mov    0x8(%ebp),%eax
4771f3:	8b 48 04             	mov    0x4(%eax),%ecx
4771f6:	8b 49 04             	mov    0x4(%ecx),%ecx
4771f9:	e8 a1 17 ff ff       	call   0x46899f
4771fe:	8b d0                	mov    %eax,%edx
477200:	8b 45 08             	mov    0x8(%ebp),%eax
477203:	8b 48 04             	mov    0x4(%eax),%ecx
477206:	8b 49 04             	mov    0x4(%ecx),%ecx
477209:	e8 d4 17 ff ff       	call   0x4689e2
47720e:	6a 10                	push   $0x10
477210:	8d 4d ec             	lea    -0x14(%ebp),%ecx
477213:	51                   	push   %ecx
477214:	57                   	push   %edi
477215:	50                   	push   %eax
477216:	52                   	push   %edx
477217:	56                   	push   %esi
477218:	ff 15 0c f8 48 00    	call   *0x48f80c
47721e:	8b 75 0c             	mov    0xc(%ebp),%esi
477221:	8b ce                	mov    %esi,%ecx
477223:	89 45 08             	mov    %eax,0x8(%ebp)
477226:	83 f8 ff             	cmp    $0xffffffff,%eax
477229:	75 24                	jne    0x47724f
47722b:	e8 f0 27 f9 ff       	call   0x409a20
477230:	57                   	push   %edi
477231:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
477238:	89 3e                	mov    %edi,(%esi)
47723a:	ff 15 04 f8 48 00    	call   *0x48f804
477240:	50                   	push   %eax
477241:	8b 03                	mov    (%ebx),%eax
477243:	8b 48 04             	mov    0x4(%eax),%ecx
477246:	03 cb                	add    %ebx,%ecx
477248:	e8 56 f8 fd ff       	call   0x456aa3
47724d:	eb 11                	jmp    0x477260
47724f:	e8 cc 27 f9 ff       	call   0x409a20
477254:	8b 45 08             	mov    0x8(%ebp),%eax
477257:	89 06                	mov    %eax,(%esi)
477259:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
477260:	5f                   	pop    %edi
477261:	5e                   	pop    %esi
477262:	33 c0                	xor    %eax,%eax
477264:	5b                   	pop    %ebx
477265:	8b e5                	mov    %ebp,%esp
477267:	5d                   	pop    %ebp
477268:	c2 08 00             	ret    $0x8
47726b:	55                   	push   %ebp
47726c:	8b ec                	mov    %esp,%ebp
47726e:	8b 45 08             	mov    0x8(%ebp),%eax
477271:	8b 40 04             	mov    0x4(%eax),%eax
477274:	8b 00                	mov    (%eax),%eax
477276:	8b 40 0c             	mov    0xc(%eax),%eax
477279:	48                   	dec    %eax
47727a:	83 f8 0e             	cmp    $0xe,%eax
47727d:	77 70                	ja     0x4772ef
47727f:	ff 24 85 03 73 47 00 	jmp    *0x477303(,%eax,4)
477286:	68 a0 a9 4b 00       	push   $0x4ba9a0
47728b:	eb 67                	jmp    0x4772f4
47728d:	68 ac a9 4b 00       	push   $0x4ba9ac
477292:	eb 60                	jmp    0x4772f4
477294:	68 b8 a9 4b 00       	push   $0x4ba9b8
477299:	eb 59                	jmp    0x4772f4
47729b:	68 c8 a9 4b 00       	push   $0x4ba9c8
4772a0:	eb 52                	jmp    0x4772f4
4772a2:	68 d8 a9 4b 00       	push   $0x4ba9d8
4772a7:	eb 4b                	jmp    0x4772f4
4772a9:	68 e4 a9 4b 00       	push   $0x4ba9e4
4772ae:	eb 44                	jmp    0x4772f4
4772b0:	68 f8 a9 4b 00       	push   $0x4ba9f8