40afc3:	0f 8f 9c 79 06 00    	jg     0x472965
40afc9:	8b 03                	mov    (%ebx),%eax
40afcb:	33 c9                	xor    %ecx,%ecx
40afcd:	89 7b 04             	mov    %edi,0x4(%ebx)
40afd0:	66 89 08             	mov    %cx,(%eax)
40afd3:	8b 45 08             	mov    0x8(%ebp),%eax
40afd6:	8b 40 04             	mov    0x4(%eax),%eax
40afd9:	85 c0                	test   %eax,%eax
40afdb:	0f 8e a6 00 00 00    	jle    0x40b087
40afe1:	dd 05 10 27 4b 00    	fldl   0x4b2710
40afe7:	8b 75 08             	mov    0x8(%ebp),%esi
40afea:	dd 05 08 27 4b 00    	fldl   0x4b2708
40aff0:	dd 05 00 27 4b 00    	fldl   0x4b2700
40aff6:	8b 0e                	mov    (%esi),%ecx
40aff8:	3b f8                	cmp    %eax,%edi
40affa:	0f 83 62 01 00 00    	jae    0x40b162
40b000:	8d 14 79             	lea    (%ecx,%edi,2),%edx
40b003:	66 83 3a 5c          	cmpw   $0x5c,(%edx)
40b007:	0f 84 8e 79 06 00    	je     0x47299b
40b00d:	3b f8                	cmp    %eax,%edi
40b00f:	0f 83 55 01 00 00    	jae    0x40b16a
40b015:	8d 14 79             	lea    (%ecx,%edi,2),%edx
40b018:	66 83 3a 24          	cmpw   $0x24,(%edx)
40b01c:	0f 84 08 7a 06 00    	je     0x472a2a
40b022:	8b d7                	mov    %edi,%edx
40b024:	47                   	inc    %edi
40b025:	89 7d fc             	mov    %edi,-0x4(%ebp)
40b028:	3b d0                	cmp    %eax,%edx
40b02a:	0f 83 42 01 00 00    	jae    0x40b172
40b030:	8d 04 51             	lea    (%ecx,%edx,2),%eax
40b033:	0f b7 00             	movzwl (%eax),%eax
40b036:	8b 4b 0c             	mov    0xc(%ebx),%ecx
40b039:	89 45 f8             	mov    %eax,-0x8(%ebp)
40b03c:	8b 01                	mov    (%ecx),%eax
40b03e:	83 f8 01             	cmp    $0x1,%eax
40b041:	0f 8f 15 7a 06 00    	jg     0x472a5c
40b047:	8b 43 04             	mov    0x4(%ebx),%eax
40b04a:	83 c0 02             	add    $0x2,%eax
40b04d:	39 43 08             	cmp    %eax,0x8(%ebx)
40b050:	0f 82 60 7a 06 00    	jb     0x472ab6
40b056:	8b 4b 04             	mov    0x4(%ebx),%ecx
40b059:	8b 03                	mov    (%ebx),%eax
40b05b:	8b 55 f8             	mov    -0x8(%ebp),%edx
40b05e:	66 89 14 48          	mov    %dx,(%eax,%ecx,2)
40b062:	ff 43 04             	incl   0x4(%ebx)
40b065:	8b 4b 04             	mov    0x4(%ebx),%ecx
40b068:	8b 03                	mov    (%ebx),%eax
40b06a:	33 d2                	xor    %edx,%edx
40b06c:	66 89 14 48          	mov    %dx,(%eax,%ecx,2)
40b070:	8b 46 04             	mov    0x4(%esi),%eax
40b073:	3b f8                	cmp    %eax,%edi
40b075:	0f 8c 7b ff ff ff    	jl     0x40aff6
40b07b:	8b 75 d0             	mov    -0x30(%ebp),%esi
40b07e:	dd da                	fstp   %st(2)
40b080:	dd d8                	fstp   %st(0)
40b082:	89 75 ec             	mov    %esi,-0x14(%ebp)
40b085:	dd d8                	fstp   %st(0)
40b087:	33 c0                	xor    %eax,%eax
40b089:	89 45 0c             	mov    %eax,0xc(%ebp)
40b08c:	89 45 d8             	mov    %eax,-0x28(%ebp)
40b08f:	33 c9                	xor    %ecx,%ecx
40b091:	b8 08 00 00 00       	mov    $0x8,%eax
40b096:	ba 02 00 00 00       	mov    $0x2,%edx
40b09b:	f7 e2                	mul    %edx
40b09d:	0f 90 c1             	seto   %cl
40b0a0:	c7 45 dc 08 00 00 00 	movl   $0x8,-0x24(%ebp)
40b0a7:	f7 d9                	neg    %ecx
40b0a9:	0b c8                	or     %eax,%ecx
40b0ab:	51                   	push   %ecx
40b0ac:	e8 39 44 01 00       	call   0x41f4ea
40b0b1:	83 c4 04             	add    $0x4,%esp
40b0b4:	33 c9                	xor    %ecx,%ecx
40b0b6:	6a 04                	push   $0x4
40b0b8:	89 45 f8             	mov    %eax,-0x8(%ebp)
40b0bb:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40b0be:	66 89 08             	mov    %cx,(%eax)
40b0c1:	e8 24 44 01 00       	call   0x41f4ea
40b0c6:	83 c4 04             	add    $0x4,%esp
40b0c9:	89 45 fc             	mov    %eax,-0x4(%ebp)
40b0cc:	85 c0                	test   %eax,%eax
40b0ce:	0f 84 a6 00 00 00    	je     0x40b17a
40b0d4:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
40b0da:	8b 4d 08             	mov    0x8(%ebp),%ecx
40b0dd:	89 45 e0             	mov    %eax,-0x20(%ebp)
40b0e0:	8b 49 04             	mov    0x4(%ecx),%ecx
40b0e3:	3b f9                	cmp    %ecx,%edi
40b0e5:	0f 87 99 00 00 00    	ja     0x40b184
40b0eb:	8b d1                	mov    %ecx,%edx
40b0ed:	2b d7                	sub    %edi,%edx
40b0ef:	89 55 e4             	mov    %edx,-0x1c(%ebp)
40b0f2:	0f 85 ef 7a 06 00    	jne    0x472be7
40b0f8:	8b 7d f8             	mov    -0x8(%ebp),%edi
40b0fb:	8d 4d d4             	lea    -0x2c(%ebp),%ecx
40b0fe:	3b d9                	cmp    %ecx,%ebx
40b100:	0f 84 76 7b 06 00    	je     0x472c7c
40b106:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
40b10a:	0f 87 90 7b 06 00    	ja     0x472ca0
40b110:	ff 08                	decl   (%eax)
40b112:	75 15                	jne    0x40b129
40b114:	57                   	push   %edi
40b115:	e8 44 44 01 00       	call   0x41f55e
40b11a:	8b 45 fc             	mov    -0x4(%ebp),%eax
40b11d:	83 c4 04             	add    $0x4,%esp
40b120:	50                   	push   %eax
40b121:	e8 38 44 01 00       	call   0x41f55e
40b126:	83 c4 04             	add    $0x4,%esp
40b129:	8b 5d f4             	mov    -0xc(%ebp),%ebx
40b12c:	85 db                	test   %ebx,%ebx
40b12e:	75 05                	jne    0x40b135
40b130:	bb 01 00 00 00       	mov    $0x1,%ebx
40b135:	ff 0e                	decl   (%esi)
40b137:	75 14                	jne    0x40b14d
40b139:	ff 75 c4             	push   -0x3c(%ebp)
40b13c:	e8 1d 44 01 00       	call   0x41f55e
40b141:	83 c4 04             	add    $0x4,%esp
40b144:	56                   	push   %esi
40b145:	e8 14 44 01 00       	call   0x41f55e
40b14a:	83 c4 04             	add    $0x4,%esp
40b14d:	5f                   	pop    %edi
40b14e:	5e                   	pop    %esi
40b14f:	8b c3                	mov    %ebx,%eax
40b151:	5b                   	pop    %ebx
40b152:	8b e5                	mov    %ebp,%esp
40b154:	5d                   	pop    %ebp
40b155:	c2 08 00             	ret    $0x8
40b158:	33 f6                	xor    %esi,%esi
40b15a:	89 75 ec             	mov    %esi,-0x14(%ebp)
40b15d:	e9 4b fe ff ff       	jmp    0x40afad
40b162:	8d 14 41             	lea    (%ecx,%eax,2),%edx
40b165:	e9 99 fe ff ff       	jmp    0x40b003
40b16a:	8d 14 41             	lea    (%ecx,%eax,2),%edx
40b16d:	e9 a6 fe ff ff       	jmp    0x40b018
40b172:	8d 04 41             	lea    (%ecx,%eax,2),%eax
40b175:	e9 b9 fe ff ff       	jmp    0x40b033
40b17a:	33 c0                	xor    %eax,%eax
40b17c:	89 45 fc             	mov    %eax,-0x4(%ebp)
40b17f:	e9 56 ff ff ff       	jmp    0x40b0da
40b184:	8b f9                	mov    %ecx,%edi
40b186:	e9 60 ff ff ff       	jmp    0x40b0eb
40b18b:	55                   	push   %ebp
40b18c:	8b ec                	mov    %esp,%ebp
40b18e:	53                   	push   %ebx
40b18f:	56                   	push   %esi
40b190:	8b 75 0c             	mov    0xc(%ebp),%esi
40b193:	8b d9                	mov    %ecx,%ebx
40b195:	85 f6                	test   %esi,%esi
40b197:	74 0a                	je     0x40b1a3
40b199:	57                   	push   %edi
40b19a:	8b 7d 08             	mov    0x8(%ebp),%edi
40b19d:	3b 7b 04             	cmp    0x4(%ebx),%edi
40b1a0:	72 07                	jb     0x40b1a9
40b1a2:	5f                   	pop    %edi
40b1a3:	5e                   	pop    %esi
40b1a4:	5b                   	pop    %ebx
40b1a5:	5d                   	pop    %ebp
40b1a6:	c2 08 00             	ret    $0x8
40b1a9:	83 fe ff             	cmp    $0xffffffff,%esi
40b1ac:	75 33                	jne    0x40b1e1
40b1ae:	8b 73 04             	mov    0x4(%ebx),%esi
40b1b1:	2b f7                	sub    %edi,%esi
40b1b3:	e8 42 0c 00 00       	call   0x40bdfa
40b1b8:	8b 43 04             	mov    0x4(%ebx),%eax
40b1bb:	8b 0b                	mov    (%ebx),%ecx
40b1bd:	2b c7                	sub    %edi,%eax
40b1bf:	2b c6                	sub    %esi,%eax
40b1c1:	8d 04 45 02 00 00 00 	lea    0x2(,%eax,2),%eax
40b1c8:	50                   	push   %eax
40b1c9:	8d 04 37             	lea    (%edi,%esi,1),%eax
40b1cc:	8d 04 41             	lea    (%ecx,%eax,2),%eax
40b1cf:	50                   	push   %eax
40b1d0:	8d 04 79             	lea    (%ecx,%edi,2),%eax
40b1d3:	50                   	push   %eax
40b1d4:	e8 a7 3c 01 00       	call   0x41ee80
40b1d9:	83 c4 0c             	add    $0xc,%esp
40b1dc:	29 73 04             	sub    %esi,0x4(%ebx)
40b1df:	eb c1                	jmp    0x40b1a2
40b1e1:	8d 04 37             	lea    (%edi,%esi,1),%eax
40b1e4:	3b 43 04             	cmp    0x4(%ebx),%eax
40b1e7:	76 ca                	jbe    0x40b1b3
40b1e9:	eb c3                	jmp    0x40b1ae
40b1eb:	55                   	push   %ebp
40b1ec:	8b ec                	mov    %esp,%ebp
40b1ee:	83 e4 f8             	and    $0xfffffff8,%esp
40b1f1:	83 ec 1c             	sub    $0x1c,%esp
40b1f4:	53                   	push   %ebx
40b1f5:	56                   	push   %esi
40b1f6:	57                   	push   %edi
40b1f7:	8b d9                	mov    %ecx,%ebx
40b1f9:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40b1fc:	33 c0                	xor    %eax,%eax
40b1fe:	68 00 dc 49 00       	push   $0x49dc00
40b203:	89 44 24 14          	mov    %eax,0x14(%esp)
40b207:	e8 ad 1b 00 00       	call   0x40cdb9
40b20c:	8b 7d 08             	mov    0x8(%ebp),%edi
40b20f:	83 7f 08 02          	cmpl   $0x2,0x8(%edi)
40b213:	75 22                	jne    0x40b237
40b215:	8b 47 04             	mov    0x4(%edi),%eax
40b218:	8b 48 04             	mov    0x4(%eax),%ecx
40b21b:	e8 66 20 00 00       	call   0x40d286
40b220:	8b f0                	mov    %eax,%esi
40b222:	89 74 24 10          	mov    %esi,0x10(%esp)
40b226:	83 fe ff             	cmp    $0xffffffff,%esi
40b229:	0f 84 26 ae 06 00    	je     0x476055
40b22f:	85 f6                	test   %esi,%esi
40b231:	0f 8e 34 ae 06 00    	jle    0x47606b
40b237:	8b 47 04             	mov    0x4(%edi),%eax
40b23a:	6a 04                	push   $0x4
40b23c:	8b 30                	mov    (%eax),%esi
40b23e:	8b ce                	mov    %esi,%ecx
40b240:	e8 9f 23 00 00       	call   0x40d5e4
40b245:	84 c0                	test   %al,%al
40b247:	0f 84 39 ae 06 00    	je     0x476086
40b24d:	6a 38                	push   $0x38
40b24f:	e8 96 42 01 00       	call   0x41f4ea
40b254:	59                   	pop    %ecx
40b255:	85 c0                	test   %eax,%eax
40b257:	0f 84 d3 00 00 00    	je     0x40b330
40b25d:	8b c8                	mov    %eax,%ecx
40b25f:	e8 56 96 ff ff       	call   0x4048ba
40b264:	8b f8                	mov    %eax,%edi
40b266:	8b 45 08             	mov    0x8(%ebp),%eax
40b269:	8b 40 04             	mov    0x4(%eax),%eax
40b26c:	8b 30                	mov    (%eax),%esi
40b26e:	8b ce                	mov    %esi,%ecx
40b270:	e8 f7 e0 ff ff       	call   0x40936c
40b275:	68 00 20 00 00       	push   $0x2000
40b27a:	ff 76 08             	push   0x8(%esi)
40b27d:	8b cf                	mov    %edi,%ecx
40b27f:	e8 cc 92 ff ff       	call   0x404550
40b284:	84 c0                	test   %al,%al
40b286:	0f 84 f4 ad 06 00    	je     0x476080
40b28c:	68 00 04 00 00       	push   $0x400
40b291:	8d 4c 24 1c          	lea    0x1c(%esp),%ecx
40b295:	e8 75 b8 ff ff       	call   0x406b0f
40b29a:	8b 74 24 10          	mov    0x10(%esp),%esi
40b29e:	32 c0                	xor    %al,%al
40b2a0:	88 44 24 0f          	mov    %al,0xf(%esp)
40b2a4:	8b cf                	mov    %edi,%ecx
40b2a6:	85 f6                	test   %esi,%esi
40b2a8:	0f 84 28 ae 06 00    	je     0x4760d6
40b2ae:	e8 0b 93 ff ff       	call   0x4045be
40b2b3:	83 64 24 10 00       	andl   $0x0,0x10(%esp)
40b2b8:	85 f6                	test   %esi,%esi
40b2ba:	7e 29                	jle    0x40b2e5
40b2bc:	8d 44 24 18          	lea    0x18(%esp),%eax
40b2c0:	50                   	push   %eax
40b2c1:	8b cf                	mov    %edi,%ecx
40b2c3:	e8 e7 0c 00 00       	call   0x40bfaf
40b2c8:	84 c0                	test   %al,%al
40b2ca:	0f 84 e0 ad 06 00    	je     0x4760b0
40b2d0:	8b 44 24 10          	mov    0x10(%esp),%eax
40b2d4:	40                   	inc    %eax
40b2d5:	89 44 24 10          	mov    %eax,0x10(%esp)
40b2d9:	3b c6                	cmp    %esi,%eax
40b2db:	7c df                	jl     0x40b2bc
40b2dd:	8a 44 24 0f          	mov    0xf(%esp),%al
40b2e1:	84 c0                	test   %al,%al
40b2e3:	75 0d                	jne    0x40b2f2
40b2e5:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40b2e8:	8d 44 24 18          	lea    0x18(%esp),%eax
40b2ec:	50                   	push   %eax
40b2ed:	e8 76 b8 ff ff       	call   0x406b68
40b2f2:	8b 45 08             	mov    0x8(%ebp),%eax
40b2f5:	6a 04                	push   $0x4
40b2f7:	8b 48 04             	mov    0x4(%eax),%ecx
40b2fa:	8b 09                	mov    (%ecx),%ecx
40b2fc:	e8 e3 22 00 00       	call   0x40d5e4
40b301:	84 c0                	test   %al,%al
40b303:	74 17                	je     0x40b31c
40b305:	8b cf                	mov    %edi,%ecx
40b307:	e8 fb 95 ff ff       	call   0x404907
40b30c:	83 67 2c 00          	andl   $0x0,0x2c(%edi)
40b310:	83 67 30 00          	andl   $0x0,0x30(%edi)
40b314:	51                   	push   %ecx
40b315:	8b cf                	mov    %edi,%ecx
40b317:	e8 1f 92 ff ff       	call   0x40453b
40b31c:	8d 4c 24 18          	lea    0x18(%esp),%ecx
40b320:	e8 12 18 00 00       	call   0x40cb37
40b325:	5f                   	pop    %edi
40b326:	5e                   	pop    %esi
40b327:	33 c0                	xor    %eax,%eax
40b329:	5b                   	pop    %ebx
40b32a:	8b e5                	mov    %ebp,%esp
40b32c:	5d                   	pop    %ebp
40b32d:	c2 08 00             	ret    $0x8
40b330:	33 ff                	xor    %edi,%edi
40b332:	e9 2f ff ff ff       	jmp    0x40b266
40b337:	55                   	push   %ebp
40b338:	8b ec                	mov    %esp,%ebp
40b33a:	51                   	push   %ecx
40b33b:	53                   	push   %ebx
40b33c:	8b 5d 08             	mov    0x8(%ebp),%ebx
40b33f:	56                   	push   %esi
40b340:	8b f1                	mov    %ecx,%esi
40b342:	57                   	push   %edi
40b343:	33 c0                	xor    %eax,%eax
40b345:	8d 7e 18             	lea    0x18(%esi),%edi
40b348:	8b cf                	mov    %edi,%ecx
40b34a:	66 89 03             	mov    %ax,(%ebx)
40b34d:	e8 7c 09 00 00       	call   0x40bcce
40b352:	57                   	push   %edi
40b353:	8b ce                	mov    %esi,%ecx
40b355:	e8 55 0c 00 00       	call   0x40bfaf
40b35a:	84 c0                	test   %al,%al
40b35c:	74 22                	je     0x40b380
40b35e:	6a ff                	push   $0xffffffff
40b360:	68 fe 0f 00 00       	push   $0xffe
40b365:	8b cf                	mov    %edi,%ecx
40b367:	e8 1f fe ff ff       	call   0x40b18b
40b36c:	ff 37                	push   (%edi)
40b36e:	53                   	push   %ebx
40b36f:	e8 af 59 01 00       	call   0x420d23
40b374:	59                   	pop    %ecx
40b375:	59                   	pop    %ecx
40b376:	b0 01                	mov    $0x1,%al
40b378:	5f                   	pop    %edi
40b379:	5e                   	pop    %esi
40b37a:	5b                   	pop    %ebx
40b37b:	59                   	pop    %ecx
40b37c:	5d                   	pop    %ebp
40b37d:	c2 08 00             	ret    $0x8
40b380:	32 c0                	xor    %al,%al
40b382:	eb f4                	jmp    0x40b378
40b384:	55                   	push   %ebp
40b385:	8b ec                	mov    %esp,%ebp
40b387:	53                   	push   %ebx
40b388:	8b 5d 10             	mov    0x10(%ebp),%ebx
40b38b:	57                   	push   %edi
40b38c:	8b f9                	mov    %ecx,%edi
40b38e:	85 db                	test   %ebx,%ebx
40b390:	74 63                	je     0x40b3f5
40b392:	8b 55 08             	mov    0x8(%ebp),%edx
40b395:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40b398:	3b 4a 04             	cmp    0x4(%edx),%ecx
40b39b:	73 58                	jae    0x40b3f5
40b39d:	83 fb ff             	cmp    $0xffffffff,%ebx
40b3a0:	0f 85 01 6b 06 00    	jne    0x471ea7
40b3a6:	8b 5a 04             	mov    0x4(%edx),%ebx
40b3a9:	2b d9                	sub    %ecx,%ebx
40b3ab:	8b 4f 0c             	mov    0xc(%edi),%ecx
40b3ae:	56                   	push   %esi
40b3af:	8b 01                	mov    (%ecx),%eax
40b3b1:	33 f6                	xor    %esi,%esi
40b3b3:	46                   	inc    %esi
40b3b4:	3b c6                	cmp    %esi,%eax
40b3b6:	7f 45                	jg     0x40b3fd
40b3b8:	8b 47 04             	mov    0x4(%edi),%eax
40b3bb:	03 c3                	add    %ebx,%eax
40b3bd:	50                   	push   %eax
40b3be:	8b cf                	mov    %edi,%ecx