406148:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40614b:	8b 45 d0             	mov    -0x30(%ebp),%eax
40614e:	5f                   	pop    %edi
40614f:	5e                   	pop    %esi
406150:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
406157:	5b                   	pop    %ebx
406158:	c9                   	leave
406159:	c2 04 00             	ret    $0x4
40615c:	53                   	push   %ebx
40615d:	55                   	push   %ebp
40615e:	56                   	push   %esi
40615f:	8b f1                	mov    %ecx,%esi
406161:	33 ed                	xor    %ebp,%ebp
406163:	57                   	push   %edi
406164:	8b 46 08             	mov    0x8(%esi),%eax
406167:	3b c5                	cmp    %ebp,%eax
406169:	74 0d                	je     0x406178
40616b:	68 00 80 00 00       	push   $0x8000
406170:	55                   	push   %ebp
406171:	50                   	push   %eax
406172:	ff 15 98 a0 40 00    	call   *0x40a098
406178:	8b 1d 1c a1 40 00    	mov    0x40a11c,%ebx
40617e:	bf 00 10 00 00       	mov    $0x1000,%edi
406183:	6a 04                	push   $0x4
406185:	57                   	push   %edi
406186:	57                   	push   %edi
406187:	89 7e 0c             	mov    %edi,0xc(%esi)
40618a:	55                   	push   %ebp
40618b:	eb 35                	jmp    0x4061c2
40618d:	55                   	push   %ebp
40618e:	ff 76 0c             	push   0xc(%esi)
406191:	50                   	push   %eax
406192:	6a 05                	push   $0x5
406194:	ff 15 cc d7 40 00    	call   *0x40d7cc
40619a:	3b c5                	cmp    %ebp,%eax
40619c:	74 32                	je     0x4061d0
40619e:	3d 04 00 00 c0       	cmp    $0xc0000004,%eax
4061a3:	75 26                	jne    0x4061cb
4061a5:	68 00 80 00 00       	push   $0x8000
4061aa:	55                   	push   %ebp
4061ab:	ff 76 08             	push   0x8(%esi)
4061ae:	ff 15 98 a0 40 00    	call   *0x40a098
4061b4:	01 7e 0c             	add    %edi,0xc(%esi)
4061b7:	8b 46 0c             	mov    0xc(%esi),%eax
4061ba:	6a 04                	push   $0x4
4061bc:	57                   	push   %edi
4061bd:	50                   	push   %eax
4061be:	89 6e 08             	mov    %ebp,0x8(%esi)
4061c1:	55                   	push   %ebp
4061c2:	ff d3                	call   *%ebx
4061c4:	3b c5                	cmp    %ebp,%eax
4061c6:	89 46 08             	mov    %eax,0x8(%esi)
4061c9:	75 c2                	jne    0x40618d
4061cb:	83 c8 ff             	or     $0xffffffff,%eax
4061ce:	eb 03                	jmp    0x4061d3
4061d0:	6a 01                	push   $0x1
4061d2:	58                   	pop    %eax
4061d3:	5f                   	pop    %edi
4061d4:	5e                   	pop    %esi
4061d5:	5d                   	pop    %ebp
4061d6:	5b                   	pop    %ebx
4061d7:	c3                   	ret
4061d8:	55                   	push   %ebp
4061d9:	8b ec                	mov    %esp,%ebp
4061db:	81 ec 2c 01 00 00    	sub    $0x12c,%esp
4061e1:	53                   	push   %ebx
4061e2:	56                   	push   %esi
4061e3:	8b f1                	mov    %ecx,%esi
4061e5:	57                   	push   %edi
4061e6:	80 7e 04 00          	cmpb   $0x0,0x4(%esi)
4061ea:	0f 85 97 05 00 00    	jne    0x406787
4061f0:	80 7e 05 00          	cmpb   $0x0,0x5(%esi)
4061f4:	0f 85 8d 05 00 00    	jne    0x406787
4061fa:	c6 46 04 01          	movb   $0x1,0x4(%esi)
4061fe:	e8 59 ff ff ff       	call   0x40615c
406203:	83 f8 01             	cmp    $0x1,%eax
406206:	0f 85 7e 05 00 00    	jne    0x40678a
40620c:	8b 46 1c             	mov    0x1c(%esi),%eax
40620f:	33 ff                	xor    %edi,%edi
406211:	33 c9                	xor    %ecx,%ecx
406213:	89 7d dc             	mov    %edi,-0x24(%ebp)
406216:	89 4d fc             	mov    %ecx,-0x4(%ebp)
406219:	89 7d e0             	mov    %edi,-0x20(%ebp)
40621c:	89 7d e4             	mov    %edi,-0x1c(%ebp)
40621f:	89 46 20             	mov    %eax,0x20(%esi)
406222:	8b 5e 08             	mov    0x8(%esi),%ebx
406225:	03 5d dc             	add    -0x24(%ebp),%ebx
406228:	39 7b 44             	cmp    %edi,0x44(%ebx)
40622b:	75 09                	jne    0x406236
40622d:	39 7b 04             	cmp    %edi,0x4(%ebx)
406230:	0f 84 2a 03 00 00    	je     0x406560
406236:	39 4e 1c             	cmp    %ecx,0x1c(%esi)
406239:	77 5c                	ja     0x406297
40623b:	8b f9                	mov    %ecx,%edi
40623d:	c1 e7 02             	shl    $0x2,%edi
406240:	8d 47 04             	lea    0x4(%edi),%eax
406243:	50                   	push   %eax
406244:	ff 76 18             	push   0x18(%esi)
406247:	ff 15 30 a1 40 00    	call   *0x40a130
40624d:	59                   	pop    %ecx
40624e:	89 46 18             	mov    %eax,0x18(%esi)
406251:	85 c0                	test   %eax,%eax
406253:	59                   	pop    %ecx
406254:	0f 84 14 03 00 00    	je     0x40656e
40625a:	68 50 02 00 00       	push   $0x250
40625f:	ff 15 44 a1 40 00    	call   *0x40a144
406265:	59                   	pop    %ecx
406266:	8b 4e 18             	mov    0x18(%esi),%ecx
406269:	89 04 0f             	mov    %eax,(%edi,%ecx,1)
40626c:	8b 46 18             	mov    0x18(%esi),%eax
40626f:	8b 04 07             	mov    (%edi,%eax,1),%eax
406272:	85 c0                	test   %eax,%eax
406274:	0f 84 f4 02 00 00    	je     0x40656e
40627a:	83 08 ff             	orl    $0xffffffff,(%eax)
40627d:	8b 46 18             	mov    0x18(%esi),%eax
406280:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406283:	8b 04 07             	mov    (%edi,%eax,1),%eax
406286:	83 a0 20 02 00 00 00 	andl   $0x0,0x220(%eax)
40628d:	83 a0 24 02 00 00 00 	andl   $0x0,0x224(%eax)
406294:	ff 46 1c             	incl   0x1c(%esi)
406297:	8b 46 18             	mov    0x18(%esi),%eax
40629a:	8b f9                	mov    %ecx,%edi
40629c:	c1 e7 02             	shl    $0x2,%edi
40629f:	8b 04 07             	mov    (%edi,%eax,1),%eax
4062a2:	80 a0 4c 02 00 00 00 	andb   $0x0,0x24c(%eax)
4062a9:	8b 43 30             	mov    0x30(%ebx),%eax
4062ac:	03 43 28             	add    0x28(%ebx),%eax
4062af:	8b 4b 44             	mov    0x44(%ebx),%ecx
4062b2:	89 45 f4             	mov    %eax,-0xc(%ebp)
4062b5:	8b 43 34             	mov    0x34(%ebx),%eax
4062b8:	13 43 2c             	adc    0x2c(%ebx),%eax
4062bb:	89 45 f8             	mov    %eax,-0x8(%ebp)
4062be:	8b 46 18             	mov    0x18(%esi),%eax
4062c1:	8b 04 07             	mov    (%edi,%eax,1),%eax
4062c4:	3b 08                	cmp    (%eax),%ecx
4062c6:	0f 85 52 01 00 00    	jne    0x40641e
4062cc:	8b 53 20             	mov    0x20(%ebx),%edx
4062cf:	8d 88 20 02 00 00    	lea    0x220(%eax),%ecx
4062d5:	3b 11                	cmp    (%ecx),%edx
4062d7:	0f 85 41 01 00 00    	jne    0x40641e
4062dd:	8b 53 24             	mov    0x24(%ebx),%edx
4062e0:	3b 51 04             	cmp    0x4(%ecx),%edx
4062e3:	0f 85 35 01 00 00    	jne    0x40641e
4062e9:	80 a0 4c 02 00 00 00 	andb   $0x0,0x24c(%eax)
4062f0:	8b 46 18             	mov    0x18(%esi),%eax
4062f3:	8b 4d f4             	mov    -0xc(%ebp),%ecx
4062f6:	8b 55 f8             	mov    -0x8(%ebp),%edx
4062f9:	8b 04 07             	mov    (%edi,%eax,1),%eax
4062fc:	05 28 02 00 00       	add    $0x228,%eax
406301:	2b 08                	sub    (%eax),%ecx
406303:	1b 50 04             	sbb    0x4(%eax),%edx
406306:	89 55 ec             	mov    %edx,-0x14(%ebp)
406309:	8b 55 f4             	mov    -0xc(%ebp),%edx
40630c:	89 10                	mov    %edx,(%eax)
40630e:	8b 55 f8             	mov    -0x8(%ebp),%edx
406311:	89 50 04             	mov    %edx,0x4(%eax)
406314:	8b 46 18             	mov    0x18(%esi),%eax
406317:	8b 55 ec             	mov    -0x14(%ebp),%edx
40631a:	8b 04 07             	mov    (%edi,%eax,1),%eax
40631d:	89 88 30 02 00 00    	mov    %ecx,0x230(%eax)
406323:	89 90 34 02 00 00    	mov    %edx,0x234(%eax)
406329:	8b 46 18             	mov    0x18(%esi),%eax
40632c:	8b 04 07             	mov    (%edi,%eax,1),%eax
40632f:	8b 90 10 02 00 00    	mov    0x210(%eax),%edx
406335:	3b 53 68             	cmp    0x68(%ebx),%edx
406338:	74 16                	je     0x406350
40633a:	80 88 4c 02 00 00 08 	orb    $0x8,0x24c(%eax)
406341:	8b 46 18             	mov    0x18(%esi),%eax
406344:	8b 53 68             	mov    0x68(%ebx),%edx
406347:	8b 04 07             	mov    (%edi,%eax,1),%eax
40634a:	89 90 10 02 00 00    	mov    %edx,0x210(%eax)
406350:	8b 46 18             	mov    0x18(%esi),%eax
406353:	8b 53 40             	mov    0x40(%ebx),%edx
406356:	8b 04 07             	mov    (%edi,%eax,1),%eax
406359:	05 48 02 00 00       	add    $0x248,%eax
40635e:	39 10                	cmp    %edx,(%eax)
406360:	74 0f                	je     0x406371
406362:	89 10                	mov    %edx,(%eax)
406364:	8b 46 18             	mov    0x18(%esi),%eax
406367:	8b 04 07             	mov    (%edi,%eax,1),%eax
40636a:	80 88 4c 02 00 00 10 	orb    $0x10,0x24c(%eax)
406371:	8b 46 18             	mov    0x18(%esi),%eax
406374:	8b 93 a4 00 00 00    	mov    0xa4(%ebx),%edx
40637a:	89 55 d0             	mov    %edx,-0x30(%ebp)
40637d:	8b 04 07             	mov    (%edi,%eax,1),%eax
406380:	89 45 f0             	mov    %eax,-0x10(%ebp)
406383:	8b 80 38 02 00 00    	mov    0x238(%eax),%eax
406389:	3b 83 a0 00 00 00    	cmp    0xa0(%ebx),%eax
40638f:	75 0d                	jne    0x40639e
406391:	8b 45 f0             	mov    -0x10(%ebp),%eax
406394:	8b 80 3c 02 00 00    	mov    0x23c(%eax),%eax
40639a:	3b c2                	cmp    %edx,%eax
40639c:	74 25                	je     0x4063c3
40639e:	8b 45 f0             	mov    -0x10(%ebp),%eax
4063a1:	8b 93 a0 00 00 00    	mov    0xa0(%ebx),%edx
4063a7:	89 90 38 02 00 00    	mov    %edx,0x238(%eax)
4063ad:	8b 55 d0             	mov    -0x30(%ebp),%edx
4063b0:	89 90 3c 02 00 00    	mov    %edx,0x23c(%eax)
4063b6:	8b 46 18             	mov    0x18(%esi),%eax
4063b9:	8b 04 07             	mov    (%edi,%eax,1),%eax
4063bc:	80 88 4c 02 00 00 40 	orb    $0x40,0x24c(%eax)
4063c3:	8b 46 18             	mov    0x18(%esi),%eax
4063c6:	8b 93 ac 00 00 00    	mov    0xac(%ebx),%edx
4063cc:	89 55 d8             	mov    %edx,-0x28(%ebp)
4063cf:	8b 04 07             	mov    (%edi,%eax,1),%eax
4063d2:	89 45 f0             	mov    %eax,-0x10(%ebp)
4063d5:	8b 80 40 02 00 00    	mov    0x240(%eax),%eax
4063db:	3b 83 a8 00 00 00    	cmp    0xa8(%ebx),%eax
4063e1:	75 11                	jne    0x4063f4
4063e3:	8b 45 f0             	mov    -0x10(%ebp),%eax
4063e6:	8b 80 44 02 00 00    	mov    0x244(%eax),%eax
4063ec:	3b c2                	cmp    %edx,%eax
4063ee:	0f 84 43 01 00 00    	je     0x406537
4063f4:	8b 45 f0             	mov    -0x10(%ebp),%eax
4063f7:	8b 93 a8 00 00 00    	mov    0xa8(%ebx),%edx
4063fd:	89 90 40 02 00 00    	mov    %edx,0x240(%eax)
406403:	8b 55 d8             	mov    -0x28(%ebp),%edx
406406:	89 90 44 02 00 00    	mov    %edx,0x244(%eax)
40640c:	8b 46 18             	mov    0x18(%esi),%eax
40640f:	8b 04 07             	mov    (%edi,%eax,1),%eax
406412:	80 88 4c 02 00 00 20 	orb    $0x20,0x24c(%eax)
406419:	e9 19 01 00 00       	jmp    0x406537
40641e:	8b 4b 44             	mov    0x44(%ebx),%ecx
406421:	89 08                	mov    %ecx,(%eax)
406423:	8b 46 18             	mov    0x18(%esi),%eax
406426:	8b 4b 48             	mov    0x48(%ebx),%ecx
406429:	8b 04 07             	mov    (%edi,%eax,1),%eax
40642c:	89 48 04             	mov    %ecx,0x4(%eax)
40642f:	8b 46 18             	mov    0x18(%esi),%eax
406432:	8b 4b 20             	mov    0x20(%ebx),%ecx
406435:	8b 04 07             	mov    (%edi,%eax,1),%eax
406438:	89 88 20 02 00 00    	mov    %ecx,0x220(%eax)
40643e:	8b 4b 24             	mov    0x24(%ebx),%ecx
406441:	89 88 24 02 00 00    	mov    %ecx,0x224(%eax)
406447:	8b 46 18             	mov    0x18(%esi),%eax
40644a:	8b 4b 68             	mov    0x68(%ebx),%ecx
40644d:	8b 04 07             	mov    (%edi,%eax,1),%eax
406450:	89 88 10 02 00 00    	mov    %ecx,0x210(%eax)
406456:	8b 46 18             	mov    0x18(%esi),%eax
406459:	8b 4b 40             	mov    0x40(%ebx),%ecx
40645c:	8b 04 07             	mov    (%edi,%eax,1),%eax
40645f:	89 88 48 02 00 00    	mov    %ecx,0x248(%eax)
406465:	8b 46 18             	mov    0x18(%esi),%eax
406468:	33 c9                	xor    %ecx,%ecx
40646a:	8b 04 07             	mov    (%edi,%eax,1),%eax
40646d:	39 08                	cmp    %ecx,(%eax)
40646f:	75 29                	jne    0x40649a
406471:	83 c0 08             	add    $0x8,%eax
406474:	68 14 cc 40 00       	push   $0x40cc14
406479:	50                   	push   %eax
40647a:	e8 c9 2b 00 00       	call   0x409048
40647f:	8b 46 18             	mov    0x18(%esi),%eax
406482:	68 0c cc 40 00       	push   $0x40cc0c
406487:	8b 04 07             	mov    (%edi,%eax,1),%eax
40648a:	05 0c 01 00 00       	add    $0x10c,%eax
40648f:	50                   	push   %eax
406490:	e8 b3 2b 00 00       	call   0x409048
406495:	83 c4 10             	add    $0x10,%esp
406498:	eb 59                	jmp    0x4064f3
40649a:	51                   	push   %ecx
40649b:	51                   	push   %ecx
40649c:	83 c0 08             	add    $0x8,%eax
40649f:	68 04 01 00 00       	push   $0x104
4064a4:	50                   	push   %eax
4064a5:	6a ff                	push   $0xffffffff
4064a7:	ff 73 3c             	push   0x3c(%ebx)
4064aa:	51                   	push   %ecx
4064ab:	51                   	push   %ecx
4064ac:	ff 15 e4 a0 40 00    	call   *0x40a0e4
4064b2:	85 c0                	test   %eax,%eax
4064b4:	75 16                	jne    0x4064cc
4064b6:	8b 46 18             	mov    0x18(%esi),%eax
4064b9:	68 6c c3 40 00       	push   $0x40c36c
4064be:	8b 04 07             	mov    (%edi,%eax,1),%eax
4064c1:	83 c0 08             	add    $0x8,%eax
4064c4:	50                   	push   %eax
4064c5:	e8 7e 2b 00 00       	call   0x409048
4064ca:	59                   	pop    %ecx
4064cb:	59                   	pop    %ecx
4064cc:	ff 75 fc             	push   -0x4(%ebp)
4064cf:	8b ce                	mov    %esi,%ecx
4064d1:	e8 2c fb ff ff       	call   0x406002
4064d6:	83 f8 01             	cmp    $0x1,%eax
4064d9:	74 18                	je     0x4064f3
4064db:	8b 46 18             	mov    0x18(%esi),%eax
4064de:	68 6c c3 40 00       	push   $0x40c36c
4064e3:	8b 04 07             	mov    (%edi,%eax,1),%eax
4064e6:	05 0c 01 00 00       	add    $0x10c,%eax
4064eb:	50                   	push   %eax
4064ec:	e8 57 2b 00 00       	call   0x409048
4064f1:	59                   	pop    %ecx
4064f2:	59                   	pop    %ecx
4064f3:	8b 46 18             	mov    0x18(%esi),%eax
4064f6:	33 c9                	xor    %ecx,%ecx
4064f8:	d9 ee                	fldz
4064fa:	8b 04 07             	mov    (%edi,%eax,1),%eax
4064fd:	89 4d ec             	mov    %ecx,-0x14(%ebp)
406500:	89 88 30 02 00 00    	mov    %ecx,0x230(%eax)
406506:	89 88 34 02 00 00    	mov    %ecx,0x234(%eax)
40650c:	8b 46 18             	mov    0x18(%esi),%eax
40650f:	8b 04 07             	mov    (%edi,%eax,1),%eax
406512:	89 88 28 02 00 00    	mov    %ecx,0x228(%eax)
406518:	89 88 2c 02 00 00    	mov    %ecx,0x22c(%eax)
40651e:	8b 46 18             	mov    0x18(%esi),%eax
406521:	8b 04 07             	mov    (%edi,%eax,1),%eax
406524:	dd 98 18 02 00 00    	fstpl  0x218(%eax)
40652a:	8b 46 18             	mov    0x18(%esi),%eax
40652d:	8b 04 07             	mov    (%edi,%eax,1),%eax
406530:	80 88 4c 02 00 00 ff 	orb    $0xff,0x24c(%eax)
406537:	01 4d e0             	add    %ecx,-0x20(%ebp)
40653a:	8b 45 ec             	mov    -0x14(%ebp),%eax
40653d:	8b 4d f4             	mov    -0xc(%ebp),%ecx
406540:	11 45 e4             	adc    %eax,-0x1c(%ebp)
406543:	8b 46 18             	mov    0x18(%esi),%eax
406546:	ff 45 fc             	incl   -0x4(%ebp)
406549:	8b 04 07             	mov    (%edi,%eax,1),%eax
40654c:	33 ff                	xor    %edi,%edi
40654e:	89 88 28 02 00 00    	mov    %ecx,0x228(%eax)
406554:	8b 4d f8             	mov    -0x8(%ebp),%ecx
406557:	89 88 2c 02 00 00    	mov    %ecx,0x22c(%eax)
40655d:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406560:	8b 1b                	mov    (%ebx),%ebx
406562:	01 5d dc             	add    %ebx,-0x24(%ebp)
406565:	3b df                	cmp    %edi,%ebx
406567:	74 0d                	je     0x406576
406569:	e9 b4 fc ff ff       	jmp    0x406222
40656e:	83 c8 ff             	or     $0xffffffff,%eax
406571:	e9 14 02 00 00       	jmp    0x40678a
406576:	8b 46 1c             	mov    0x1c(%esi),%eax
406579:	3b c1                	cmp    %ecx,%eax
40657b:	76 34                	jbe    0x4065b1
40657d:	8b 4e 18             	mov    0x18(%esi),%ecx
406580:	48                   	dec    %eax
406581:	89 46 1c             	mov    %eax,0x1c(%esi)
406584:	ff 34 81             	push   (%ecx,%eax,4)
406587:	ff 15 48 a1 40 00    	call   *0x40a148
40658d:	8b 46 1c             	mov    0x1c(%esi),%eax
406590:	59                   	pop    %ecx
406591:	3b 45 fc             	cmp    -0x4(%ebp),%eax
406594:	77 e7                	ja     0x40657d
406596:	8b 45 fc             	mov    -0x4(%ebp),%eax
406599:	8d 04 85 04 00 00 00 	lea    0x4(,%eax,4),%eax
4065a0:	50                   	push   %eax
4065a1:	ff 76 18             	push   0x18(%esi)
4065a4:	ff 15 30 a1 40 00    	call   *0x40a130
4065aa:	59                   	pop    %ecx
4065ab:	89 46 18             	mov    %eax,0x18(%esi)
4065ae:	59                   	pop    %ecx
4065af:	33 ff                	xor    %edi,%edi
4065b1:	39 7e 1c             	cmp    %edi,0x1c(%esi)