406118:	83 ec 08             	sub    $0x8,%esp
40611b:	53                   	push   %ebx
40611c:	56                   	push   %esi
40611d:	57                   	push   %edi
40611e:	fc                   	cld
40611f:	89 45 fc             	mov    %eax,-0x4(%ebp)
406122:	33 c0                	xor    %eax,%eax
406124:	50                   	push   %eax
406125:	50                   	push   %eax
406126:	50                   	push   %eax
406127:	ff 75 fc             	push   -0x4(%ebp)
40612a:	ff 75 14             	push   0x14(%ebp)
40612d:	ff 75 10             	push   0x10(%ebp)
406130:	ff 75 0c             	push   0xc(%ebp)
406133:	ff 75 08             	push   0x8(%ebp)
406136:	e8 2b 13 00 00       	call   0x407466
40613b:	83 c4 20             	add    $0x20,%esp
40613e:	89 45 f8             	mov    %eax,-0x8(%ebp)
406141:	5f                   	pop    %edi
406142:	5e                   	pop    %esi
406143:	5b                   	pop    %ebx
406144:	8b 45 f8             	mov    -0x8(%ebp),%eax
406147:	8b e5                	mov    %ebp,%esp
406149:	5d                   	pop    %ebp
40614a:	c3                   	ret
40614b:	56                   	push   %esi
40614c:	fc                   	cld
40614d:	8b 74 24 0c          	mov    0xc(%esp),%esi
406151:	8b 4e 08             	mov    0x8(%esi),%ecx
406154:	33 ce                	xor    %esi,%ecx
406156:	e8 da fd ff ff       	call   0x405f35
40615b:	6a 00                	push   $0x0
40615d:	56                   	push   %esi
40615e:	ff 76 14             	push   0x14(%esi)
406161:	ff 76 0c             	push   0xc(%esi)
406164:	6a 00                	push   $0x0
406166:	ff 74 24 24          	push   0x24(%esp)
40616a:	ff 76 10             	push   0x10(%esi)
40616d:	ff 74 24 24          	push   0x24(%esp)
406171:	e8 f0 12 00 00       	call   0x407466
406176:	83 c4 20             	add    $0x20,%esp
406179:	5e                   	pop    %esi
40617a:	c3                   	ret
40617b:	55                   	push   %ebp
40617c:	8b ec                	mov    %esp,%ebp
40617e:	83 ec 38             	sub    $0x38,%esp
406181:	53                   	push   %ebx
406182:	81 7d 08 23 01 00 00 	cmpl   $0x123,0x8(%ebp)
406189:	75 12                	jne    0x40619d
40618b:	b8 24 62 40 00       	mov    $0x406224,%eax
406190:	8b 4d 0c             	mov    0xc(%ebp),%ecx
406193:	89 01                	mov    %eax,(%ecx)
406195:	33 c0                	xor    %eax,%eax
406197:	40                   	inc    %eax
406198:	e9 b0 00 00 00       	jmp    0x40624d
40619d:	83 65 d8 00          	andl   $0x0,-0x28(%ebp)
4061a1:	c7 45 dc 50 62 40 00 	movl   $0x406250,-0x24(%ebp)
4061a8:	a1 20 c5 41 00       	mov    0x41c520,%eax
4061ad:	8d 4d d8             	lea    -0x28(%ebp),%ecx
4061b0:	33 c1                	xor    %ecx,%eax
4061b2:	89 45 e0             	mov    %eax,-0x20(%ebp)
4061b5:	8b 45 18             	mov    0x18(%ebp),%eax
4061b8:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4061bb:	8b 45 0c             	mov    0xc(%ebp),%eax
4061be:	89 45 e8             	mov    %eax,-0x18(%ebp)
4061c1:	8b 45 1c             	mov    0x1c(%ebp),%eax
4061c4:	89 45 ec             	mov    %eax,-0x14(%ebp)
4061c7:	8b 45 20             	mov    0x20(%ebp),%eax
4061ca:	89 45 f0             	mov    %eax,-0x10(%ebp)
4061cd:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
4061d1:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
4061d5:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4061d9:	89 65 f4             	mov    %esp,-0xc(%ebp)
4061dc:	89 6d f8             	mov    %ebp,-0x8(%ebp)
4061df:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
4061e5:	89 45 d8             	mov    %eax,-0x28(%ebp)
4061e8:	8d 45 d8             	lea    -0x28(%ebp),%eax
4061eb:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
4061f1:	c7 45 c8 01 00 00 00 	movl   $0x1,-0x38(%ebp)
4061f8:	8b 45 08             	mov    0x8(%ebp),%eax
4061fb:	89 45 cc             	mov    %eax,-0x34(%ebp)
4061fe:	8b 45 10             	mov    0x10(%ebp),%eax
406201:	89 45 d0             	mov    %eax,-0x30(%ebp)
406204:	e8 43 63 00 00       	call   0x40c54c
406209:	8b 80 80 00 00 00    	mov    0x80(%eax),%eax
40620f:	89 45 d4             	mov    %eax,-0x2c(%ebp)
406212:	8d 45 cc             	lea    -0x34(%ebp),%eax
406215:	50                   	push   %eax
406216:	8b 45 08             	mov    0x8(%ebp),%eax
406219:	ff 30                	push   (%eax)
40621b:	ff 55 d4             	call   *-0x2c(%ebp)
40621e:	59                   	pop    %ecx
40621f:	59                   	pop    %ecx
406220:	83 65 c8 00          	andl   $0x0,-0x38(%ebp)
406224:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
406228:	74 17                	je     0x406241
40622a:	64 8b 1d 00 00 00 00 	mov    %fs:0x0,%ebx
406231:	8b 03                	mov    (%ebx),%eax
406233:	8b 5d d8             	mov    -0x28(%ebp),%ebx
406236:	89 03                	mov    %eax,(%ebx)
406238:	64 89 1d 00 00 00 00 	mov    %ebx,%fs:0x0
40623f:	eb 09                	jmp    0x40624a
406241:	8b 45 d8             	mov    -0x28(%ebp),%eax
406244:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40624a:	8b 45 c8             	mov    -0x38(%ebp),%eax
40624d:	5b                   	pop    %ebx
40624e:	c9                   	leave
40624f:	c3                   	ret
406250:	55                   	push   %ebp
406251:	8b ec                	mov    %esp,%ebp
406253:	51                   	push   %ecx
406254:	53                   	push   %ebx
406255:	fc                   	cld
406256:	8b 45 0c             	mov    0xc(%ebp),%eax
406259:	8b 48 08             	mov    0x8(%eax),%ecx
40625c:	33 4d 0c             	xor    0xc(%ebp),%ecx
40625f:	e8 d1 fc ff ff       	call   0x405f35
406264:	8b 45 08             	mov    0x8(%ebp),%eax
406267:	8b 40 04             	mov    0x4(%eax),%eax
40626a:	83 e0 66             	and    $0x66,%eax
40626d:	74 11                	je     0x406280
40626f:	8b 45 0c             	mov    0xc(%ebp),%eax
406272:	c7 40 24 01 00 00 00 	movl   $0x1,0x24(%eax)
406279:	33 c0                	xor    %eax,%eax
40627b:	40                   	inc    %eax
40627c:	eb 6c                	jmp    0x4062ea
40627e:	eb 6a                	jmp    0x4062ea
406280:	6a 01                	push   $0x1
406282:	8b 45 0c             	mov    0xc(%ebp),%eax
406285:	ff 70 18             	push   0x18(%eax)
406288:	8b 45 0c             	mov    0xc(%ebp),%eax
40628b:	ff 70 14             	push   0x14(%eax)
40628e:	8b 45 0c             	mov    0xc(%ebp),%eax
406291:	ff 70 0c             	push   0xc(%eax)
406294:	6a 00                	push   $0x0
406296:	ff 75 10             	push   0x10(%ebp)
406299:	8b 45 0c             	mov    0xc(%ebp),%eax
40629c:	ff 70 10             	push   0x10(%eax)
40629f:	ff 75 08             	push   0x8(%ebp)
4062a2:	e8 bf 11 00 00       	call   0x407466
4062a7:	83 c4 20             	add    $0x20,%esp
4062aa:	8b 45 0c             	mov    0xc(%ebp),%eax
4062ad:	83 78 24 00          	cmpl   $0x0,0x24(%eax)
4062b1:	75 0b                	jne    0x4062be
4062b3:	ff 75 08             	push   0x8(%ebp)
4062b6:	ff 75 0c             	push   0xc(%ebp)
4062b9:	e8 05 fe ff ff       	call   0x4060c3
4062be:	6a 00                	push   $0x0
4062c0:	6a 00                	push   $0x0
4062c2:	6a 00                	push   $0x0
4062c4:	6a 00                	push   $0x0
4062c6:	6a 00                	push   $0x0
4062c8:	8d 45 fc             	lea    -0x4(%ebp),%eax
4062cb:	50                   	push   %eax
4062cc:	68 23 01 00 00       	push   $0x123
4062d1:	e8 a5 fe ff ff       	call   0x40617b
4062d6:	83 c4 1c             	add    $0x1c,%esp
4062d9:	8b 45 fc             	mov    -0x4(%ebp),%eax
4062dc:	8b 5d 0c             	mov    0xc(%ebp),%ebx
4062df:	8b 63 1c             	mov    0x1c(%ebx),%esp
4062e2:	8b 6b 20             	mov    0x20(%ebx),%ebp
4062e5:	ff e0                	jmp    *%eax
4062e7:	33 c0                	xor    %eax,%eax
4062e9:	40                   	inc    %eax
4062ea:	5b                   	pop    %ebx
4062eb:	c9                   	leave
4062ec:	c3                   	ret
4062ed:	55                   	push   %ebp
4062ee:	8b ec                	mov    %esp,%ebp
4062f0:	51                   	push   %ecx
4062f1:	53                   	push   %ebx
4062f2:	56                   	push   %esi
4062f3:	57                   	push   %edi
4062f4:	8b 7d 08             	mov    0x8(%ebp),%edi
4062f7:	8b 47 10             	mov    0x10(%edi),%eax
4062fa:	8b 77 0c             	mov    0xc(%edi),%esi
4062fd:	89 45 fc             	mov    %eax,-0x4(%ebp)
406300:	8b de                	mov    %esi,%ebx
406302:	eb 2d                	jmp    0x406331
406304:	83 fe ff             	cmp    $0xffffffff,%esi
406307:	75 05                	jne    0x40630e
406309:	e8 47 65 00 00       	call   0x40c855
40630e:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406311:	4e                   	dec    %esi
406312:	8b c6                	mov    %esi,%eax
406314:	6b c0 14             	imul   $0x14,%eax,%eax
406317:	03 c1                	add    %ecx,%eax
406319:	8b 4d 10             	mov    0x10(%ebp),%ecx
40631c:	39 48 04             	cmp    %ecx,0x4(%eax)
40631f:	7d 05                	jge    0x406326
406321:	3b 48 08             	cmp    0x8(%eax),%ecx
406324:	7e 05                	jle    0x40632b
406326:	83 fe ff             	cmp    $0xffffffff,%esi
406329:	75 09                	jne    0x406334
40632b:	ff 4d 0c             	decl   0xc(%ebp)
40632e:	8b 5d 08             	mov    0x8(%ebp),%ebx
406331:	89 75 08             	mov    %esi,0x8(%ebp)
406334:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
406338:	7d ca                	jge    0x406304
40633a:	8b 45 14             	mov    0x14(%ebp),%eax
40633d:	46                   	inc    %esi
40633e:	89 30                	mov    %esi,(%eax)
406340:	8b 45 18             	mov    0x18(%ebp),%eax
406343:	89 18                	mov    %ebx,(%eax)
406345:	3b 5f 0c             	cmp    0xc(%edi),%ebx
406348:	77 04                	ja     0x40634e
40634a:	3b f3                	cmp    %ebx,%esi
40634c:	76 05                	jbe    0x406353
40634e:	e8 02 65 00 00       	call   0x40c855
406353:	8b c6                	mov    %esi,%eax
406355:	6b c0 14             	imul   $0x14,%eax,%eax
406358:	03 45 fc             	add    -0x4(%ebp),%eax
40635b:	5f                   	pop    %edi
40635c:	5e                   	pop    %esi
40635d:	5b                   	pop    %ebx
40635e:	c9                   	leave
40635f:	c3                   	ret
406360:	8b 44 24 08          	mov    0x8(%esp),%eax
406364:	56                   	push   %esi
406365:	8b 74 24 08          	mov    0x8(%esp),%esi
406369:	89 06                	mov    %eax,(%esi)
40636b:	e8 dc 61 00 00       	call   0x40c54c
406370:	8b 80 98 00 00 00    	mov    0x98(%eax),%eax
406376:	89 46 04             	mov    %eax,0x4(%esi)
406379:	e8 ce 61 00 00       	call   0x40c54c
40637e:	89 b0 98 00 00 00    	mov    %esi,0x98(%eax)
406384:	8b c6                	mov    %esi,%eax
406386:	5e                   	pop    %esi
406387:	c3                   	ret
406388:	e8 bf 61 00 00       	call   0x40c54c
40638d:	8b 80 98 00 00 00    	mov    0x98(%eax),%eax
406393:	eb 0b                	jmp    0x4063a0
406395:	8b 08                	mov    (%eax),%ecx
406397:	3b 4c 24 04          	cmp    0x4(%esp),%ecx
40639b:	74 09                	je     0x4063a6
40639d:	8b 40 04             	mov    0x4(%eax),%eax
4063a0:	85 c0                	test   %eax,%eax
4063a2:	75 f1                	jne    0x406395
4063a4:	40                   	inc    %eax
4063a5:	c3                   	ret
4063a6:	33 c0                	xor    %eax,%eax
4063a8:	c3                   	ret
4063a9:	56                   	push   %esi
4063aa:	e8 9d 61 00 00       	call   0x40c54c
4063af:	8b 74 24 08          	mov    0x8(%esp),%esi
4063b3:	3b b0 98 00 00 00    	cmp    0x98(%eax),%esi
4063b9:	75 10                	jne    0x4063cb
4063bb:	e8 8c 61 00 00       	call   0x40c54c
4063c0:	8b 4e 04             	mov    0x4(%esi),%ecx
4063c3:	89 88 98 00 00 00    	mov    %ecx,0x98(%eax)
4063c9:	5e                   	pop    %esi
4063ca:	c3                   	ret
4063cb:	e8 7c 61 00 00       	call   0x40c54c
4063d0:	8b 80 98 00 00 00    	mov    0x98(%eax),%eax
4063d6:	eb 09                	jmp    0x4063e1
4063d8:	8b 48 04             	mov    0x4(%eax),%ecx
4063db:	3b f1                	cmp    %ecx,%esi
4063dd:	74 0e                	je     0x4063ed
4063df:	8b c1                	mov    %ecx,%eax
4063e1:	83 78 04 00          	cmpl   $0x0,0x4(%eax)
4063e5:	75 f1                	jne    0x4063d8
4063e7:	5e                   	pop    %esi
4063e8:	e9 68 64 00 00       	jmp    0x40c855
4063ed:	8b 4e 04             	mov    0x4(%esi),%ecx
4063f0:	89 48 04             	mov    %ecx,0x4(%eax)
4063f3:	5e                   	pop    %esi
4063f4:	c3                   	ret
4063f5:	55                   	push   %ebp
4063f6:	8b ec                	mov    %esp,%ebp
4063f8:	83 ec 18             	sub    $0x18,%esp
4063fb:	a1 20 c5 41 00       	mov    0x41c520,%eax
406400:	83 65 e8 00          	andl   $0x0,-0x18(%ebp)
406404:	8d 4d e8             	lea    -0x18(%ebp),%ecx
406407:	33 c1                	xor    %ecx,%eax
406409:	8b 4d 08             	mov    0x8(%ebp),%ecx
40640c:	89 45 f0             	mov    %eax,-0x10(%ebp)
40640f:	8b 45 0c             	mov    0xc(%ebp),%eax
406412:	89 45 f4             	mov    %eax,-0xc(%ebp)
406415:	8b 45 14             	mov    0x14(%ebp),%eax
406418:	40                   	inc    %eax
406419:	c7 45 ec 4b 61 40 00 	movl   $0x40614b,-0x14(%ebp)
406420:	89 4d f8             	mov    %ecx,-0x8(%ebp)
406423:	89 45 fc             	mov    %eax,-0x4(%ebp)
406426:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
40642c:	89 45 e8             	mov    %eax,-0x18(%ebp)
40642f:	8d 45 e8             	lea    -0x18(%ebp),%eax
406432:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
406438:	ff 75 18             	push   0x18(%ebp)
40643b:	51                   	push   %ecx
40643c:	ff 75 10             	push   0x10(%ebp)
40643f:	e8 5c 64 00 00       	call   0x40c8a0
406444:	8b c8                	mov    %eax,%ecx
406446:	8b 45 e8             	mov    -0x18(%ebp),%eax
406449:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
40644f:	8b c1                	mov    %ecx,%eax
406451:	c9                   	leave
406452:	c3                   	ret
406453:	6a 0c                	push   $0xc
406455:	68 48 a8 41 00       	push   $0x41a848
40645a:	e8 e9 71 00 00       	call   0x40d648
40645f:	8b 75 08             	mov    0x8(%ebp),%esi
406462:	85 f6                	test   %esi,%esi
406464:	74 75                	je     0x4064db
406466:	83 3d f0 e5 41 00 03 	cmpl   $0x3,0x41e5f0
40646d:	75 43                	jne    0x4064b2
40646f:	6a 04                	push   $0x4
406471:	e8 a1 66 00 00       	call   0x40cb17
406476:	59                   	pop    %ecx
406477:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40647b:	56                   	push   %esi
40647c:	e8 0f 67 00 00       	call   0x40cb90
406481:	59                   	pop    %ecx
406482:	89 45 e4             	mov    %eax,-0x1c(%ebp)
406485:	85 c0                	test   %eax,%eax
406487:	74 09                	je     0x406492
406489:	56                   	push   %esi
40648a:	50                   	push   %eax
40648b:	e8 2b 67 00 00       	call   0x40cbbb
406490:	59                   	pop    %ecx
406491:	59                   	pop    %ecx
406492:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
406499:	e8 0b 00 00 00       	call   0x4064a9
40649e:	83 7d e4 00          	cmpl   $0x0,-0x1c(%ebp)
4064a2:	75 37                	jne    0x4064db
4064a4:	ff 75 08             	push   0x8(%ebp)
4064a7:	eb 0a                	jmp    0x4064b3
4064a9:	6a 04                	push   $0x4
4064ab:	e8 8f 65 00 00       	call   0x40ca3f
4064b0:	59                   	pop    %ecx
4064b1:	c3                   	ret
4064b2:	56                   	push   %esi
4064b3:	6a 00                	push   $0x0
4064b5:	ff 35 5c dd 41 00    	push   0x41dd5c
4064bb:	ff 15 b4 70 41 00    	call   *0x4170b4
4064c1:	85 c0                	test   %eax,%eax
4064c3:	75 16                	jne    0x4064db
4064c5:	e8 30 2f 00 00       	call   0x4093fa
4064ca:	8b f0                	mov    %eax,%esi
4064cc:	ff 15 b0 70 41 00    	call   *0x4170b0
4064d2:	50                   	push   %eax
4064d3:	e8 e7 2e 00 00       	call   0x4093bf
4064d8:	89 06                	mov    %eax,(%esi)
4064da:	59                   	pop    %ecx
4064db:	e8 ad 71 00 00       	call   0x40d68d
4064e0:	c3                   	ret
4064e1:	e8 66 60 00 00       	call   0x40c54c
4064e6:	8b 4c 24 04          	mov    0x4(%esp),%ecx
4064ea:	89 48 14             	mov    %ecx,0x14(%eax)
4064ed:	c3                   	ret
4064ee:	e8 59 60 00 00       	call   0x40c54c