406f38:	ff 75 0c             	push   0xc(%ebp)
406f3b:	8b 7d 08             	mov    0x8(%ebp),%edi
406f3e:	57                   	push   %edi
406f3f:	e8 46 fe ff ff       	call   0x406d8a
406f44:	83 c4 10             	add    $0x10,%esp
406f47:	48                   	dec    %eax
406f48:	74 1f                	je     0x406f69
406f4a:	48                   	dec    %eax
406f4b:	75 34                	jne    0x406f81
406f4d:	6a 01                	push   $0x1
406f4f:	8d 46 08             	lea    0x8(%esi),%eax
406f52:	50                   	push   %eax
406f53:	ff 77 18             	push   0x18(%edi)
406f56:	e8 99 fb ff ff       	call   0x406af4
406f5b:	59                   	pop    %ecx
406f5c:	59                   	pop    %ecx
406f5d:	50                   	push   %eax
406f5e:	ff 76 18             	push   0x18(%esi)
406f61:	53                   	push   %ebx
406f62:	e8 55 f1 ff ff       	call   0x4060bc
406f67:	eb 18                	jmp    0x406f81
406f69:	8d 46 08             	lea    0x8(%esi),%eax
406f6c:	50                   	push   %eax
406f6d:	ff 77 18             	push   0x18(%edi)
406f70:	e8 7f fb ff ff       	call   0x406af4
406f75:	59                   	pop    %ecx
406f76:	59                   	pop    %ecx
406f77:	50                   	push   %eax
406f78:	ff 76 18             	push   0x18(%esi)
406f7b:	53                   	push   %ebx
406f7c:	e8 3b f1 ff ff       	call   0x4060bc
406f81:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
406f88:	e8 00 67 00 00       	call   0x40d68d
406f8d:	c3                   	ret
406f8e:	33 c0                	xor    %eax,%eax
406f90:	40                   	inc    %eax
406f91:	c3                   	ret
406f92:	8b 65 e8             	mov    -0x18(%ebp),%esp
406f95:	e9 6f 58 00 00       	jmp    0x40c809
406f9a:	55                   	push   %ebp
406f9b:	8b ec                	mov    %esp,%ebp
406f9d:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
406fa1:	74 10                	je     0x406fb3
406fa3:	ff 75 18             	push   0x18(%ebp)
406fa6:	53                   	push   %ebx
406fa7:	56                   	push   %esi
406fa8:	ff 75 08             	push   0x8(%ebp)
406fab:	e8 59 ff ff ff       	call   0x406f09
406fb0:	83 c4 10             	add    $0x10,%esp
406fb3:	83 7d 20 00          	cmpl   $0x0,0x20(%ebp)
406fb7:	ff 75 08             	push   0x8(%ebp)
406fba:	75 03                	jne    0x406fbf
406fbc:	56                   	push   %esi
406fbd:	eb 03                	jmp    0x406fc2
406fbf:	ff 75 20             	push   0x20(%ebp)
406fc2:	e8 fc f0 ff ff       	call   0x4060c3
406fc7:	ff 37                	push   (%edi)
406fc9:	ff 75 14             	push   0x14(%ebp)
406fcc:	ff 75 10             	push   0x10(%ebp)
406fcf:	56                   	push   %esi
406fd0:	e8 a5 f9 ff ff       	call   0x40697a
406fd5:	8b 47 04             	mov    0x4(%edi),%eax
406fd8:	68 00 01 00 00       	push   $0x100
406fdd:	ff 75 1c             	push   0x1c(%ebp)
406fe0:	40                   	inc    %eax
406fe1:	ff 75 14             	push   0x14(%ebp)
406fe4:	89 46 08             	mov    %eax,0x8(%esi)
406fe7:	ff 75 0c             	push   0xc(%ebp)
406fea:	8b 4b 0c             	mov    0xc(%ebx),%ecx
406fed:	56                   	push   %esi
406fee:	ff 75 08             	push   0x8(%ebp)
406ff1:	e8 f8 fb ff ff       	call   0x406bee
406ff6:	83 c4 28             	add    $0x28,%esp
406ff9:	85 c0                	test   %eax,%eax
406ffb:	74 07                	je     0x407004
406ffd:	56                   	push   %esi
406ffe:	50                   	push   %eax
406fff:	e8 88 f0 ff ff       	call   0x40608c
407004:	5d                   	pop    %ebp
407005:	c3                   	ret
407006:	55                   	push   %ebp
407007:	8b ec                	mov    %esp,%ebp
407009:	51                   	push   %ecx
40700a:	51                   	push   %ecx
40700b:	56                   	push   %esi
40700c:	8b 75 08             	mov    0x8(%ebp),%esi
40700f:	81 3e 03 00 00 80    	cmpl   $0x80000003,(%esi)
407015:	0f 84 da 00 00 00    	je     0x4070f5
40701b:	57                   	push   %edi
40701c:	e8 2b 55 00 00       	call   0x40c54c
407021:	83 b8 80 00 00 00 00 	cmpl   $0x0,0x80(%eax)
407028:	74 3f                	je     0x407069
40702a:	e8 1d 55 00 00       	call   0x40c54c
40702f:	8d b8 80 00 00 00    	lea    0x80(%eax),%edi
407035:	e8 ff 52 00 00       	call   0x40c339
40703a:	39 07                	cmp    %eax,(%edi)
40703c:	74 2b                	je     0x407069
40703e:	81 3e 4d 4f 43 e0    	cmpl   $0xe0434f4d,(%esi)
407044:	74 23                	je     0x407069
407046:	ff 75 24             	push   0x24(%ebp)
407049:	ff 75 20             	push   0x20(%ebp)
40704c:	ff 75 18             	push   0x18(%ebp)
40704f:	ff 75 14             	push   0x14(%ebp)
407052:	ff 75 10             	push   0x10(%ebp)
407055:	ff 75 0c             	push   0xc(%ebp)
407058:	56                   	push   %esi
407059:	e8 1d f1 ff ff       	call   0x40617b
40705e:	83 c4 1c             	add    $0x1c,%esp
407061:	85 c0                	test   %eax,%eax
407063:	0f 85 8b 00 00 00    	jne    0x4070f4
407069:	8b 7d 18             	mov    0x18(%ebp),%edi
40706c:	83 7f 0c 00          	cmpl   $0x0,0xc(%edi)
407070:	75 05                	jne    0x407077
407072:	e8 de 57 00 00       	call   0x40c855
407077:	8b 75 1c             	mov    0x1c(%ebp),%esi
40707a:	8d 45 f8             	lea    -0x8(%ebp),%eax
40707d:	50                   	push   %eax
40707e:	8d 45 fc             	lea    -0x4(%ebp),%eax
407081:	50                   	push   %eax
407082:	56                   	push   %esi
407083:	ff 75 20             	push   0x20(%ebp)
407086:	57                   	push   %edi
407087:	e8 61 f2 ff ff       	call   0x4062ed
40708c:	8b f8                	mov    %eax,%edi
40708e:	8b 45 fc             	mov    -0x4(%ebp),%eax
407091:	83 c4 14             	add    $0x14,%esp
407094:	3b 45 f8             	cmp    -0x8(%ebp),%eax
407097:	73 5b                	jae    0x4070f4
407099:	53                   	push   %ebx
40709a:	3b 37                	cmp    (%edi),%esi
40709c:	7c 47                	jl     0x4070e5
40709e:	3b 77 04             	cmp    0x4(%edi),%esi
4070a1:	7f 42                	jg     0x4070e5
4070a3:	8b 47 0c             	mov    0xc(%edi),%eax
4070a6:	8b 4f 10             	mov    0x10(%edi),%ecx
4070a9:	c1 e0 04             	shl    $0x4,%eax
4070ac:	03 c1                	add    %ecx,%eax
4070ae:	8b 48 f4             	mov    -0xc(%eax),%ecx
4070b1:	85 c9                	test   %ecx,%ecx
4070b3:	74 06                	je     0x4070bb
4070b5:	80 79 08 00          	cmpb   $0x0,0x8(%ecx)
4070b9:	75 2a                	jne    0x4070e5
4070bb:	8d 58 f0             	lea    -0x10(%eax),%ebx
4070be:	f6 03 40             	testb  $0x40,(%ebx)
4070c1:	75 22                	jne    0x4070e5
4070c3:	ff 75 24             	push   0x24(%ebp)
4070c6:	8b 75 0c             	mov    0xc(%ebp),%esi
4070c9:	ff 75 20             	push   0x20(%ebp)
4070cc:	6a 00                	push   $0x0
4070ce:	ff 75 18             	push   0x18(%ebp)
4070d1:	ff 75 14             	push   0x14(%ebp)
4070d4:	ff 75 10             	push   0x10(%ebp)
4070d7:	ff 75 08             	push   0x8(%ebp)
4070da:	e8 bb fe ff ff       	call   0x406f9a
4070df:	8b 75 1c             	mov    0x1c(%ebp),%esi
4070e2:	83 c4 1c             	add    $0x1c,%esp
4070e5:	ff 45 fc             	incl   -0x4(%ebp)
4070e8:	8b 45 fc             	mov    -0x4(%ebp),%eax
4070eb:	83 c7 14             	add    $0x14,%edi
4070ee:	3b 45 f8             	cmp    -0x8(%ebp),%eax
4070f1:	72 a7                	jb     0x40709a
4070f3:	5b                   	pop    %ebx
4070f4:	5f                   	pop    %edi
4070f5:	5e                   	pop    %esi
4070f6:	c9                   	leave
4070f7:	c3                   	ret
4070f8:	55                   	push   %ebp
4070f9:	8b ec                	mov    %esp,%ebp
4070fb:	83 ec 2c             	sub    $0x2c,%esp
4070fe:	8b 4d 0c             	mov    0xc(%ebp),%ecx
407101:	53                   	push   %ebx
407102:	8b 5d 18             	mov    0x18(%ebp),%ebx
407105:	8b 43 04             	mov    0x4(%ebx),%eax
407108:	3d 80 00 00 00       	cmp    $0x80,%eax
40710d:	56                   	push   %esi
40710e:	57                   	push   %edi
40710f:	c6 45 ff 00          	movb   $0x0,-0x1(%ebp)
407113:	7f 06                	jg     0x40711b
407115:	0f be 49 08          	movsbl 0x8(%ecx),%ecx
407119:	eb 03                	jmp    0x40711e
40711b:	8b 49 08             	mov    0x8(%ecx),%ecx
40711e:	83 f9 ff             	cmp    $0xffffffff,%ecx
407121:	89 4d f8             	mov    %ecx,-0x8(%ebp)
407124:	7c 04                	jl     0x40712a
407126:	3b c8                	cmp    %eax,%ecx
407128:	7c 05                	jl     0x40712f
40712a:	e8 26 57 00 00       	call   0x40c855
40712f:	8b 75 08             	mov    0x8(%ebp),%esi
407132:	bf 63 73 6d e0       	mov    $0xe06d7363,%edi
407137:	39 3e                	cmp    %edi,(%esi)
407139:	0f 85 cb 02 00 00    	jne    0x40740a
40713f:	83 7e 10 03          	cmpl   $0x3,0x10(%esi)
407143:	bb 20 05 93 19       	mov    $0x19930520,%ebx
407148:	0f 85 29 01 00 00    	jne    0x407277
40714e:	8b 46 14             	mov    0x14(%esi),%eax
407151:	3b c3                	cmp    %ebx,%eax
407153:	74 12                	je     0x407167
407155:	3d 21 05 93 19       	cmp    $0x19930521,%eax
40715a:	74 0b                	je     0x407167
40715c:	3d 22 05 93 19       	cmp    $0x19930522,%eax
407161:	0f 85 10 01 00 00    	jne    0x407277
407167:	83 7e 1c 00          	cmpl   $0x0,0x1c(%esi)
40716b:	0f 85 06 01 00 00    	jne    0x407277
407171:	e8 d6 53 00 00       	call   0x40c54c
407176:	83 b8 88 00 00 00 00 	cmpl   $0x0,0x88(%eax)
40717d:	0f 84 c6 02 00 00    	je     0x407449
407183:	e8 c4 53 00 00       	call   0x40c54c
407188:	8b b0 88 00 00 00    	mov    0x88(%eax),%esi
40718e:	89 75 08             	mov    %esi,0x8(%ebp)
407191:	e8 b6 53 00 00       	call   0x40c54c
407196:	8b 80 8c 00 00 00    	mov    0x8c(%eax),%eax
40719c:	6a 01                	push   $0x1
40719e:	56                   	push   %esi
40719f:	89 45 10             	mov    %eax,0x10(%ebp)
4071a2:	e8 ca 74 00 00       	call   0x40e671
4071a7:	85 c0                	test   %eax,%eax
4071a9:	59                   	pop    %ecx
4071aa:	59                   	pop    %ecx
4071ab:	75 05                	jne    0x4071b2
4071ad:	e8 a3 56 00 00       	call   0x40c855
4071b2:	39 3e                	cmp    %edi,(%esi)
4071b4:	75 26                	jne    0x4071dc
4071b6:	83 7e 10 03          	cmpl   $0x3,0x10(%esi)
4071ba:	75 20                	jne    0x4071dc
4071bc:	8b 46 14             	mov    0x14(%esi),%eax
4071bf:	3b c3                	cmp    %ebx,%eax
4071c1:	74 0e                	je     0x4071d1
4071c3:	3d 21 05 93 19       	cmp    $0x19930521,%eax
4071c8:	74 07                	je     0x4071d1
4071ca:	3d 22 05 93 19       	cmp    $0x19930522,%eax
4071cf:	75 0b                	jne    0x4071dc
4071d1:	83 7e 1c 00          	cmpl   $0x0,0x1c(%esi)
4071d5:	75 05                	jne    0x4071dc
4071d7:	e8 79 56 00 00       	call   0x40c855
4071dc:	e8 6b 53 00 00       	call   0x40c54c
4071e1:	83 b8 94 00 00 00 00 	cmpl   $0x0,0x94(%eax)
4071e8:	0f 84 89 00 00 00    	je     0x407277
4071ee:	e8 59 53 00 00       	call   0x40c54c
4071f3:	8b b8 94 00 00 00    	mov    0x94(%eax),%edi
4071f9:	e8 4e 53 00 00       	call   0x40c54c
4071fe:	ff 75 08             	push   0x8(%ebp)
407201:	33 f6                	xor    %esi,%esi
407203:	89 b0 94 00 00 00    	mov    %esi,0x94(%eax)
407209:	e8 1e f9 ff ff       	call   0x406b2c
40720e:	84 c0                	test   %al,%al
407210:	59                   	pop    %ecx
407211:	75 5c                	jne    0x40726f
407213:	33 db                	xor    %ebx,%ebx
407215:	39 1f                	cmp    %ebx,(%edi)
407217:	7e 1d                	jle    0x407236
407219:	8b 47 04             	mov    0x4(%edi),%eax
40721c:	8b 4c 03 04          	mov    0x4(%ebx,%eax,1),%ecx
407220:	68 48 c5 41 00       	push   $0x41c548
407225:	e8 ea e7 ff ff       	call   0x405a14
40722a:	84 c0                	test   %al,%al
40722c:	75 0d                	jne    0x40723b
40722e:	46                   	inc    %esi
40722f:	83 c3 10             	add    $0x10,%ebx
407232:	3b 37                	cmp    (%edi),%esi
407234:	7c e3                	jl     0x407219
407236:	e9 ce 55 00 00       	jmp    0x40c809
40723b:	6a 01                	push   $0x1
40723d:	ff 75 08             	push   0x8(%ebp)
407240:	e8 5b f8 ff ff       	call   0x406aa0
407245:	59                   	pop    %ecx
407246:	59                   	pop    %ecx
407247:	8d 45 08             	lea    0x8(%ebp),%eax
40724a:	50                   	push   %eax
40724b:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
40724e:	c7 45 08 78 76 41 00 	movl   $0x417678,0x8(%ebp)
407255:	e8 35 e6 ff ff       	call   0x40588f
40725a:	68 94 a9 41 00       	push   $0x41a994
40725f:	8d 45 d4             	lea    -0x2c(%ebp),%eax
407262:	50                   	push   %eax
407263:	c7 45 d4 70 76 41 00 	movl   $0x417670,-0x2c(%ebp)
40726a:	e8 d3 ed ff ff       	call   0x406042
40726f:	8b 75 08             	mov    0x8(%ebp),%esi
407272:	bf 63 73 6d e0       	mov    $0xe06d7363,%edi
407277:	39 3e                	cmp    %edi,(%esi)
407279:	0f 85 88 01 00 00    	jne    0x407407
40727f:	83 7e 10 03          	cmpl   $0x3,0x10(%esi)
407283:	0f 85 7e 01 00 00    	jne    0x407407
407289:	8b 46 14             	mov    0x14(%esi),%eax
40728c:	3b c3                	cmp    %ebx,%eax
40728e:	74 12                	je     0x4072a2
407290:	3d 21 05 93 19       	cmp    $0x19930521,%eax
407295:	74 0b                	je     0x4072a2
407297:	3d 22 05 93 19       	cmp    $0x19930522,%eax
40729c:	0f 85 65 01 00 00    	jne    0x407407
4072a2:	8b 7d 18             	mov    0x18(%ebp),%edi
4072a5:	83 7f 0c 00          	cmpl   $0x0,0xc(%edi)
4072a9:	0f 86 bf 00 00 00    	jbe    0x40736e
4072af:	8d 45 e4             	lea    -0x1c(%ebp),%eax
4072b2:	50                   	push   %eax
4072b3:	8d 45 f0             	lea    -0x10(%ebp),%eax
4072b6:	50                   	push   %eax
4072b7:	ff 75 f8             	push   -0x8(%ebp)
4072ba:	ff 75 20             	push   0x20(%ebp)
4072bd:	57                   	push   %edi
4072be:	e8 2a f0 ff ff       	call   0x4062ed
4072c3:	83 c4 14             	add    $0x14,%esp
4072c6:	8b f8                	mov    %eax,%edi
4072c8:	8b 45 f0             	mov    -0x10(%ebp),%eax
4072cb:	3b 45 e4             	cmp    -0x1c(%ebp),%eax
4072ce:	0f 83 97 00 00 00    	jae    0x40736b
4072d4:	8b 45 f8             	mov    -0x8(%ebp),%eax
4072d7:	39 07                	cmp    %eax,(%edi)
4072d9:	0f 8f 81 00 00 00    	jg     0x407360
4072df:	3b 47 04             	cmp    0x4(%edi),%eax
4072e2:	7f 7c                	jg     0x407360
4072e4:	8b 47 10             	mov    0x10(%edi),%eax
4072e7:	89 45 f4             	mov    %eax,-0xc(%ebp)
4072ea:	8b 47 0c             	mov    0xc(%edi),%eax
4072ed:	85 c0                	test   %eax,%eax
4072ef:	89 45 e8             	mov    %eax,-0x18(%ebp)
4072f2:	7e 6c                	jle    0x407360
4072f4:	8b 46 1c             	mov    0x1c(%esi),%eax
4072f7:	8b 40 0c             	mov    0xc(%eax),%eax
4072fa:	8d 58 04             	lea    0x4(%eax),%ebx
4072fd:	8b 00                	mov    (%eax),%eax
4072ff:	85 c0                	test   %eax,%eax
407301:	89 45 ec             	mov    %eax,-0x14(%ebp)
407304:	7e 23                	jle    0x407329
407306:	ff 76 1c             	push   0x1c(%esi)
407309:	8b 03                	mov    (%ebx),%eax
40730b:	50                   	push   %eax
40730c:	ff 75 f4             	push   -0xc(%ebp)
40730f:	89 45 e0             	mov    %eax,-0x20(%ebp)
407312:	e8 c3 f5 ff ff       	call   0x4068da
407317:	83 c4 0c             	add    $0xc,%esp
40731a:	85 c0                	test   %eax,%eax
40731c:	75 1a                	jne    0x407338
40731e:	ff 4d ec             	decl   -0x14(%ebp)
407321:	83 c3 04             	add    $0x4,%ebx
407324:	39 45 ec             	cmp    %eax,-0x14(%ebp)
407327:	7f dd                	jg     0x407306
407329:	ff 4d e8             	decl   -0x18(%ebp)
40732c:	83 45 f4 10          	addl   $0x10,-0xc(%ebp)
407330:	83 7d e8 00          	cmpl   $0x0,-0x18(%ebp)
407334:	7f be                	jg     0x4072f4
407336:	eb 28                	jmp    0x407360
407338:	ff 75 24             	push   0x24(%ebp)
40733b:	8b 5d f4             	mov    -0xc(%ebp),%ebx
40733e:	ff 75 20             	push   0x20(%ebp)
407341:	c6 45 ff 01          	movb   $0x1,-0x1(%ebp)
407345:	ff 75 e0             	push   -0x20(%ebp)
407348:	ff 75 18             	push   0x18(%ebp)
40734b:	ff 75 14             	push   0x14(%ebp)
40734e:	ff 75 10             	push   0x10(%ebp)
407351:	56                   	push   %esi