40b1a1:	33 db                	xor    %ebx,%ebx
40b1a3:	33 ff                	xor    %edi,%edi
40b1a5:	89 7d e4             	mov    %edi,-0x1c(%ebp)
40b1a8:	6a 01                	push   $0x1
40b1aa:	e8 35 e7 ff ff       	call   0x4098e4
40b1af:	59                   	pop    %ecx
40b1b0:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40b1b3:	33 f6                	xor    %esi,%esi
40b1b5:	89 75 e0             	mov    %esi,-0x20(%ebp)
40b1b8:	3b 35 80 23 c7 00    	cmp    0xc72380,%esi
40b1be:	0f 8d cf 00 00 00    	jge    0x40b293
40b1c4:	a1 68 13 c7 00       	mov    0xc71368,%eax
40b1c9:	8d 04 b0             	lea    (%eax,%esi,4),%eax
40b1cc:	39 18                	cmp    %ebx,(%eax)
40b1ce:	74 5b                	je     0x40b22b
40b1d0:	8b 00                	mov    (%eax),%eax
40b1d2:	8b 40 0c             	mov    0xc(%eax),%eax
40b1d5:	a8 83                	test   $0x83,%al
40b1d7:	75 48                	jne    0x40b221
40b1d9:	a9 00 80 00 00       	test   $0x8000,%eax
40b1de:	75 41                	jne    0x40b221
40b1e0:	8d 46 fd             	lea    -0x3(%esi),%eax
40b1e3:	83 f8 10             	cmp    $0x10,%eax
40b1e6:	77 12                	ja     0x40b1fa
40b1e8:	8d 46 10             	lea    0x10(%esi),%eax
40b1eb:	50                   	push   %eax
40b1ec:	e8 30 e6 ff ff       	call   0x409821
40b1f1:	59                   	pop    %ecx
40b1f2:	85 c0                	test   %eax,%eax
40b1f4:	0f 84 99 00 00 00    	je     0x40b293
40b1fa:	a1 68 13 c7 00       	mov    0xc71368,%eax
40b1ff:	ff 34 b0             	push   (%eax,%esi,4)
40b202:	56                   	push   %esi
40b203:	e8 27 fc ff ff       	call   0x40ae2f
40b208:	59                   	pop    %ecx
40b209:	59                   	pop    %ecx
40b20a:	a1 68 13 c7 00       	mov    0xc71368,%eax
40b20f:	8b 04 b0             	mov    (%eax,%esi,4),%eax
40b212:	f6 40 0c 83          	testb  $0x83,0xc(%eax)
40b216:	74 0c                	je     0x40b224
40b218:	50                   	push   %eax
40b219:	56                   	push   %esi
40b21a:	e8 7e fc ff ff       	call   0x40ae9d
40b21f:	59                   	pop    %ecx
40b220:	59                   	pop    %ecx
40b221:	46                   	inc    %esi
40b222:	eb 91                	jmp    0x40b1b5
40b224:	8b f8                	mov    %eax,%edi
40b226:	89 7d e4             	mov    %edi,-0x1c(%ebp)
40b229:	eb 68                	jmp    0x40b293
40b22b:	c1 e6 02             	shl    $0x2,%esi
40b22e:	6a 38                	push   $0x38
40b230:	e8 2b c9 ff ff       	call   0x407b60
40b235:	59                   	pop    %ecx
40b236:	8b 0d 68 13 c7 00    	mov    0xc71368,%ecx
40b23c:	89 04 0e             	mov    %eax,(%esi,%ecx,1)
40b23f:	a1 68 13 c7 00       	mov    0xc71368,%eax
40b244:	03 c6                	add    %esi,%eax
40b246:	39 18                	cmp    %ebx,(%eax)
40b248:	74 49                	je     0x40b293
40b24a:	68 a0 0f 00 00       	push   $0xfa0
40b24f:	8b 00                	mov    (%eax),%eax
40b251:	83 c0 20             	add    $0x20,%eax
40b254:	50                   	push   %eax
40b255:	e8 02 7e 00 00       	call   0x41305c
40b25a:	59                   	pop    %ecx
40b25b:	59                   	pop    %ecx
40b25c:	85 c0                	test   %eax,%eax
40b25e:	a1 68 13 c7 00       	mov    0xc71368,%eax
40b263:	75 13                	jne    0x40b278
40b265:	ff 34 06             	push   (%esi,%eax,1)
40b268:	e8 b3 9d ff ff       	call   0x405020
40b26d:	59                   	pop    %ecx
40b26e:	a1 68 13 c7 00       	mov    0xc71368,%eax
40b273:	89 1c 06             	mov    %ebx,(%esi,%eax,1)
40b276:	eb 1b                	jmp    0x40b293
40b278:	8b 04 06             	mov    (%esi,%eax,1),%eax
40b27b:	83 c0 20             	add    $0x20,%eax
40b27e:	50                   	push   %eax
40b27f:	ff 15 90 a0 41 00    	call   *0x41a090
40b285:	a1 68 13 c7 00       	mov    0xc71368,%eax
40b28a:	8b 3c 06             	mov    (%esi,%eax,1),%edi
40b28d:	89 7d e4             	mov    %edi,-0x1c(%ebp)
40b290:	89 5f 0c             	mov    %ebx,0xc(%edi)
40b293:	3b fb                	cmp    %ebx,%edi
40b295:	74 16                	je     0x40b2ad
40b297:	81 67 0c 00 80 00 00 	andl   $0x8000,0xc(%edi)
40b29e:	89 5f 04             	mov    %ebx,0x4(%edi)
40b2a1:	89 5f 08             	mov    %ebx,0x8(%edi)
40b2a4:	89 1f                	mov    %ebx,(%edi)
40b2a6:	89 5f 1c             	mov    %ebx,0x1c(%edi)
40b2a9:	83 4f 10 ff          	orl    $0xffffffff,0x10(%edi)
40b2ad:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40b2b4:	e8 0b 00 00 00       	call   0x40b2c4
40b2b9:	8b c7                	mov    %edi,%eax
40b2bb:	e8 61 f1 ff ff       	call   0x40a421
40b2c0:	c3                   	ret
40b2c1:	8b 7d e4             	mov    -0x1c(%ebp),%edi
40b2c4:	6a 01                	push   $0x1
40b2c6:	e8 3f e5 ff ff       	call   0x40980a
40b2cb:	59                   	pop    %ecx
40b2cc:	c3                   	ret
40b2cd:	cc                   	int3
40b2ce:	cc                   	int3
40b2cf:	cc                   	int3
40b2d0:	53                   	push   %ebx
40b2d1:	56                   	push   %esi
40b2d2:	57                   	push   %edi
40b2d3:	8b 54 24 10          	mov    0x10(%esp),%edx
40b2d7:	8b 44 24 14          	mov    0x14(%esp),%eax
40b2db:	8b 4c 24 18          	mov    0x18(%esp),%ecx
40b2df:	55                   	push   %ebp
40b2e0:	52                   	push   %edx
40b2e1:	50                   	push   %eax
40b2e2:	51                   	push   %ecx
40b2e3:	51                   	push   %ecx
40b2e4:	68 60 b3 40 00       	push   $0x40b360
40b2e9:	64 ff 35 00 00 00 00 	push   %fs:0x0
40b2f0:	a1 68 b2 42 00       	mov    0x42b268,%eax
40b2f5:	33 c4                	xor    %esp,%eax
40b2f7:	89 44 24 08          	mov    %eax,0x8(%esp)
40b2fb:	64 89 25 00 00 00 00 	mov    %esp,%fs:0x0
40b302:	8b 44 24 30          	mov    0x30(%esp),%eax
40b306:	8b 58 08             	mov    0x8(%eax),%ebx
40b309:	8b 4c 24 2c          	mov    0x2c(%esp),%ecx
40b30d:	33 19                	xor    (%ecx),%ebx
40b30f:	8b 70 0c             	mov    0xc(%eax),%esi
40b312:	83 fe fe             	cmp    $0xfffffffe,%esi
40b315:	74 3b                	je     0x40b352
40b317:	8b 54 24 34          	mov    0x34(%esp),%edx
40b31b:	83 fa fe             	cmp    $0xfffffffe,%edx
40b31e:	74 04                	je     0x40b324
40b320:	3b f2                	cmp    %edx,%esi
40b322:	76 2e                	jbe    0x40b352
40b324:	8d 34 76             	lea    (%esi,%esi,2),%esi
40b327:	8d 5c b3 10          	lea    0x10(%ebx,%esi,4),%ebx
40b32b:	8b 0b                	mov    (%ebx),%ecx
40b32d:	89 48 0c             	mov    %ecx,0xc(%eax)
40b330:	83 7b 04 00          	cmpl   $0x0,0x4(%ebx)
40b334:	75 cc                	jne    0x40b302
40b336:	68 01 01 00 00       	push   $0x101
40b33b:	8b 43 08             	mov    0x8(%ebx),%eax
40b33e:	e8 3a 8d 00 00       	call   0x41407d
40b343:	b9 01 00 00 00       	mov    $0x1,%ecx
40b348:	8b 43 08             	mov    0x8(%ebx),%eax
40b34b:	e8 4c 8d 00 00       	call   0x41409c
40b350:	eb b0                	jmp    0x40b302
40b352:	64 8f 05 00 00 00 00 	pop    %fs:0x0
40b359:	83 c4 18             	add    $0x18,%esp
40b35c:	5f                   	pop    %edi
40b35d:	5e                   	pop    %esi
40b35e:	5b                   	pop    %ebx
40b35f:	c3                   	ret
40b360:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40b364:	f7 41 04 06 00 00 00 	testl  $0x6,0x4(%ecx)
40b36b:	b8 01 00 00 00       	mov    $0x1,%eax
40b370:	74 33                	je     0x40b3a5
40b372:	8b 44 24 08          	mov    0x8(%esp),%eax
40b376:	8b 48 08             	mov    0x8(%eax),%ecx
40b379:	33 c8                	xor    %eax,%ecx
40b37b:	e8 a6 b2 ff ff       	call   0x406626
40b380:	55                   	push   %ebp
40b381:	8b 68 18             	mov    0x18(%eax),%ebp
40b384:	ff 70 0c             	push   0xc(%eax)
40b387:	ff 70 10             	push   0x10(%eax)
40b38a:	ff 70 14             	push   0x14(%eax)
40b38d:	e8 3e ff ff ff       	call   0x40b2d0
40b392:	83 c4 0c             	add    $0xc,%esp
40b395:	5d                   	pop    %ebp
40b396:	8b 44 24 08          	mov    0x8(%esp),%eax
40b39a:	8b 54 24 10          	mov    0x10(%esp),%edx
40b39e:	89 02                	mov    %eax,(%edx)
40b3a0:	b8 03 00 00 00       	mov    $0x3,%eax
40b3a5:	c3                   	ret
40b3a6:	55                   	push   %ebp
40b3a7:	8b 4c 24 08          	mov    0x8(%esp),%ecx
40b3ab:	8b 29                	mov    (%ecx),%ebp
40b3ad:	ff 71 1c             	push   0x1c(%ecx)
40b3b0:	ff 71 18             	push   0x18(%ecx)
40b3b3:	ff 71 28             	push   0x28(%ecx)
40b3b6:	e8 15 ff ff ff       	call   0x40b2d0
40b3bb:	83 c4 0c             	add    $0xc,%esp
40b3be:	5d                   	pop    %ebp
40b3bf:	c2 04 00             	ret    $0x4
40b3c2:	55                   	push   %ebp
40b3c3:	56                   	push   %esi
40b3c4:	57                   	push   %edi
40b3c5:	53                   	push   %ebx
40b3c6:	8b ea                	mov    %edx,%ebp
40b3c8:	33 c0                	xor    %eax,%eax
40b3ca:	33 db                	xor    %ebx,%ebx
40b3cc:	33 d2                	xor    %edx,%edx
40b3ce:	33 f6                	xor    %esi,%esi
40b3d0:	33 ff                	xor    %edi,%edi
40b3d2:	ff d1                	call   *%ecx
40b3d4:	5b                   	pop    %ebx
40b3d5:	5f                   	pop    %edi
40b3d6:	5e                   	pop    %esi
40b3d7:	5d                   	pop    %ebp
40b3d8:	c3                   	ret
40b3d9:	8b ea                	mov    %edx,%ebp
40b3db:	8b f1                	mov    %ecx,%esi
40b3dd:	8b c1                	mov    %ecx,%eax
40b3df:	6a 01                	push   $0x1
40b3e1:	e8 97 8c 00 00       	call   0x41407d
40b3e6:	33 c0                	xor    %eax,%eax
40b3e8:	33 db                	xor    %ebx,%ebx
40b3ea:	33 c9                	xor    %ecx,%ecx
40b3ec:	33 d2                	xor    %edx,%edx
40b3ee:	33 ff                	xor    %edi,%edi
40b3f0:	ff e6                	jmp    *%esi
40b3f2:	55                   	push   %ebp
40b3f3:	8b ec                	mov    %esp,%ebp
40b3f5:	53                   	push   %ebx
40b3f6:	56                   	push   %esi
40b3f7:	57                   	push   %edi
40b3f8:	6a 00                	push   $0x0
40b3fa:	6a 00                	push   $0x0
40b3fc:	68 07 b4 40 00       	push   $0x40b407
40b401:	51                   	push   %ecx
40b402:	e8 87 e2 00 00       	call   0x41968e
40b407:	5f                   	pop    %edi
40b408:	5e                   	pop    %esi
40b409:	5b                   	pop    %ebx
40b40a:	5d                   	pop    %ebp
40b40b:	c3                   	ret
40b40c:	55                   	push   %ebp
40b40d:	8b 6c 24 08          	mov    0x8(%esp),%ebp
40b411:	52                   	push   %edx
40b412:	51                   	push   %ecx
40b413:	ff 74 24 14          	push   0x14(%esp)
40b417:	e8 b4 fe ff ff       	call   0x40b2d0
40b41c:	83 c4 0c             	add    $0xc,%esp
40b41f:	5d                   	pop    %ebp
40b420:	c2 08 00             	ret    $0x8
40b423:	83 25 60 13 c7 00 00 	andl   $0x0,0xc71360
40b42a:	e8 c0 8c 00 00       	call   0x4140ef
40b42f:	a3 60 13 c7 00       	mov    %eax,0xc71360
40b434:	33 c0                	xor    %eax,%eax
40b436:	c3                   	ret
40b437:	cc                   	int3
40b438:	cc                   	int3
40b439:	cc                   	int3
40b43a:	cc                   	int3
40b43b:	cc                   	int3
40b43c:	cc                   	int3
40b43d:	cc                   	int3
40b43e:	cc                   	int3
40b43f:	cc                   	int3
40b440:	55                   	push   %ebp
40b441:	8b ec                	mov    %esp,%ebp
40b443:	83 ec 08             	sub    $0x8,%esp
40b446:	83 e4 f0             	and    $0xfffffff0,%esp
40b449:	dd 1c 24             	fstpl  (%esp)
40b44c:	f3 0f 7e 04 24       	movq   (%esp),%xmm0
40b451:	e8 08 00 00 00       	call   0x40b45e
40b456:	c9                   	leave
40b457:	c3                   	ret
40b458:	66 0f 12 44 24 04    	movlpd 0x4(%esp),%xmm0
40b45e:	66 0f 12 25 d0 c4 41 	movlpd 0x41c4d0,%xmm4
40b465:	00
40b466:	66 0f 12 1d e0 c4 41 	movlpd 0x41c4e0,%xmm3
40b46d:	00
40b46e:	66 0f 57 ed          	xorpd  %xmm5,%xmm5
40b472:	66 0f 12 15 d8 c4 41 	movlpd 0x41c4d8,%xmm2
40b479:	00
40b47a:	f2 0f 10 c8          	movsd  %xmm0,%xmm1
40b47e:	66 0f 73 d0 2c       	psrlq  $0x2c,%xmm0
40b483:	66 0f 7e c2          	movd   %xmm0,%edx
40b487:	f2 0f 10 f9          	movsd  %xmm1,%xmm7
40b48b:	b9 00 20 00 00       	mov    $0x2000,%ecx
40b490:	66 0f c4 e9 02       	pinsrw $0x2,%ecx,%xmm5
40b495:	f2 0f 10 c1          	movsd  %xmm1,%xmm0
40b499:	b8 ff ff 07 00       	mov    $0x7ffff,%eax
40b49e:	23 c2                	and    %edx,%eax
40b4a0:	2d 00 fb 03 00       	sub    $0x3fb00,%eax
40b4a5:	3d bb 03 00 00       	cmp    $0x3bb,%eax
40b4aa:	0f 83 d6 00 00 00    	jae    0x40b586
40b4b0:	f2 0f 59 c9          	mulsd  %xmm1,%xmm1
40b4b4:	81 e2 ff ff 00 00    	and    $0xffff,%edx
40b4ba:	f2 0f 5c d9          	subsd  %xmm1,%xmm3
40b4be:	f2 0f 51 db          	sqrtsd %xmm3,%xmm3
40b4c2:	66 0f 54 d7          	andpd  %xmm7,%xmm2
40b4c6:	83 e2 fc             	and    $0xfffffffc,%edx
40b4c9:	81 ea 00 fb 00 00    	sub    $0xfb00,%edx
40b4cf:	66 0f 12 0c 55 10 bc 	movlpd 0x41bc10(,%edx,2),%xmm1
40b4d6:	41 00
40b4d8:	66 0f 56 d5          	orpd   %xmm5,%xmm2
40b4dc:	66 0f 28 24 95 10 ad 	movapd 0x41ad10(,%edx,4),%xmm4
40b4e3:	41 00
40b4e5:	f2 0f 10 f7          	movsd  %xmm7,%xmm6
40b4e9:	f2 0f 58 fa          	addsd  %xmm2,%xmm7
40b4ed:	f2 0f 5c c2          	subsd  %xmm2,%xmm0
40b4f1:	f2 0f 59 f8          	mulsd  %xmm0,%xmm7
40b4f5:	f2 0f 59 f1          	mulsd  %xmm1,%xmm6
40b4f9:	f2 0f 59 da          	mulsd  %xmm2,%xmm3
40b4fd:	f2 0f 10 ce          	movsd  %xmm6,%xmm1
40b501:	f2 0f 58 f3          	addsd  %xmm3,%xmm6
40b505:	f2 0f 5e fe          	divsd  %xmm6,%xmm7
40b509:	66 0f 12 05 88 c4 41 	movlpd 0x41c488,%xmm0
40b510:	00
40b511:	66 0f 12 2d 78 c4 41 	movlpd 0x41c478,%xmm5
40b518:	00
40b519:	f2 0f 5c cb          	subsd  %xmm3,%xmm1
40b51d:	66 0f 73 d2 3f       	psrlq  $0x3f,%xmm2
40b522:	f2 0f 10 d9          	movsd  %xmm1,%xmm3
40b526:	66 0f 73 f2 3f       	psllq  $0x3f,%xmm2
40b52b:	f2 0f 59 c9          	mulsd  %xmm1,%xmm1
40b52f:	66 0f 70 d2 44       	pshufd $0x44,%xmm2,%xmm2
40b534:	66 0f 12 35 80 c4 41 	movlpd 0x41c480,%xmm6
40b53b:	00
40b53c:	f2 0f 59 d9          	mulsd  %xmm1,%xmm3
40b540:	f2 0f 59 c1          	mulsd  %xmm1,%xmm0
40b544:	83 ec 10             	sub    $0x10,%esp
40b547:	66 0f 57 e2          	xorpd  %xmm2,%xmm4
40b54b:	f2 0f 59 eb          	mulsd  %xmm3,%xmm5
40b54f:	66 0f 5c 25 10 c4 41 	subpd  0x41c410,%xmm4
40b556:	00
40b557:	f2 0f 59 d9          	mulsd  %xmm1,%xmm3
40b55b:	f2 0f 58 c6          	addsd  %xmm6,%xmm0
40b55f:	f2 0f 59 c3          	mulsd  %xmm3,%xmm0
40b563:	f2 0f 5c ec          	subsd  %xmm4,%xmm5
40b567:	66 0f 70 e4 ee       	pshufd $0xee,%xmm4,%xmm4
40b56c:	f2 0f 58 c5          	addsd  %xmm5,%xmm0
40b570:	f2 0f 5c c7          	subsd  %xmm7,%xmm0
40b574:	f2 0f 5c c4          	subsd  %xmm4,%xmm0
40b578:	66 0f 13 44 24 04    	movlpd %xmm0,0x4(%esp)
40b57e:	dd 44 24 04          	fldl   0x4(%esp)
40b582:	83 c4 10             	add    $0x10,%esp
40b585:	c3                   	ret
40b586:	2d bb 03 00 00       	sub    $0x3bb,%eax
40b58b:	83 f8 41             	cmp    $0x41,%eax
40b58e:	0f 83 2d 01 00 00    	jae    0x40b6c1
40b594:	66 0f 73 d7 26       	psrlq  $0x26,%xmm7
40b599:	66 0f 73 f7 26       	psllq  $0x26,%xmm7
40b59e:	66 0f d7 c0          	pmovmskb %xmm0,%eax
40b5a2:	66 0f 55 e0          	andnpd %xmm0,%xmm4
40b5a6:	f2 0f 5c cf          	subsd  %xmm7,%xmm1
40b5aa:	f2 0f 10 f7          	movsd  %xmm7,%xmm6
40b5ae:	f2 0f 59 ff          	mulsd  %xmm7,%xmm7
40b5b2:	f2 0f 58 c6          	addsd  %xmm6,%xmm0
40b5b6:	66 0f 56 ec          	orpd   %xmm4,%xmm5
40b5ba:	f2 0f 5c df          	subsd  %xmm7,%xmm3
40b5be:	f2 0f 59 c1          	mulsd  %xmm1,%xmm0
40b5c2:	f2 0f 10 e3          	movsd  %xmm3,%xmm4
40b5c6:	f2 0f 5c d8          	subsd  %xmm0,%xmm3
40b5ca:	f2 0f 51 db          	sqrtsd %xmm3,%xmm3
40b5ce:	25 80 00 00 00       	and    $0x80,%eax
40b5d3:	c1 e8 07             	shr    $0x7,%eax
40b5d6:	f7 d8                	neg    %eax