404f04:	56                   	push   %esi
404f05:	57                   	push   %edi
404f06:	55                   	push   %ebp
404f07:	6a 00                	push   $0x0
404f09:	6a 00                	push   $0x0
404f0b:	68 18 4f 40 00       	push   $0x404f18
404f10:	ff 75 08             	push   0x8(%ebp)
404f13:	e8 be 35 01 00       	call   0x4184d6
404f18:	5d                   	pop    %ebp
404f19:	5f                   	pop    %edi
404f1a:	5e                   	pop    %esi
404f1b:	5b                   	pop    %ebx
404f1c:	8b e5                	mov    %ebp,%esp
404f1e:	5d                   	pop    %ebp
404f1f:	c3                   	ret
404f20:	8b 4c 24 04          	mov    0x4(%esp),%ecx
404f24:	f7 41 04 06 00 00 00 	testl  $0x6,0x4(%ecx)
404f2b:	b8 01 00 00 00       	mov    $0x1,%eax
404f30:	74 32                	je     0x404f64
404f32:	8b 44 24 14          	mov    0x14(%esp),%eax
404f36:	8b 48 fc             	mov    -0x4(%eax),%ecx
404f39:	33 c8                	xor    %eax,%ecx
404f3b:	e8 16 e0 ff ff       	call   0x402f56
404f40:	55                   	push   %ebp
404f41:	8b 68 10             	mov    0x10(%eax),%ebp
404f44:	8b 50 28             	mov    0x28(%eax),%edx
404f47:	52                   	push   %edx
404f48:	8b 50 24             	mov    0x24(%eax),%edx
404f4b:	52                   	push   %edx
404f4c:	e8 14 00 00 00       	call   0x404f65
404f51:	83 c4 08             	add    $0x8,%esp
404f54:	5d                   	pop    %ebp
404f55:	8b 44 24 08          	mov    0x8(%esp),%eax
404f59:	8b 54 24 10          	mov    0x10(%esp),%edx
404f5d:	89 02                	mov    %eax,(%edx)
404f5f:	b8 03 00 00 00       	mov    $0x3,%eax
404f64:	c3                   	ret
404f65:	53                   	push   %ebx
404f66:	56                   	push   %esi
404f67:	57                   	push   %edi
404f68:	8b 44 24 10          	mov    0x10(%esp),%eax
404f6c:	55                   	push   %ebp
404f6d:	50                   	push   %eax
404f6e:	6a fe                	push   $0xfffffffe
404f70:	68 20 4f 40 00       	push   $0x404f20
404f75:	64 ff 35 00 00 00 00 	push   %fs:0x0
404f7c:	a1 0c 30 42 00       	mov    0x42300c,%eax
404f81:	33 c4                	xor    %esp,%eax
404f83:	50                   	push   %eax
404f84:	8d 44 24 04          	lea    0x4(%esp),%eax
404f88:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
404f8e:	8b 44 24 28          	mov    0x28(%esp),%eax
404f92:	8b 58 08             	mov    0x8(%eax),%ebx
404f95:	8b 70 0c             	mov    0xc(%eax),%esi
404f98:	83 fe ff             	cmp    $0xffffffff,%esi
404f9b:	74 3a                	je     0x404fd7
404f9d:	83 7c 24 2c ff       	cmpl   $0xffffffff,0x2c(%esp)
404fa2:	74 06                	je     0x404faa
404fa4:	3b 74 24 2c          	cmp    0x2c(%esp),%esi
404fa8:	76 2d                	jbe    0x404fd7
404faa:	8d 34 76             	lea    (%esi,%esi,2),%esi
404fad:	8b 0c b3             	mov    (%ebx,%esi,4),%ecx
404fb0:	89 4c 24 0c          	mov    %ecx,0xc(%esp)
404fb4:	89 48 0c             	mov    %ecx,0xc(%eax)
404fb7:	83 7c b3 04 00       	cmpl   $0x0,0x4(%ebx,%esi,4)
404fbc:	75 17                	jne    0x404fd5
404fbe:	68 01 01 00 00       	push   $0x101
404fc3:	8b 44 b3 08          	mov    0x8(%ebx,%esi,4),%eax
404fc7:	e8 49 00 00 00       	call   0x405015
404fcc:	8b 44 b3 08          	mov    0x8(%ebx,%esi,4),%eax
404fd0:	e8 5f 00 00 00       	call   0x405034
404fd5:	eb b7                	jmp    0x404f8e
404fd7:	8b 4c 24 04          	mov    0x4(%esp),%ecx
404fdb:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
404fe2:	83 c4 18             	add    $0x18,%esp
404fe5:	5f                   	pop    %edi
404fe6:	5e                   	pop    %esi
404fe7:	5b                   	pop    %ebx
404fe8:	c3                   	ret
404fe9:	33 c0                	xor    %eax,%eax
404feb:	64 8b 0d 00 00 00 00 	mov    %fs:0x0,%ecx
404ff2:	81 79 04 20 4f 40 00 	cmpl   $0x404f20,0x4(%ecx)
404ff9:	75 10                	jne    0x40500b
404ffb:	8b 51 0c             	mov    0xc(%ecx),%edx
404ffe:	8b 52 0c             	mov    0xc(%edx),%edx
405001:	39 51 08             	cmp    %edx,0x8(%ecx)
405004:	75 05                	jne    0x40500b
405006:	b8 01 00 00 00       	mov    $0x1,%eax
40500b:	c3                   	ret
40500c:	53                   	push   %ebx
40500d:	51                   	push   %ecx
40500e:	bb 40 30 42 00       	mov    $0x423040,%ebx
405013:	eb 0b                	jmp    0x405020
405015:	53                   	push   %ebx
405016:	51                   	push   %ecx
405017:	bb 40 30 42 00       	mov    $0x423040,%ebx
40501c:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
405020:	89 4b 08             	mov    %ecx,0x8(%ebx)
405023:	89 43 04             	mov    %eax,0x4(%ebx)
405026:	89 6b 0c             	mov    %ebp,0xc(%ebx)
405029:	55                   	push   %ebp
40502a:	51                   	push   %ecx
40502b:	50                   	push   %eax
40502c:	58                   	pop    %eax
40502d:	59                   	pop    %ecx
40502e:	5d                   	pop    %ebp
40502f:	59                   	pop    %ecx
405030:	5b                   	pop    %ebx
405031:	c2 04 00             	ret    $0x4
405034:	ff d0                	call   *%eax
405036:	c3                   	ret
405037:	8b ff                	mov    %edi,%edi
405039:	55                   	push   %ebp
40503a:	8b ec                	mov    %esp,%ebp
40503c:	81 ec 84 04 00 00    	sub    $0x484,%esp
405042:	a1 0c 30 42 00       	mov    0x42300c,%eax
405047:	33 c5                	xor    %ebp,%eax
405049:	89 45 fc             	mov    %eax,-0x4(%ebp)
40504c:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
405050:	8b 45 10             	mov    0x10(%ebp),%eax
405053:	53                   	push   %ebx
405054:	8b 5d 14             	mov    0x14(%ebp),%ebx
405057:	89 85 a0 fb ff ff    	mov    %eax,-0x460(%ebp)
40505d:	75 18                	jne    0x405077
40505f:	e8 a3 2c 00 00       	call   0x407d07
405064:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40506a:	e8 bf 2b 00 00       	call   0x407c2e
40506f:	83 c8 ff             	or     $0xffffffff,%eax
405072:	e9 17 01 00 00       	jmp    0x40518e
405077:	85 db                	test   %ebx,%ebx
405079:	74 04                	je     0x40507f
40507b:	85 c0                	test   %eax,%eax
40507d:	74 e0                	je     0x40505f
40507f:	56                   	push   %esi
405080:	57                   	push   %edi
405081:	ff 75 1c             	push   0x1c(%ebp)
405084:	8d 8d 7c fb ff ff    	lea    -0x484(%ebp),%ecx
40508a:	e8 22 06 00 00       	call   0x4056b1
40508f:	8b 4d 08             	mov    0x8(%ebp),%ecx
405092:	8d bd 90 fb ff ff    	lea    -0x470(%ebp),%edi
405098:	33 c0                	xor    %eax,%eax
40509a:	33 d2                	xor    %edx,%edx
40509c:	ab                   	stos   %eax,%es:(%edi)
40509d:	ab                   	stos   %eax,%es:(%edi)
40509e:	ab                   	stos   %eax,%es:(%edi)
40509f:	ab                   	stos   %eax,%es:(%edi)
4050a0:	8b c1                	mov    %ecx,%eax
4050a2:	8b bd a0 fb ff ff    	mov    -0x460(%ebp),%edi
4050a8:	83 e0 02             	and    $0x2,%eax
4050ab:	89 85 8c fb ff ff    	mov    %eax,-0x474(%ebp)
4050b1:	0b c2                	or     %edx,%eax
4050b3:	89 bd 90 fb ff ff    	mov    %edi,-0x470(%ebp)
4050b9:	89 9d 94 fb ff ff    	mov    %ebx,-0x46c(%ebp)
4050bf:	89 95 98 fb ff ff    	mov    %edx,-0x468(%ebp)
4050c5:	75 0a                	jne    0x4050d1
4050c7:	88 95 9c fb ff ff    	mov    %dl,-0x464(%ebp)
4050cd:	85 ff                	test   %edi,%edi
4050cf:	75 07                	jne    0x4050d8
4050d1:	c6 85 9c fb ff ff 01 	movb   $0x1,-0x464(%ebp)
4050d8:	ff 75 20             	push   0x20(%ebp)
4050db:	8d 85 90 fb ff ff    	lea    -0x470(%ebp),%eax
4050e1:	89 85 a0 fb ff ff    	mov    %eax,-0x460(%ebp)
4050e7:	8d 85 80 fb ff ff    	lea    -0x480(%ebp),%eax
4050ed:	50                   	push   %eax
4050ee:	ff 75 18             	push   0x18(%ebp)
4050f1:	8d 85 a0 fb ff ff    	lea    -0x460(%ebp),%eax
4050f7:	ff 75 0c             	push   0xc(%ebp)
4050fa:	51                   	push   %ecx
4050fb:	50                   	push   %eax
4050fc:	8d 8d a4 fb ff ff    	lea    -0x45c(%ebp),%ecx
405102:	e8 75 05 00 00       	call   0x40567c
405107:	8d 8d a4 fb ff ff    	lea    -0x45c(%ebp),%ecx
40510d:	e8 dc 07 00 00       	call   0x4058ee
405112:	8b f0                	mov    %eax,%esi
405114:	85 ff                	test   %edi,%edi
405116:	74 51                	je     0x405169
405118:	8b 45 08             	mov    0x8(%ebp),%eax
40511b:	83 e0 01             	and    $0x1,%eax
40511e:	83 c8 00             	or     $0x0,%eax
405121:	74 1c                	je     0x40513f
405123:	85 db                	test   %ebx,%ebx
405125:	75 04                	jne    0x40512b
405127:	85 f6                	test   %esi,%esi
405129:	75 76                	jne    0x4051a1
40512b:	8b 85 98 fb ff ff    	mov    -0x468(%ebp),%eax
405131:	3b c3                	cmp    %ebx,%eax
405133:	75 2e                	jne    0x405163
405135:	85 f6                	test   %esi,%esi
405137:	78 30                	js     0x405169
405139:	3b f3                	cmp    %ebx,%esi
40513b:	76 2c                	jbe    0x405169
40513d:	eb 62                	jmp    0x4051a1
40513f:	8b 85 8c fb ff ff    	mov    -0x474(%ebp),%eax
405145:	83 c8 00             	or     $0x0,%eax
405148:	74 53                	je     0x40519d
40514a:	85 db                	test   %ebx,%ebx
40514c:	74 1b                	je     0x405169
40514e:	85 f6                	test   %esi,%esi
405150:	79 07                	jns    0x405159
405152:	33 c0                	xor    %eax,%eax
405154:	66 89 07             	mov    %ax,(%edi)
405157:	eb 10                	jmp    0x405169
405159:	8b 85 98 fb ff ff    	mov    -0x468(%ebp),%eax
40515f:	3b c3                	cmp    %ebx,%eax
405161:	74 50                	je     0x4051b3
405163:	33 c9                	xor    %ecx,%ecx
405165:	66 89 0c 47          	mov    %cx,(%edi,%eax,2)
405169:	8d 8d e4 fb ff ff    	lea    -0x41c(%ebp),%ecx
40516f:	e8 c0 05 00 00       	call   0x405734
405174:	80 bd 88 fb ff ff 00 	cmpb   $0x0,-0x478(%ebp)
40517b:	74 0d                	je     0x40518a
40517d:	8b 8d 7c fb ff ff    	mov    -0x484(%ebp),%ecx
405183:	83 a1 50 03 00 00 fd 	andl   $0xfffffffd,0x350(%ecx)
40518a:	5f                   	pop    %edi
40518b:	8b c6                	mov    %esi,%eax
40518d:	5e                   	pop    %esi
40518e:	8b 4d fc             	mov    -0x4(%ebp),%ecx
405191:	33 cd                	xor    %ebp,%ecx
405193:	5b                   	pop    %ebx
405194:	e8 bd dd ff ff       	call   0x402f56
405199:	8b e5                	mov    %ebp,%esp
40519b:	5d                   	pop    %ebp
40519c:	c3                   	ret
40519d:	85 db                	test   %ebx,%ebx
40519f:	75 05                	jne    0x4051a6
4051a1:	83 ce ff             	or     $0xffffffff,%esi
4051a4:	eb c3                	jmp    0x405169
4051a6:	8b 85 98 fb ff ff    	mov    -0x468(%ebp),%eax
4051ac:	3b c3                	cmp    %ebx,%eax
4051ae:	75 b3                	jne    0x405163
4051b0:	6a fe                	push   $0xfffffffe
4051b2:	5e                   	pop    %esi
4051b3:	33 c0                	xor    %eax,%eax
4051b5:	66 89 44 5f fe       	mov    %ax,-0x2(%edi,%ebx,2)
4051ba:	eb ad                	jmp    0x405169
4051bc:	8b ff                	mov    %edi,%edi
4051be:	55                   	push   %ebp
4051bf:	8b ec                	mov    %esp,%ebp
4051c1:	81 ec 84 04 00 00    	sub    $0x484,%esp
4051c7:	a1 0c 30 42 00       	mov    0x42300c,%eax
4051cc:	33 c5                	xor    %ebp,%eax
4051ce:	89 45 fc             	mov    %eax,-0x4(%ebp)
4051d1:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
4051d5:	8b 45 10             	mov    0x10(%ebp),%eax
4051d8:	53                   	push   %ebx
4051d9:	8b 5d 14             	mov    0x14(%ebp),%ebx
4051dc:	89 85 a0 fb ff ff    	mov    %eax,-0x460(%ebp)
4051e2:	75 18                	jne    0x4051fc
4051e4:	e8 1e 2b 00 00       	call   0x407d07
4051e9:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4051ef:	e8 3a 2a 00 00       	call   0x407c2e
4051f4:	83 c8 ff             	or     $0xffffffff,%eax
4051f7:	e9 17 01 00 00       	jmp    0x405313
4051fc:	85 db                	test   %ebx,%ebx
4051fe:	74 04                	je     0x405204
405200:	85 c0                	test   %eax,%eax
405202:	74 e0                	je     0x4051e4
405204:	56                   	push   %esi
405205:	57                   	push   %edi
405206:	ff 75 1c             	push   0x1c(%ebp)
405209:	8d 8d 7c fb ff ff    	lea    -0x484(%ebp),%ecx
40520f:	e8 9d 04 00 00       	call   0x4056b1
405214:	8b 4d 08             	mov    0x8(%ebp),%ecx
405217:	8d bd 90 fb ff ff    	lea    -0x470(%ebp),%edi
40521d:	33 c0                	xor    %eax,%eax
40521f:	33 d2                	xor    %edx,%edx
405221:	ab                   	stos   %eax,%es:(%edi)
405222:	ab                   	stos   %eax,%es:(%edi)
405223:	ab                   	stos   %eax,%es:(%edi)
405224:	ab                   	stos   %eax,%es:(%edi)
405225:	8b c1                	mov    %ecx,%eax
405227:	8b bd a0 fb ff ff    	mov    -0x460(%ebp),%edi
40522d:	83 e0 02             	and    $0x2,%eax
405230:	89 85 8c fb ff ff    	mov    %eax,-0x474(%ebp)
405236:	0b c2                	or     %edx,%eax
405238:	89 bd 90 fb ff ff    	mov    %edi,-0x470(%ebp)
40523e:	89 9d 94 fb ff ff    	mov    %ebx,-0x46c(%ebp)
405244:	89 95 98 fb ff ff    	mov    %edx,-0x468(%ebp)
40524a:	75 0a                	jne    0x405256
40524c:	88 95 9c fb ff ff    	mov    %dl,-0x464(%ebp)
405252:	85 ff                	test   %edi,%edi
405254:	75 07                	jne    0x40525d
405256:	c6 85 9c fb ff ff 01 	movb   $0x1,-0x464(%ebp)
40525d:	ff 75 20             	push   0x20(%ebp)
405260:	8d 85 90 fb ff ff    	lea    -0x470(%ebp),%eax
405266:	89 85 a0 fb ff ff    	mov    %eax,-0x460(%ebp)
40526c:	8d 85 80 fb ff ff    	lea    -0x480(%ebp),%eax
405272:	50                   	push   %eax
405273:	ff 75 18             	push   0x18(%ebp)
405276:	8d 85 a0 fb ff ff    	lea    -0x460(%ebp),%eax
40527c:	ff 75 0c             	push   0xc(%ebp)
40527f:	51                   	push   %ecx
405280:	50                   	push   %eax
405281:	8d 8d a4 fb ff ff    	lea    -0x45c(%ebp),%ecx
405287:	e8 f0 03 00 00       	call   0x40567c
40528c:	8d 8d a4 fb ff ff    	lea    -0x45c(%ebp),%ecx
405292:	e8 87 07 00 00       	call   0x405a1e
405297:	8b f0                	mov    %eax,%esi
405299:	85 ff                	test   %edi,%edi
40529b:	74 51                	je     0x4052ee
40529d:	8b 45 08             	mov    0x8(%ebp),%eax
4052a0:	83 e0 01             	and    $0x1,%eax
4052a3:	83 c8 00             	or     $0x0,%eax
4052a6:	74 1c                	je     0x4052c4
4052a8:	85 db                	test   %ebx,%ebx
4052aa:	75 04                	jne    0x4052b0
4052ac:	85 f6                	test   %esi,%esi
4052ae:	75 76                	jne    0x405326
4052b0:	8b 85 98 fb ff ff    	mov    -0x468(%ebp),%eax
4052b6:	3b c3                	cmp    %ebx,%eax
4052b8:	75 2e                	jne    0x4052e8
4052ba:	85 f6                	test   %esi,%esi
4052bc:	78 30                	js     0x4052ee
4052be:	3b f3                	cmp    %ebx,%esi
4052c0:	76 2c                	jbe    0x4052ee
4052c2:	eb 62                	jmp    0x405326
4052c4:	8b 85 8c fb ff ff    	mov    -0x474(%ebp),%eax
4052ca:	83 c8 00             	or     $0x0,%eax
4052cd:	74 53                	je     0x405322
4052cf:	85 db                	test   %ebx,%ebx
4052d1:	74 1b                	je     0x4052ee
4052d3:	85 f6                	test   %esi,%esi
4052d5:	79 07                	jns    0x4052de
4052d7:	33 c0                	xor    %eax,%eax
4052d9:	66 89 07             	mov    %ax,(%edi)
4052dc:	eb 10                	jmp    0x4052ee
4052de:	8b 85 98 fb ff ff    	mov    -0x468(%ebp),%eax
4052e4:	3b c3                	cmp    %ebx,%eax
4052e6:	74 50                	je     0x405338
4052e8:	33 c9                	xor    %ecx,%ecx
4052ea:	66 89 0c 47          	mov    %cx,(%edi,%eax,2)
4052ee:	8d 8d e4 fb ff ff    	lea    -0x41c(%ebp),%ecx
4052f4:	e8 3b 04 00 00       	call   0x405734
4052f9:	80 bd 88 fb ff ff 00 	cmpb   $0x0,-0x478(%ebp)
405300:	74 0d                	je     0x40530f
405302:	8b 8d 7c fb ff ff    	mov    -0x484(%ebp),%ecx
405308:	83 a1 50 03 00 00 fd 	andl   $0xfffffffd,0x350(%ecx)
40530f:	5f                   	pop    %edi
405310:	8b c6                	mov    %esi,%eax
405312:	5e                   	pop    %esi
405313:	8b 4d fc             	mov    -0x4(%ebp),%ecx
405316:	33 cd                	xor    %ebp,%ecx
405318:	5b                   	pop    %ebx
405319:	e8 38 dc ff ff       	call   0x402f56
40531e:	8b e5                	mov    %ebp,%esp
405320:	5d                   	pop    %ebp
405321:	c3                   	ret
405322:	85 db                	test   %ebx,%ebx
405324:	75 05                	jne    0x40532b
405326:	83 ce ff             	or     $0xffffffff,%esi