406004:	50                   	push   %eax
406005:	51                   	push   %ecx
406006:	52                   	push   %edx
406007:	51                   	push   %ecx
406008:	ff b5 24 fd ff ff    	push   -0x2dc(%ebp)
40600e:	8d 8d 0c fd ff ff    	lea    -0x2f4(%ebp),%ecx
406014:	e8 57 6e 00 00       	call   0x40ce70
406019:	8d 85 0c fd ff ff    	lea    -0x2f4(%ebp),%eax
40601f:	c6 45 fc 08          	movb   $0x8,-0x4(%ebp)
406023:	50                   	push   %eax
406024:	8b cf                	mov    %edi,%ecx
406026:	e8 c5 46 00 00       	call   0x40a6f0
40602b:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
40602f:	8b 8d 20 fd ff ff    	mov    -0x2e0(%ebp),%ecx
406035:	83 f9 08             	cmp    $0x8,%ecx
406038:	72 35                	jb     0x40606f
40603a:	8b 95 0c fd ff ff    	mov    -0x2f4(%ebp),%edx
406040:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
406047:	8b c2                	mov    %edx,%eax
406049:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40604f:	72 14                	jb     0x406065
406051:	8b 50 fc             	mov    -0x4(%eax),%edx
406054:	83 c1 23             	add    $0x23,%ecx
406057:	2b c2                	sub    %edx,%eax
406059:	83 c0 fc             	add    $0xfffffffc,%eax
40605c:	83 f8 1f             	cmp    $0x1f,%eax
40605f:	0f 87 c0 04 00 00    	ja     0x406525
406065:	51                   	push   %ecx
406066:	52                   	push   %edx
406067:	e8 a2 58 01 00       	call   0x41b90e
40606c:	83 c4 08             	add    $0x8,%esp
40606f:	8b 85 e8 fc ff ff    	mov    -0x318(%ebp),%eax
406075:	8b d3                	mov    %ebx,%edx
406077:	85 c0                	test   %eax,%eax
406079:	0f 45 d0             	cmovne %eax,%edx
40607c:	8b ca                	mov    %edx,%ecx
40607e:	8d 41 02             	lea    0x2(%ecx),%eax
406081:	89 85 e8 fc ff ff    	mov    %eax,-0x318(%ebp)
406087:	66 8b 01             	mov    (%ecx),%ax
40608a:	83 c1 02             	add    $0x2,%ecx
40608d:	66 85 c0             	test   %ax,%ax
406090:	75 f5                	jne    0x406087
406092:	2b 8d e8 fc ff ff    	sub    -0x318(%ebp),%ecx
406098:	b8 fe ff ff 7f       	mov    $0x7ffffffe,%eax
40609d:	2b 46 10             	sub    0x10(%esi),%eax
4060a0:	d1 f9                	sar    $1,%ecx
4060a2:	3b c1                	cmp    %ecx,%eax
4060a4:	0f 82 6c 04 00 00    	jb     0x406516
4060aa:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
4060ae:	8b c6                	mov    %esi,%eax
4060b0:	72 02                	jb     0x4060b4
4060b2:	8b 06                	mov    (%esi),%eax
4060b4:	ff 76 10             	push   0x10(%esi)
4060b7:	50                   	push   %eax
4060b8:	51                   	push   %ecx
4060b9:	52                   	push   %edx
4060ba:	51                   	push   %ecx
4060bb:	ff b5 24 fd ff ff    	push   -0x2dc(%ebp)
4060c1:	8d 8d 0c fd ff ff    	lea    -0x2f4(%ebp),%ecx
4060c7:	e8 a4 6d 00 00       	call   0x40ce70
4060cc:	8d 85 0c fd ff ff    	lea    -0x2f4(%ebp),%eax
4060d2:	c6 45 fc 09          	movb   $0x9,-0x4(%ebp)
4060d6:	50                   	push   %eax
4060d7:	8b cf                	mov    %edi,%ecx
4060d9:	e8 12 46 00 00       	call   0x40a6f0
4060de:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
4060e2:	8b 8d 20 fd ff ff    	mov    -0x2e0(%ebp),%ecx
4060e8:	83 f9 08             	cmp    $0x8,%ecx
4060eb:	72 35                	jb     0x406122
4060ed:	8b 95 0c fd ff ff    	mov    -0x2f4(%ebp),%edx
4060f3:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
4060fa:	8b c2                	mov    %edx,%eax
4060fc:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
406102:	72 14                	jb     0x406118
406104:	8b 50 fc             	mov    -0x4(%eax),%edx
406107:	83 c1 23             	add    $0x23,%ecx
40610a:	2b c2                	sub    %edx,%eax
40610c:	83 c0 fc             	add    $0xfffffffc,%eax
40610f:	83 f8 1f             	cmp    $0x1f,%eax
406112:	0f 87 0d 04 00 00    	ja     0x406525
406118:	51                   	push   %ecx
406119:	52                   	push   %edx
40611a:	e8 ef 57 01 00       	call   0x41b90e
40611f:	83 c4 08             	add    $0x8,%esp
406122:	8b 85 e4 fc ff ff    	mov    -0x31c(%ebp),%eax
406128:	8b d3                	mov    %ebx,%edx
40612a:	85 c0                	test   %eax,%eax
40612c:	0f 45 d0             	cmovne %eax,%edx
40612f:	8b ca                	mov    %edx,%ecx
406131:	8d 41 02             	lea    0x2(%ecx),%eax
406134:	89 85 e4 fc ff ff    	mov    %eax,-0x31c(%ebp)
40613a:	66 0f 1f 44 00 00    	nopw   0x0(%eax,%eax,1)
406140:	66 8b 01             	mov    (%ecx),%ax
406143:	83 c1 02             	add    $0x2,%ecx
406146:	66 85 c0             	test   %ax,%ax
406149:	75 f5                	jne    0x406140
40614b:	2b 8d e4 fc ff ff    	sub    -0x31c(%ebp),%ecx
406151:	b8 fe ff ff 7f       	mov    $0x7ffffffe,%eax
406156:	2b 46 10             	sub    0x10(%esi),%eax
406159:	d1 f9                	sar    $1,%ecx
40615b:	3b c1                	cmp    %ecx,%eax
40615d:	0f 82 b3 03 00 00    	jb     0x406516
406163:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
406167:	8b c6                	mov    %esi,%eax
406169:	72 02                	jb     0x40616d
40616b:	8b 06                	mov    (%esi),%eax
40616d:	ff 76 10             	push   0x10(%esi)
406170:	50                   	push   %eax
406171:	51                   	push   %ecx
406172:	52                   	push   %edx
406173:	51                   	push   %ecx
406174:	ff b5 24 fd ff ff    	push   -0x2dc(%ebp)
40617a:	8d 8d 0c fd ff ff    	lea    -0x2f4(%ebp),%ecx
406180:	e8 eb 6c 00 00       	call   0x40ce70
406185:	8d 85 0c fd ff ff    	lea    -0x2f4(%ebp),%eax
40618b:	c6 45 fc 0a          	movb   $0xa,-0x4(%ebp)
40618f:	50                   	push   %eax
406190:	8b cf                	mov    %edi,%ecx
406192:	e8 59 45 00 00       	call   0x40a6f0
406197:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
40619b:	8b 8d 20 fd ff ff    	mov    -0x2e0(%ebp),%ecx
4061a1:	83 f9 08             	cmp    $0x8,%ecx
4061a4:	72 35                	jb     0x4061db
4061a6:	8b 95 0c fd ff ff    	mov    -0x2f4(%ebp),%edx
4061ac:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
4061b3:	8b c2                	mov    %edx,%eax
4061b5:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
4061bb:	72 14                	jb     0x4061d1
4061bd:	8b 50 fc             	mov    -0x4(%eax),%edx
4061c0:	83 c1 23             	add    $0x23,%ecx
4061c3:	2b c2                	sub    %edx,%eax
4061c5:	83 c0 fc             	add    $0xfffffffc,%eax
4061c8:	83 f8 1f             	cmp    $0x1f,%eax
4061cb:	0f 87 54 03 00 00    	ja     0x406525
4061d1:	51                   	push   %ecx
4061d2:	52                   	push   %edx
4061d3:	e8 36 57 01 00       	call   0x41b90e
4061d8:	83 c4 08             	add    $0x8,%esp
4061db:	8b 85 e0 fc ff ff    	mov    -0x320(%ebp),%eax
4061e1:	8b d3                	mov    %ebx,%edx
4061e3:	85 c0                	test   %eax,%eax
4061e5:	0f 45 d0             	cmovne %eax,%edx
4061e8:	8b ca                	mov    %edx,%ecx
4061ea:	8d 41 02             	lea    0x2(%ecx),%eax
4061ed:	89 85 e0 fc ff ff    	mov    %eax,-0x320(%ebp)
4061f3:	66 8b 01             	mov    (%ecx),%ax
4061f6:	83 c1 02             	add    $0x2,%ecx
4061f9:	66 85 c0             	test   %ax,%ax
4061fc:	75 f5                	jne    0x4061f3
4061fe:	2b 8d e0 fc ff ff    	sub    -0x320(%ebp),%ecx
406204:	b8 fe ff ff 7f       	mov    $0x7ffffffe,%eax
406209:	2b 46 10             	sub    0x10(%esi),%eax
40620c:	d1 f9                	sar    $1,%ecx
40620e:	3b c1                	cmp    %ecx,%eax
406210:	0f 82 00 03 00 00    	jb     0x406516
406216:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40621a:	8b c6                	mov    %esi,%eax
40621c:	72 02                	jb     0x406220
40621e:	8b 06                	mov    (%esi),%eax
406220:	ff 76 10             	push   0x10(%esi)
406223:	50                   	push   %eax
406224:	51                   	push   %ecx
406225:	52                   	push   %edx
406226:	51                   	push   %ecx
406227:	ff b5 24 fd ff ff    	push   -0x2dc(%ebp)
40622d:	8d 8d 0c fd ff ff    	lea    -0x2f4(%ebp),%ecx
406233:	e8 38 6c 00 00       	call   0x40ce70
406238:	8d 85 0c fd ff ff    	lea    -0x2f4(%ebp),%eax
40623e:	c6 45 fc 0b          	movb   $0xb,-0x4(%ebp)
406242:	50                   	push   %eax
406243:	8b cf                	mov    %edi,%ecx
406245:	e8 a6 44 00 00       	call   0x40a6f0
40624a:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
40624e:	8b 8d 20 fd ff ff    	mov    -0x2e0(%ebp),%ecx
406254:	83 f9 08             	cmp    $0x8,%ecx
406257:	72 35                	jb     0x40628e
406259:	8b 95 0c fd ff ff    	mov    -0x2f4(%ebp),%edx
40625f:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
406266:	8b c2                	mov    %edx,%eax
406268:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40626e:	72 14                	jb     0x406284
406270:	8b 50 fc             	mov    -0x4(%eax),%edx
406273:	83 c1 23             	add    $0x23,%ecx
406276:	2b c2                	sub    %edx,%eax
406278:	83 c0 fc             	add    $0xfffffffc,%eax
40627b:	83 f8 1f             	cmp    $0x1f,%eax
40627e:	0f 87 a1 02 00 00    	ja     0x406525
406284:	51                   	push   %ecx
406285:	52                   	push   %edx
406286:	e8 83 56 01 00       	call   0x41b90e
40628b:	83 c4 08             	add    $0x8,%esp
40628e:	8b 85 24 fd ff ff    	mov    -0x2dc(%ebp),%eax
406294:	85 c0                	test   %eax,%eax
406296:	0f 45 d8             	cmovne %eax,%ebx
406299:	8b cb                	mov    %ebx,%ecx
40629b:	8d 51 02             	lea    0x2(%ecx),%edx
40629e:	66 90                	xchg   %ax,%ax
4062a0:	66 8b 01             	mov    (%ecx),%ax
4062a3:	83 c1 02             	add    $0x2,%ecx
4062a6:	66 85 c0             	test   %ax,%ax
4062a9:	75 f5                	jne    0x4062a0
4062ab:	2b ca                	sub    %edx,%ecx
4062ad:	b8 fe ff ff 7f       	mov    $0x7ffffffe,%eax
4062b2:	8b 56 10             	mov    0x10(%esi),%edx
4062b5:	2b c2                	sub    %edx,%eax
4062b7:	d1 f9                	sar    $1,%ecx
4062b9:	3b c1                	cmp    %ecx,%eax
4062bb:	0f 82 55 02 00 00    	jb     0x406516
4062c1:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
4062c5:	8b c6                	mov    %esi,%eax
4062c7:	72 02                	jb     0x4062cb
4062c9:	8b 06                	mov    (%esi),%eax
4062cb:	52                   	push   %edx
4062cc:	50                   	push   %eax
4062cd:	51                   	push   %ecx
4062ce:	53                   	push   %ebx
4062cf:	51                   	push   %ecx
4062d0:	ff b5 24 fd ff ff    	push   -0x2dc(%ebp)
4062d6:	8d 8d 0c fd ff ff    	lea    -0x2f4(%ebp),%ecx
4062dc:	e8 8f 6b 00 00       	call   0x40ce70
4062e1:	8d 85 0c fd ff ff    	lea    -0x2f4(%ebp),%eax
4062e7:	c6 45 fc 0c          	movb   $0xc,-0x4(%ebp)
4062eb:	50                   	push   %eax
4062ec:	8b cf                	mov    %edi,%ecx
4062ee:	e8 fd 43 00 00       	call   0x40a6f0
4062f3:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
4062f7:	8b 8d 20 fd ff ff    	mov    -0x2e0(%ebp),%ecx
4062fd:	83 f9 08             	cmp    $0x8,%ecx
406300:	72 35                	jb     0x406337
406302:	8b 95 0c fd ff ff    	mov    -0x2f4(%ebp),%edx
406308:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
40630f:	8b c2                	mov    %edx,%eax
406311:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
406317:	72 14                	jb     0x40632d
406319:	8b 50 fc             	mov    -0x4(%eax),%edx
40631c:	83 c1 23             	add    $0x23,%ecx
40631f:	2b c2                	sub    %edx,%eax
406321:	83 c0 fc             	add    $0xfffffffc,%eax
406324:	83 f8 1f             	cmp    $0x1f,%eax
406327:	0f 87 f8 01 00 00    	ja     0x406525
40632d:	51                   	push   %ecx
40632e:	52                   	push   %edx
40632f:	e8 da 55 01 00       	call   0x41b90e
406334:	83 c4 08             	add    $0x8,%esp
406337:	68 b0 00 00 00       	push   $0xb0
40633c:	8d 85 28 fd ff ff    	lea    -0x2d8(%ebp),%eax
406342:	6a 00                	push   $0x0
406344:	50                   	push   %eax
406345:	e8 96 76 01 00       	call   0x41d9e0
40634a:	83 c4 08             	add    $0x8,%esp
40634d:	8d 8d 28 fd ff ff    	lea    -0x2d8(%ebp),%ecx
406353:	e8 48 2d 00 00       	call   0x4090a0
406358:	c6 45 fc 0d          	movb   $0xd,-0x4(%ebp)
40635c:	ff 15 5c f0 43 00    	call   *0x43f05c
406362:	50                   	push   %eax
406363:	8d 8d 38 fd ff ff    	lea    -0x2c8(%ebp),%ecx
406369:	e8 d2 2e 00 00       	call   0x409240
40636e:	8d 85 c4 fc ff ff    	lea    -0x33c(%ebp),%eax
406374:	50                   	push   %eax
406375:	8d 8d 40 fd ff ff    	lea    -0x2c0(%ebp),%ecx
40637b:	e8 e0 41 00 00       	call   0x40a560
406380:	8d 8d 28 fd ff ff    	lea    -0x2d8(%ebp),%ecx
406386:	e8 c5 f5 ff ff       	call   0x405950
40638b:	56                   	push   %esi
40638c:	8d 95 c4 fc ff ff    	lea    -0x33c(%ebp),%edx
406392:	c6 45 fc 0e          	movb   $0xe,-0x4(%ebp)
406396:	8d 8d 0c fd ff ff    	lea    -0x2f4(%ebp),%ecx
40639c:	e8 5f 56 00 00       	call   0x40ba00
4063a1:	83 c4 04             	add    $0x4,%esp
4063a4:	50                   	push   %eax
4063a5:	8b cf                	mov    %edi,%ecx
4063a7:	c6 45 fc 0f          	movb   $0xf,-0x4(%ebp)
4063ab:	e8 40 43 00 00       	call   0x40a6f0
4063b0:	c6 45 fc 0e          	movb   $0xe,-0x4(%ebp)
4063b4:	8b 8d 20 fd ff ff    	mov    -0x2e0(%ebp),%ecx
4063ba:	83 f9 08             	cmp    $0x8,%ecx
4063bd:	72 35                	jb     0x4063f4
4063bf:	8b 95 0c fd ff ff    	mov    -0x2f4(%ebp),%edx
4063c5:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
4063cc:	8b c2                	mov    %edx,%eax
4063ce:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
4063d4:	72 14                	jb     0x4063ea
4063d6:	8b 50 fc             	mov    -0x4(%eax),%edx
4063d9:	83 c1 23             	add    $0x23,%ecx
4063dc:	2b c2                	sub    %edx,%eax
4063de:	83 c0 fc             	add    $0xfffffffc,%eax
4063e1:	83 f8 1f             	cmp    $0x1f,%eax
4063e4:	0f 87 36 01 00 00    	ja     0x406520
4063ea:	51                   	push   %ecx
4063eb:	52                   	push   %edx
4063ec:	e8 1d 55 01 00       	call   0x41b90e
4063f1:	83 c4 08             	add    $0x8,%esp
4063f4:	33 c0                	xor    %eax,%eax
4063f6:	c7 85 1c fd ff ff 00 	movl   $0x0,-0x2e4(%ebp)
4063fd:	00 00 00
406400:	88 45 fc             	mov    %al,-0x4(%ebp)
406403:	8b 8d d8 fc ff ff    	mov    -0x328(%ebp),%ecx
406409:	c7 85 20 fd ff ff 07 	movl   $0x7,-0x2e0(%ebp)
406410:	00 00 00
406413:	66 89 85 0c fd ff ff 	mov    %ax,-0x2f4(%ebp)
40641a:	83 f9 08             	cmp    $0x8,%ecx
40641d:	72 35                	jb     0x406454
40641f:	8b 95 c4 fc ff ff    	mov    -0x33c(%ebp),%edx
406425:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
40642c:	8b c2                	mov    %edx,%eax
40642e:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
406434:	72 14                	jb     0x40644a
406436:	8b 50 fc             	mov    -0x4(%eax),%edx
406439:	83 c1 23             	add    $0x23,%ecx
40643c:	2b c2                	sub    %edx,%eax
40643e:	83 c0 fc             	add    $0xfffffffc,%eax
406441:	83 f8 1f             	cmp    $0x1f,%eax
406444:	0f 87 d6 00 00 00    	ja     0x406520
40644a:	51                   	push   %ecx
40644b:	52                   	push   %edx
40644c:	e8 bd 54 01 00       	call   0x41b90e
406451:	83 c4 08             	add    $0x8,%esp
406454:	83 bd ec fd ff ff 08 	cmpl   $0x8,-0x214(%ebp)
40645b:	8d 8d d8 fd ff ff    	lea    -0x228(%ebp),%ecx
406461:	8b 57 14             	mov    0x14(%edi),%edx
406464:	8b c2                	mov    %edx,%eax
406466:	0f 43 8d d8 fd ff ff 	cmovae -0x228(%ebp),%ecx
40646d:	8b 5f 10             	mov    0x10(%edi),%ebx
406470:	2b c3                	sub    %ebx,%eax
406472:	8b b5 e8 fd ff ff    	mov    -0x218(%ebp),%esi
406478:	3b f0                	cmp    %eax,%esi
40647a:	77 29                	ja     0x4064a5
40647c:	8d 04 1e             	lea    (%esi,%ebx,1),%eax
40647f:	89 47 10             	mov    %eax,0x10(%edi)
406482:	83 fa 08             	cmp    $0x8,%edx
406485:	72 02                	jb     0x406489
406487:	8b 3f                	mov    (%edi),%edi
406489:	8d 04 36             	lea    (%esi,%esi,1),%eax
40648c:	50                   	push   %eax
40648d:	51                   	push   %ecx
40648e:	8d 04 5f             	lea    (%edi,%ebx,2),%eax
406491:	50                   	push   %eax
406492:	e8 b9 6f 01 00       	call   0x41d450
406497:	83 c4 0c             	add    $0xc,%esp
40649a:	8d 04 33             	lea    (%ebx,%esi,1),%eax
40649d:	33 c9                	xor    %ecx,%ecx
40649f:	66 89 0c 47          	mov    %cx,(%edi,%eax,2)
4064a3:	eb 17                	jmp    0x4064bc
4064a5:	56                   	push   %esi
4064a6:	51                   	push   %ecx
4064a7:	c6 85 24 fd ff ff 00 	movb   $0x0,-0x2dc(%ebp)
4064ae:	8b cf                	mov    %edi,%ecx
4064b0:	ff b5 24 fd ff ff    	push   -0x2dc(%ebp)
4064b6:	56                   	push   %esi
4064b7:	e8 84 c2 ff ff       	call   0x402740