40e18e:	83 f8 01             	cmp    $0x1,%eax
40e191:	0f 85 07 9d 06 00    	jne    0x477e9e
40e197:	8b 0f                	mov    (%edi),%ecx
40e199:	8b 06                	mov    (%esi),%eax
40e19b:	8d 14 08             	lea    (%eax,%ecx,1),%edx
40e19e:	89 55 f4             	mov    %edx,-0xc(%ebp)
40e1a1:	99                   	cltd
40e1a2:	89 45 f8             	mov    %eax,-0x8(%ebp)
40e1a5:	8b c1                	mov    %ecx,%eax
40e1a7:	89 55 ec             	mov    %edx,-0x14(%ebp)
40e1aa:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40e1ad:	99                   	cltd
40e1ae:	01 45 f8             	add    %eax,-0x8(%ebp)
40e1b1:	8b 45 f4             	mov    -0xc(%ebp),%eax
40e1b4:	13 ca                	adc    %edx,%ecx
40e1b6:	99                   	cltd
40e1b7:	3b 45 f8             	cmp    -0x8(%ebp),%eax
40e1ba:	0f 85 ca 9c 06 00    	jne    0x477e8a
40e1c0:	3b d1                	cmp    %ecx,%edx
40e1c2:	0f 85 c2 9c 06 00    	jne    0x477e8a
40e1c8:	8b 45 f4             	mov    -0xc(%ebp),%eax
40e1cb:	89 07                	mov    %eax,(%edi)
40e1cd:	8b 55 fc             	mov    -0x4(%ebp),%edx
40e1d0:	8b 4f 08             	mov    0x8(%edi),%ecx
40e1d3:	85 c9                	test   %ecx,%ecx
40e1d5:	0f 85 e5 9c 06 00    	jne    0x477ec0
40e1db:	8b 4d e0             	mov    -0x20(%ebp),%ecx
40e1de:	85 c9                	test   %ecx,%ecx
40e1e0:	0f 85 ef 9c 06 00    	jne    0x477ed5
40e1e6:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40e1e9:	83 f8 05             	cmp    $0x5,%eax
40e1ec:	0f 8d f8 9c 06 00    	jge    0x477eea
40e1f2:	d9 ee                	fldz
40e1f4:	c7 45 e4 03 00 00 00 	movl   $0x3,-0x1c(%ebp)
40e1fb:	dd 55 d8             	fstl   -0x28(%ebp)
40e1fe:	8b 4e 0c             	mov    0xc(%esi),%ecx
40e201:	8b c1                	mov    %ecx,%eax
40e203:	c1 e0 06             	shl    $0x6,%eax
40e206:	8b 80 1c b8 4b 00    	mov    0x4bb81c(%eax),%eax
40e20c:	83 f8 03             	cmp    $0x3,%eax
40e20f:	0f 85 a2 9d 06 00    	jne    0x477fb7
40e215:	83 f9 01             	cmp    $0x1,%ecx
40e218:	0f 85 4b 9e 06 00    	jne    0x478069
40e21e:	db 06                	fildl  (%esi)
40e220:	de d9                	fcompp
40e222:	df e0                	fnstsw %ax
40e224:	f6 c4 05             	test   $0x5,%ah
40e227:	0f 8b 57 a1 06 00    	jnp    0x478384
40e22d:	8b 4b 1c             	mov    0x1c(%ebx),%ecx
40e230:	8b c1                	mov    %ecx,%eax
40e232:	c1 e0 04             	shl    $0x4,%eax
40e235:	03 47 0c             	add    0xc(%edi),%eax
40e238:	8b 04 85 10 b8 4b 00 	mov    0x4bb810(,%eax,4),%eax
40e23f:	83 f8 01             	cmp    $0x1,%eax
40e242:	0f 85 94 00 00 00    	jne    0x40e2dc
40e248:	83 f9 01             	cmp    $0x1,%ecx
40e24b:	0f 85 c3 9f 06 00    	jne    0x478214
40e251:	8b 43 10             	mov    0x10(%ebx),%eax
40e254:	89 45 f8             	mov    %eax,-0x8(%ebp)
40e257:	8b f0                	mov    %eax,%esi
40e259:	8b 47 0c             	mov    0xc(%edi),%eax
40e25c:	83 f8 01             	cmp    $0x1,%eax
40e25f:	0f 85 60 a0 06 00    	jne    0x4782c5
40e265:	8b 07                	mov    (%edi),%eax
40e267:	3b f0                	cmp    %eax,%esi
40e269:	7c 2c                	jl     0x40e297
40e26b:	8b 4b 04             	mov    0x4(%ebx),%ecx
40e26e:	8b 45 0c             	mov    0xc(%ebp),%eax
40e271:	41                   	inc    %ecx
40e272:	89 08                	mov    %ecx,(%eax)
40e274:	8b 4d e0             	mov    -0x20(%ebp),%ecx
40e277:	85 c9                	test   %ecx,%ecx
40e279:	0f 85 25 a1 06 00    	jne    0x4783a4
40e27f:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40e282:	83 f8 05             	cmp    $0x5,%eax
40e285:	0f 8d 2b a1 06 00    	jge    0x4783b6
40e28b:	5f                   	pop    %edi
40e28c:	5e                   	pop    %esi
40e28d:	5b                   	pop    %ebx
40e28e:	8b e5                	mov    %ebp,%esp
40e290:	5d                   	pop    %ebp
40e291:	c2 08 00             	ret    $0x8
40e294:	8b 55 fc             	mov    -0x4(%ebp),%edx
40e297:	80 7a 09 00          	cmpb   $0x0,0x9(%edx)
40e29b:	0f 85 c4 a0 06 00    	jne    0x478365
40e2a1:	80 7a 08 00          	cmpb   $0x0,0x8(%edx)
40e2a5:	0f 85 a4 00 00 00    	jne    0x40e34f
40e2ab:	8b 72 04             	mov    0x4(%edx),%esi
40e2ae:	8b 7e 30             	mov    0x30(%esi),%edi
40e2b1:	85 f6                	test   %esi,%esi
40e2b3:	74 1c                	je     0x40e2d1
40e2b5:	8d 4e 20             	lea    0x20(%esi),%ecx
40e2b8:	e8 63 49 00 00       	call   0x412c20
40e2bd:	8d 4e 10             	lea    0x10(%esi),%ecx
40e2c0:	e8 5b 49 00 00       	call   0x412c20
40e2c5:	56                   	push   %esi
40e2c6:	e8 93 12 01 00       	call   0x41f55e
40e2cb:	8b 55 fc             	mov    -0x4(%ebp),%edx
40e2ce:	83 c4 04             	add    $0x4,%esp
40e2d1:	ff 0a                	decl   (%edx)
40e2d3:	89 7a 04             	mov    %edi,0x4(%edx)
40e2d6:	c6 42 09 00          	movb   $0x0,0x9(%edx)
40e2da:	eb 98                	jmp    0x40e274
40e2dc:	83 e8 02             	sub    $0x2,%eax
40e2df:	83 f8 07             	cmp    $0x7,%eax
40e2e2:	77 23                	ja     0x40e307
40e2e4:	ff 24 85 5c e3 40 00 	jmp    *0x40e35c(,%eax,4)
40e2eb:	8d 4b 10             	lea    0x10(%ebx),%ecx
40e2ee:	e8 dd 49 00 00       	call   0x412cd0
40e2f3:	dd 5d e8             	fstpl  -0x18(%ebp)
40e2f6:	8b cf                	mov    %edi,%ecx
40e2f8:	e8 d3 49 00 00       	call   0x412cd0
40e2fd:	dc 5d e8             	fcompl -0x18(%ebp)
40e300:	df e0                	fnstsw %ax
40e302:	f6 c4 41             	test   $0x41,%ah
40e305:	74 8d                	je     0x40e294
40e307:	8b 4b 04             	mov    0x4(%ebx),%ecx
40e30a:	8b 45 0c             	mov    0xc(%ebp),%eax
40e30d:	41                   	inc    %ecx
40e30e:	89 08                	mov    %ecx,(%eax)
40e310:	e9 5f ff ff ff       	jmp    0x40e274
40e315:	83 e8 02             	sub    $0x2,%eax
40e318:	83 f8 09             	cmp    $0x9,%eax
40e31b:	0f 87 af fe ff ff    	ja     0x40e1d0
40e321:	ff 24 85 7c e3 40 00 	jmp    *0x40e37c(,%eax,4)
40e328:	8b ce                	mov    %esi,%ecx
40e32a:	e8 a1 49 00 00       	call   0x412cd0
40e32f:	dc 07                	faddl  (%edi)
40e331:	dd 1f                	fstpl  (%edi)
40e333:	e9 95 fe ff ff       	jmp    0x40e1cd
40e338:	8b cf                	mov    %edi,%ecx
40e33a:	e8 f3 ef 00 00       	call   0x41d332
40e33f:	8b ce                	mov    %esi,%ecx
40e341:	e8 8a 49 00 00       	call   0x412cd0
40e346:	dc 07                	faddl  (%edi)
40e348:	dd 1f                	fstpl  (%edi)
40e34a:	e9 7e fe ff ff       	jmp    0x40e1cd
40e34f:	ff 0a                	decl   (%edx)
40e351:	c6 42 09 01          	movb   $0x1,0x9(%edx)
40e355:	e9 1a ff ff ff       	jmp    0x40e274
40e35a:	8b ff                	mov    %edi,%edi
40e35c:	c6 81 47 00 eb e2 40 	movb   $0x40,-0x1d14ffb9(%ecx)
40e363:	00 9c 81 47 00 07 e3 	add    %bl,-0x1cf8ffb9(%ecx,%eax,4)
40e36a:	40                   	inc    %eax
40e36b:	00 07                	add    %al,(%edi)
40e36d:	e3 40                	jecxz  0x40e3af
40e36f:	00 f6                	add    %dh,%dh
40e371:	81 47 00 07 e3 40 00 	addl   $0x40e307,0x0(%edi)
40e378:	48                   	dec    %eax
40e379:	e2 40                	loop   0x40e3bb
40e37b:	00 b6 7d 47 00 28    	add    %dh,0x2800477d(%esi)
40e381:	e3 40                	jecxz  0x40e3c3
40e383:	00 38                	add    %bh,(%eax)
40e385:	e3 40                	jecxz  0x40e3c7
40e387:	00 d0                	add    %dl,%al
40e389:	e1 40                	loope  0x40e3cb
40e38b:	00 d0                	add    %dl,%al
40e38d:	e1 40                	loope  0x40e3cf
40e38f:	00 5b 7e             	add    %bl,0x7e(%ebx)
40e392:	47                   	inc    %edi
40e393:	00 d0                	add    %dl,%al
40e395:	e1 40                	loope  0x40e3d7
40e397:	00 38                	add    %bh,(%eax)
40e399:	e3 40                	jecxz  0x40e3db
40e39b:	00 38                	add    %bh,(%eax)
40e39d:	e3 40                	jecxz  0x40e3df
40e39f:	00 d8                	add    %bl,%al
40e3a1:	7d 47                	jge    0x40e3ea
40e3a3:	00 cc                	add    %cl,%ah
40e3a5:	cc                   	int3
40e3a6:	cc                   	int3
40e3a7:	cc                   	int3
40e3a8:	cc                   	int3
40e3a9:	cc                   	int3
40e3aa:	cc                   	int3
40e3ab:	cc                   	int3
40e3ac:	cc                   	int3
40e3ad:	cc                   	int3
40e3ae:	cc                   	int3
40e3af:	cc                   	int3
40e3b0:	55                   	push   %ebp
40e3b1:	8b ec                	mov    %esp,%ebp
40e3b3:	83 ec 54             	sub    $0x54,%esp
40e3b6:	53                   	push   %ebx
40e3b7:	56                   	push   %esi
40e3b8:	8b 75 08             	mov    0x8(%ebp),%esi
40e3bb:	57                   	push   %edi
40e3bc:	8b c1                	mov    %ecx,%eax
40e3be:	6a ff                	push   $0xffffffff
40e3c0:	8d 4d e0             	lea    -0x20(%ebp),%ecx
40e3c3:	51                   	push   %ecx
40e3c4:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40e3c7:	51                   	push   %ecx
40e3c8:	56                   	push   %esi
40e3c9:	8b c8                	mov    %eax,%ecx
40e3cb:	89 45 f8             	mov    %eax,-0x8(%ebp)
40e3ce:	c7 45 f4 01 00 00 00 	movl   $0x1,-0xc(%ebp)
40e3d5:	c7 45 e0 00 00 00 00 	movl   $0x0,-0x20(%ebp)
40e3dc:	c7 45 e8 00 00 00 00 	movl   $0x0,-0x18(%ebp)
40e3e3:	c7 45 ec 01 00 00 00 	movl   $0x1,-0x14(%ebp)
40e3ea:	e8 41 1a 00 00       	call   0x40fe30
40e3ef:	85 c0                	test   %eax,%eax
40e3f1:	0f 88 13 95 06 00    	js     0x47790a
40e3f7:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40e3fa:	8b 7d e8             	mov    -0x18(%ebp),%edi
40e3fd:	8b 55 e0             	mov    -0x20(%ebp),%edx
40e400:	83 f9 09             	cmp    $0x9,%ecx
40e403:	75 54                	jne    0x40e459
40e405:	84 d2                	test   %dl,%dl
40e407:	75 63                	jne    0x40e46c
40e409:	32 db                	xor    %bl,%bl
40e40b:	88 5d ff             	mov    %bl,-0x1(%ebp)
40e40e:	85 ff                	test   %edi,%edi
40e410:	0f 85 38 95 06 00    	jne    0x47794e
40e416:	83 f9 09             	cmp    $0x9,%ecx
40e419:	0f 85 e0 03 00 00    	jne    0x40e7ff
40e41f:	8b 56 04             	mov    0x4(%esi),%edx
40e422:	8b 7d f4             	mov    -0xc(%ebp),%edi
40e425:	8b 04 ba             	mov    (%edx,%edi,4),%eax
40e428:	66 83 78 08 00       	cmpw   $0x0,0x8(%eax)
40e42d:	0f 85 9f 97 06 00    	jne    0x477bd2
40e433:	83 38 05             	cmpl   $0x5,(%eax)
40e436:	0f 85 96 97 06 00    	jne    0x477bd2
40e43c:	8b 44 ba 04          	mov    0x4(%edx,%edi,4),%eax
40e440:	47                   	inc    %edi
40e441:	66 83 78 08 7f       	cmpw   $0x7f,0x8(%eax)
40e446:	0f 84 3b 02 00 00    	je     0x40e687
40e44c:	84 db                	test   %bl,%bl
40e44e:	75 20                	jne    0x40e470
40e450:	5f                   	pop    %edi
40e451:	5e                   	pop    %esi
40e452:	5b                   	pop    %ebx
40e453:	8b e5                	mov    %ebp,%esp
40e455:	5d                   	pop    %ebp
40e456:	c2 08 00             	ret    $0x8
40e459:	8d 41 ff             	lea    -0x1(%ecx),%eax
40e45c:	83 f8 0a             	cmp    $0xa,%eax
40e45f:	77 a8                	ja     0x40e409
40e461:	ff 24 85 a0 e8 40 00 	jmp    *0x40e8a0(,%eax,4)
40e468:	85 d2                	test   %edx,%edx
40e46a:	74 9d                	je     0x40e409
40e46c:	b3 01                	mov    $0x1,%bl
40e46e:	eb 9b                	jmp    0x40e40b
40e470:	33 c9                	xor    %ecx,%ecx
40e472:	33 f6                	xor    %esi,%esi
40e474:	c7 45 e0 b4 dd 49 00 	movl   $0x49ddb4,-0x20(%ebp)
40e47b:	c7 45 e4 00 00 00 00 	movl   $0x0,-0x1c(%ebp)
40e482:	89 4d e8             	mov    %ecx,-0x18(%ebp)
40e485:	89 75 ec             	mov    %esi,-0x14(%ebp)
40e488:	8b 1c ba             	mov    (%edx,%edi,4),%ebx
40e48b:	8d 7f 01             	lea    0x1(%edi),%edi
40e48e:	3b ce                	cmp    %esi,%ecx
40e490:	0f 84 a7 00 00 00    	je     0x40e53d
40e496:	6a 0c                	push   $0xc
40e498:	e8 4d 10 01 00       	call   0x41f4ea
40e49d:	8b f0                	mov    %eax,%esi
40e49f:	83 c4 04             	add    $0x4,%esp
40e4a2:	85 f6                	test   %esi,%esi
40e4a4:	0f 84 cf 03 00 00    	je     0x40e879
40e4aa:	0f b7 4b 08          	movzwl 0x8(%ebx),%ecx
40e4ae:	66 89 4e 08          	mov    %cx,0x8(%esi)
40e4b2:	0f b7 46 08          	movzwl 0x8(%esi),%eax
40e4b6:	0f b7 4b 0a          	movzwl 0xa(%ebx),%ecx
40e4ba:	66 89 4e 0a          	mov    %cx,0xa(%esi)
40e4be:	66 83 f8 3f          	cmp    $0x3f,%ax
40e4c2:	7e 41                	jle    0x40e505
40e4c4:	66 83 f8 10          	cmp    $0x10,%ax
40e4c8:	0f 84 3c 95 06 00    	je     0x477a0a
40e4ce:	66 83 f8 20          	cmp    $0x20,%ax
40e4d2:	0f 84 98 03 00 00    	je     0x40e870
40e4d8:	8b 03                	mov    (%ebx),%eax
40e4da:	89 06                	mov    %eax,(%esi)
40e4dc:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40e4df:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40e4e2:	8b 5d 08             	mov    0x8(%ebp),%ebx
40e4e5:	89 34 88             	mov    %esi,(%eax,%ecx,4)
40e4e8:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40e4eb:	8b 53 04             	mov    0x4(%ebx),%edx
40e4ee:	41                   	inc    %ecx
40e4ef:	89 4d e8             	mov    %ecx,-0x18(%ebp)
40e4f2:	8b 04 ba             	mov    (%edx,%edi,4),%eax
40e4f5:	66 83 78 08 7f       	cmpw   $0x7f,0x8(%eax)
40e4fa:	0f 84 97 00 00 00    	je     0x40e597
40e500:	8b 75 ec             	mov    -0x14(%ebp),%esi
40e503:	eb 83                	jmp    0x40e488
40e505:	66 83 f8 30          	cmp    $0x30,%ax
40e509:	7c b9                	jl     0x40e4c4
40e50b:	6a 10                	push   $0x10
40e50d:	e8 d8 0f 01 00       	call   0x41f4ea
40e512:	8b d0                	mov    %eax,%edx
40e514:	83 c4 04             	add    $0x4,%esp
40e517:	85 d2                	test   %edx,%edx
40e519:	0f 84 48 03 00 00    	je     0x40e867
40e51f:	8b 03                	mov    (%ebx),%eax
40e521:	8b 08                	mov    (%eax),%ecx
40e523:	89 0a                	mov    %ecx,(%edx)
40e525:	8b 48 04             	mov    0x4(%eax),%ecx
40e528:	89 4a 04             	mov    %ecx,0x4(%edx)
40e52b:	8b 48 08             	mov    0x8(%eax),%ecx
40e52e:	89 4a 08             	mov    %ecx,0x8(%edx)
40e531:	8b 40 0c             	mov    0xc(%eax),%eax
40e534:	89 42 0c             	mov    %eax,0xc(%edx)
40e537:	ff 00                	incl   (%eax)
40e539:	89 16                	mov    %edx,(%esi)
40e53b:	eb 9f                	jmp    0x40e4dc
40e53d:	8d 04 36             	lea    (%esi,%esi,1),%eax
40e540:	83 f8 08             	cmp    $0x8,%eax
40e543:	73 05                	jae    0x40e54a
40e545:	b8 08 00 00 00       	mov    $0x8,%eax
40e54a:	33 c9                	xor    %ecx,%ecx
40e54c:	89 45 ec             	mov    %eax,-0x14(%ebp)
40e54f:	ba 04 00 00 00       	mov    $0x4,%edx
40e554:	f7 e2                	mul    %edx
40e556:	0f 90 c1             	seto   %cl
40e559:	f7 d9                	neg    %ecx
40e55b:	0b c8                	or     %eax,%ecx
40e55d:	51                   	push   %ecx
40e55e:	e8 87 0f 01 00       	call   0x41f4ea
40e563:	8b f0                	mov    %eax,%esi
40e565:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40e568:	83 c4 04             	add    $0x4,%esp
40e56b:	85 c0                	test   %eax,%eax
40e56d:	74 20                	je     0x40e58f
40e56f:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40e572:	85 c9                	test   %ecx,%ecx
40e574:	74 19                	je     0x40e58f
40e576:	c1 e1 02             	shl    $0x2,%ecx
40e579:	51                   	push   %ecx
40e57a:	50                   	push   %eax
40e57b:	56                   	push   %esi
40e57c:	e8 ff 08 01 00       	call   0x41ee80
40e581:	83 c4 0c             	add    $0xc,%esp
40e584:	ff 75 e4             	push   -0x1c(%ebp)
40e587:	e8 d2 0f 01 00       	call   0x41f55e
40e58c:	83 c4 04             	add    $0x4,%esp
40e58f:	89 75 e4             	mov    %esi,-0x1c(%ebp)
40e592:	e9 ff fe ff ff       	jmp    0x40e496
40e597:	8b f8                	mov    %eax,%edi
40e599:	8b 45 ec             	mov    -0x14(%ebp),%eax
40e59c:	3b c8                	cmp    %eax,%ecx
40e59e:	0f 84 75 94 06 00    	je     0x477a19
40e5a4:	6a 0c                	push   $0xc
40e5a6:	e8 3f 0f 01 00       	call   0x41f4ea
40e5ab:	8b f0                	mov    %eax,%esi
40e5ad:	83 c4 04             	add    $0x4,%esp
40e5b0:	85 f6                	test   %esi,%esi
40e5b2:	0f 84 d1 02 00 00    	je     0x40e889
40e5b8:	0f b7 4f 08          	movzwl 0x8(%edi),%ecx
40e5bc:	66 89 4e 08          	mov    %cx,0x8(%esi)
40e5c0:	0f b7 46 08          	movzwl 0x8(%esi),%eax