401389:	5e                   	pop    %esi
40138a:	5b                   	pop    %ebx
40138b:	5d                   	pop    %ebp
40138c:	c2 04 00             	ret    $0x4
40138f:	56                   	push   %esi
401390:	8b f1                	mov    %ecx,%esi
401392:	8b 4e 08             	mov    0x8(%esi),%ecx
401395:	e8 93 46 00 00       	call   0x405a2d
40139a:	83 66 08 00          	andl   $0x0,0x8(%esi)
40139e:	8b 4e 04             	mov    0x4(%esi),%ecx
4013a1:	e8 87 46 00 00       	call   0x405a2d
4013a6:	83 66 04 00          	andl   $0x0,0x4(%esi)
4013aa:	8b 0e                	mov    (%esi),%ecx
4013ac:	e8 7c 46 00 00       	call   0x405a2d
4013b1:	83 26 00             	andl   $0x0,(%esi)
4013b4:	5e                   	pop    %esi
4013b5:	c3                   	ret
4013b6:	56                   	push   %esi
4013b7:	8b f1                	mov    %ecx,%esi
4013b9:	8b 4e 08             	mov    0x8(%esi),%ecx
4013bc:	e8 6c 46 00 00       	call   0x405a2d
4013c1:	83 66 08 00          	andl   $0x0,0x8(%esi)
4013c5:	8b 4e 04             	mov    0x4(%esi),%ecx
4013c8:	e8 60 46 00 00       	call   0x405a2d
4013cd:	83 66 04 00          	andl   $0x0,0x4(%esi)
4013d1:	5e                   	pop    %esi
4013d2:	c3                   	ret
4013d3:	55                   	push   %ebp
4013d4:	8b ec                	mov    %esp,%ebp
4013d6:	83 ec 10             	sub    $0x10,%esp
4013d9:	53                   	push   %ebx
4013da:	56                   	push   %esi
4013db:	57                   	push   %edi
4013dc:	8b f9                	mov    %ecx,%edi
4013de:	8b 77 08             	mov    0x8(%edi),%esi
4013e1:	3b 77 04             	cmp    0x4(%edi),%esi
4013e4:	0f 82 b1 00 00 00    	jb     0x40149b
4013ea:	46                   	inc    %esi
4013eb:	33 db                	xor    %ebx,%ebx
4013ed:	0f af 77 0c          	imul   0xc(%edi),%esi
4013f1:	6a 10                	push   $0x10
4013f3:	59                   	pop    %ecx
4013f4:	8b c6                	mov    %esi,%eax
4013f6:	89 75 f0             	mov    %esi,-0x10(%ebp)
4013f9:	f7 e1                	mul    %ecx
4013fb:	0f 90 c3             	seto   %bl
4013fe:	33 c9                	xor    %ecx,%ecx
401400:	f7 db                	neg    %ebx
401402:	0b d8                	or     %eax,%ebx
401404:	83 c3 04             	add    $0x4,%ebx
401407:	0f 92 c1             	setb   %cl
40140a:	f7 d9                	neg    %ecx
40140c:	0b cb                	or     %ebx,%ecx
40140e:	e8 c8 46 00 00       	call   0x405adb
401413:	85 c0                	test   %eax,%eax
401415:	74 1e                	je     0x401435
401417:	8d 58 04             	lea    0x4(%eax),%ebx
40141a:	89 30                	mov    %esi,(%eax)
40141c:	33 c0                	xor    %eax,%eax
40141e:	89 5d f8             	mov    %ebx,-0x8(%ebp)
401421:	8b ce                	mov    %esi,%ecx
401423:	8b d3                	mov    %ebx,%edx
401425:	85 f6                	test   %esi,%esi
401427:	74 13                	je     0x40143c
401429:	89 02                	mov    %eax,(%edx)
40142b:	8d 52 10             	lea    0x10(%edx),%edx
40142e:	83 e9 01             	sub    $0x1,%ecx
401431:	75 f6                	jne    0x401429
401433:	eb 07                	jmp    0x40143c
401435:	33 c0                	xor    %eax,%eax
401437:	8b d8                	mov    %eax,%ebx
401439:	89 45 f8             	mov    %eax,-0x8(%ebp)
40143c:	39 47 08             	cmp    %eax,0x8(%edi)
40143f:	76 47                	jbe    0x401488
401441:	6a f8                	push   $0xfffffff8
401443:	58                   	pop    %eax
401444:	8d 4b 08             	lea    0x8(%ebx),%ecx
401447:	2b c3                	sub    %ebx,%eax
401449:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40144c:	33 db                	xor    %ebx,%ebx
40144e:	89 45 f4             	mov    %eax,-0xc(%ebp)
401451:	8d 34 08             	lea    (%eax,%ecx,1),%esi
401454:	83 c1 f8             	add    $0xfffffff8,%ecx
401457:	03 37                	add    (%edi),%esi
401459:	56                   	push   %esi
40145a:	e8 05 1e 00 00       	call   0x403264
40145f:	8b 4d fc             	mov    -0x4(%ebp),%ecx
401462:	43                   	inc    %ebx
401463:	8b 46 04             	mov    0x4(%esi),%eax
401466:	89 41 fc             	mov    %eax,-0x4(%ecx)
401469:	8b 46 08             	mov    0x8(%esi),%eax
40146c:	89 01                	mov    %eax,(%ecx)
40146e:	8b 46 0c             	mov    0xc(%esi),%eax
401471:	89 41 04             	mov    %eax,0x4(%ecx)
401474:	83 c1 10             	add    $0x10,%ecx
401477:	8b 45 f4             	mov    -0xc(%ebp),%eax
40147a:	89 4d fc             	mov    %ecx,-0x4(%ebp)
40147d:	3b 5f 08             	cmp    0x8(%edi),%ebx
401480:	72 cf                	jb     0x401451
401482:	8b 5d f8             	mov    -0x8(%ebp),%ebx
401485:	8b 75 f0             	mov    -0x10(%ebp),%esi
401488:	8b 0f                	mov    (%edi),%ecx
40148a:	85 c9                	test   %ecx,%ecx
40148c:	74 06                	je     0x401494
40148e:	51                   	push   %ecx
40148f:	e8 b4 05 00 00       	call   0x401a48
401494:	89 1f                	mov    %ebx,(%edi)
401496:	89 77 04             	mov    %esi,0x4(%edi)
401499:	eb 02                	jmp    0x40149d
40149b:	8b 1f                	mov    (%edi),%ebx
40149d:	8b 77 08             	mov    0x8(%edi),%esi
4014a0:	8d 45 08             	lea    0x8(%ebp),%eax
4014a3:	c1 e6 04             	shl    $0x4,%esi
4014a6:	03 f3                	add    %ebx,%esi
4014a8:	50                   	push   %eax
4014a9:	8b ce                	mov    %esi,%ecx
4014ab:	e8 b4 1d 00 00       	call   0x403264
4014b0:	8b 45 0c             	mov    0xc(%ebp),%eax
4014b3:	89 46 04             	mov    %eax,0x4(%esi)
4014b6:	8b 45 10             	mov    0x10(%ebp),%eax
4014b9:	89 46 08             	mov    %eax,0x8(%esi)
4014bc:	8b 45 14             	mov    0x14(%ebp),%eax
4014bf:	89 46 0c             	mov    %eax,0xc(%esi)
4014c2:	8b 4d 08             	mov    0x8(%ebp),%ecx
4014c5:	ff 47 08             	incl   0x8(%edi)
4014c8:	e8 60 45 00 00       	call   0x405a2d
4014cd:	5f                   	pop    %edi
4014ce:	5e                   	pop    %esi
4014cf:	5b                   	pop    %ebx
4014d0:	c9                   	leave
4014d1:	c2 10 00             	ret    $0x10
4014d4:	53                   	push   %ebx
4014d5:	56                   	push   %esi
4014d6:	57                   	push   %edi
4014d7:	8b f9                	mov    %ecx,%edi
4014d9:	33 db                	xor    %ebx,%ebx
4014db:	6a 10                	push   $0x10
4014dd:	59                   	pop    %ecx
4014de:	8b 77 04             	mov    0x4(%edi),%esi
4014e1:	8b c6                	mov    %esi,%eax
4014e3:	f7 e1                	mul    %ecx
4014e5:	0f 90 c3             	seto   %bl
4014e8:	33 c9                	xor    %ecx,%ecx
4014ea:	f7 db                	neg    %ebx
4014ec:	0b d8                	or     %eax,%ebx
4014ee:	83 c3 04             	add    $0x4,%ebx
4014f1:	0f 92 c1             	setb   %cl
4014f4:	f7 d9                	neg    %ecx
4014f6:	0b cb                	or     %ebx,%ecx
4014f8:	e8 de 45 00 00       	call   0x405adb
4014fd:	85 c0                	test   %eax,%eax
4014ff:	74 18                	je     0x401519
401501:	89 30                	mov    %esi,(%eax)
401503:	83 c0 04             	add    $0x4,%eax
401506:	8b c8                	mov    %eax,%ecx
401508:	85 f6                	test   %esi,%esi
40150a:	74 0f                	je     0x40151b
40150c:	83 21 00             	andl   $0x0,(%ecx)
40150f:	8d 49 10             	lea    0x10(%ecx),%ecx
401512:	83 ee 01             	sub    $0x1,%esi
401515:	75 f5                	jne    0x40150c
401517:	eb 02                	jmp    0x40151b
401519:	33 c0                	xor    %eax,%eax
40151b:	89 07                	mov    %eax,(%edi)
40151d:	5f                   	pop    %edi
40151e:	5e                   	pop    %esi
40151f:	5b                   	pop    %ebx
401520:	c3                   	ret
401521:	55                   	push   %ebp
401522:	8b ec                	mov    %esp,%ebp
401524:	56                   	push   %esi
401525:	8b f1                	mov    %ecx,%esi
401527:	57                   	push   %edi
401528:	8b 7d 0c             	mov    0xc(%ebp),%edi
40152b:	3b 7e 08             	cmp    0x8(%esi),%edi
40152e:	0f 92 c1             	setb   %cl
401531:	e8 f5 42 00 00       	call   0x40582b
401536:	c1 e7 04             	shl    $0x4,%edi
401539:	03 3e                	add    (%esi),%edi
40153b:	8b 75 08             	mov    0x8(%ebp),%esi
40153e:	8b ce                	mov    %esi,%ecx
401540:	57                   	push   %edi
401541:	e8 14 1f 00 00       	call   0x40345a
401546:	8b 4f 04             	mov    0x4(%edi),%ecx
401549:	8b c6                	mov    %esi,%eax
40154b:	89 4e 04             	mov    %ecx,0x4(%esi)
40154e:	8b 4f 08             	mov    0x8(%edi),%ecx
401551:	89 4e 08             	mov    %ecx,0x8(%esi)
401554:	8b 4f 0c             	mov    0xc(%edi),%ecx
401557:	5f                   	pop    %edi
401558:	89 4e 0c             	mov    %ecx,0xc(%esi)
40155b:	5e                   	pop    %esi
40155c:	5d                   	pop    %ebp
40155d:	c2 08 00             	ret    $0x8
401560:	55                   	push   %ebp
401561:	8b ec                	mov    %esp,%ebp
401563:	83 ec 10             	sub    $0x10,%esp
401566:	53                   	push   %ebx
401567:	56                   	push   %esi
401568:	57                   	push   %edi
401569:	8b f9                	mov    %ecx,%edi
40156b:	8b 77 08             	mov    0x8(%edi),%esi
40156e:	3b 77 04             	cmp    0x4(%edi),%esi
401571:	0f 82 d2 00 00 00    	jb     0x401649
401577:	46                   	inc    %esi
401578:	33 db                	xor    %ebx,%ebx
40157a:	0f af 77 0c          	imul   0xc(%edi),%esi
40157e:	6a 0c                	push   $0xc
401580:	59                   	pop    %ecx
401581:	8b c6                	mov    %esi,%eax
401583:	89 75 f0             	mov    %esi,-0x10(%ebp)
401586:	f7 e1                	mul    %ecx
401588:	0f 90 c3             	seto   %bl
40158b:	33 c9                	xor    %ecx,%ecx
40158d:	f7 db                	neg    %ebx
40158f:	0b d8                	or     %eax,%ebx
401591:	83 c3 04             	add    $0x4,%ebx
401594:	0f 92 c1             	setb   %cl
401597:	f7 d9                	neg    %ecx
401599:	0b cb                	or     %ebx,%ecx
40159b:	e8 3b 45 00 00       	call   0x405adb
4015a0:	85 c0                	test   %eax,%eax
4015a2:	74 22                	je     0x4015c6
4015a4:	8d 58 04             	lea    0x4(%eax),%ebx
4015a7:	89 30                	mov    %esi,(%eax)
4015a9:	33 c0                	xor    %eax,%eax
4015ab:	89 5d f8             	mov    %ebx,-0x8(%ebp)
4015ae:	8b d6                	mov    %esi,%edx
4015b0:	85 f6                	test   %esi,%esi
4015b2:	74 19                	je     0x4015cd
4015b4:	8d 4b 08             	lea    0x8(%ebx),%ecx
4015b7:	89 41 fc             	mov    %eax,-0x4(%ecx)
4015ba:	89 01                	mov    %eax,(%ecx)
4015bc:	8d 49 0c             	lea    0xc(%ecx),%ecx
4015bf:	83 ea 01             	sub    $0x1,%edx
4015c2:	75 f3                	jne    0x4015b7
4015c4:	eb 07                	jmp    0x4015cd
4015c6:	33 c0                	xor    %eax,%eax
4015c8:	8b d8                	mov    %eax,%ebx
4015ca:	89 45 f8             	mov    %eax,-0x8(%ebp)
4015cd:	39 47 08             	cmp    %eax,0x8(%edi)
4015d0:	76 47                	jbe    0x401619
4015d2:	6a f8                	push   $0xfffffff8
4015d4:	58                   	pop    %eax
4015d5:	8d 4b 08             	lea    0x8(%ebx),%ecx
4015d8:	2b c3                	sub    %ebx,%eax
4015da:	89 4d fc             	mov    %ecx,-0x4(%ebp)
4015dd:	33 db                	xor    %ebx,%ebx
4015df:	89 45 f4             	mov    %eax,-0xc(%ebp)
4015e2:	8d 34 08             	lea    (%eax,%ecx,1),%esi
4015e5:	03 37                	add    (%edi),%esi
4015e7:	8b 06                	mov    (%esi),%eax
4015e9:	89 41 f8             	mov    %eax,-0x8(%ecx)
4015ec:	8d 46 04             	lea    0x4(%esi),%eax
4015ef:	50                   	push   %eax
4015f0:	83 c1 fc             	add    $0xfffffffc,%ecx
4015f3:	e8 6c 1c 00 00       	call   0x403264
4015f8:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4015fb:	8d 46 08             	lea    0x8(%esi),%eax
4015fe:	50                   	push   %eax
4015ff:	e8 60 1c 00 00       	call   0x403264
401604:	8b 4d fc             	mov    -0x4(%ebp),%ecx
401607:	43                   	inc    %ebx
401608:	8b 45 f4             	mov    -0xc(%ebp),%eax
40160b:	83 c1 0c             	add    $0xc,%ecx
40160e:	89 4d fc             	mov    %ecx,-0x4(%ebp)
401611:	3b 5f 08             	cmp    0x8(%edi),%ebx
401614:	72 cc                	jb     0x4015e2
401616:	8b 5d f8             	mov    -0x8(%ebp),%ebx
401619:	8b 0f                	mov    (%edi),%ecx
40161b:	85 c9                	test   %ecx,%ecx
40161d:	74 20                	je     0x40163f
40161f:	8b 71 fc             	mov    -0x4(%ecx),%esi
401622:	6b c6 0c             	imul   $0xc,%esi,%eax
401625:	03 c1                	add    %ecx,%eax
401627:	85 f6                	test   %esi,%esi
401629:	74 14                	je     0x40163f
40162b:	8b d8                	mov    %eax,%ebx
40162d:	83 eb 0c             	sub    $0xc,%ebx
401630:	8b cb                	mov    %ebx,%ecx
401632:	e8 7f fd ff ff       	call   0x4013b6
401637:	83 ee 01             	sub    $0x1,%esi
40163a:	75 f1                	jne    0x40162d
40163c:	8b 5d f8             	mov    -0x8(%ebp),%ebx
40163f:	8b 45 f0             	mov    -0x10(%ebp),%eax
401642:	89 1f                	mov    %ebx,(%edi)
401644:	89 47 04             	mov    %eax,0x4(%edi)
401647:	eb 02                	jmp    0x40164b
401649:	8b 1f                	mov    (%edi),%ebx
40164b:	6b 77 08 0c          	imul   $0xc,0x8(%edi),%esi
40164f:	8b 45 08             	mov    0x8(%ebp),%eax
401652:	89 04 1e             	mov    %eax,(%esi,%ebx,1)
401655:	8d 4e 04             	lea    0x4(%esi),%ecx
401658:	8d 45 0c             	lea    0xc(%ebp),%eax
40165b:	03 cb                	add    %ebx,%ecx
40165d:	50                   	push   %eax
40165e:	e8 01 1c 00 00       	call   0x403264
401663:	8d 45 10             	lea    0x10(%ebp),%eax
401666:	8d 4e 08             	lea    0x8(%esi),%ecx
401669:	50                   	push   %eax
40166a:	03 cb                	add    %ebx,%ecx
40166c:	e8 f3 1b 00 00       	call   0x403264
401671:	ff 47 08             	incl   0x8(%edi)
401674:	8d 4d 08             	lea    0x8(%ebp),%ecx
401677:	e8 3a fd ff ff       	call   0x4013b6
40167c:	5f                   	pop    %edi
40167d:	5e                   	pop    %esi
40167e:	5b                   	pop    %ebx
40167f:	c9                   	leave
401680:	c2 0c 00             	ret    $0xc
401683:	53                   	push   %ebx
401684:	56                   	push   %esi
401685:	57                   	push   %edi
401686:	8b f9                	mov    %ecx,%edi
401688:	33 db                	xor    %ebx,%ebx
40168a:	6a 0c                	push   $0xc
40168c:	59                   	pop    %ecx
40168d:	8b 77 04             	mov    0x4(%edi),%esi
401690:	8b c6                	mov    %esi,%eax
401692:	f7 e1                	mul    %ecx
401694:	0f 90 c3             	seto   %bl
401697:	33 c9                	xor    %ecx,%ecx
401699:	f7 db                	neg    %ebx
40169b:	0b d8                	or     %eax,%ebx
40169d:	83 c3 04             	add    $0x4,%ebx
4016a0:	0f 92 c1             	setb   %cl
4016a3:	f7 d9                	neg    %ecx
4016a5:	0b cb                	or     %ebx,%ecx
4016a7:	e8 2f 44 00 00       	call   0x405adb
4016ac:	85 c0                	test   %eax,%eax
4016ae:	74 1d                	je     0x4016cd
4016b0:	89 30                	mov    %esi,(%eax)
4016b2:	8d 48 04             	lea    0x4(%eax),%ecx
4016b5:	85 f6                	test   %esi,%esi
4016b7:	74 16                	je     0x4016cf
4016b9:	8d 41 08             	lea    0x8(%ecx),%eax
4016bc:	83 60 fc 00          	andl   $0x0,-0x4(%eax)
4016c0:	83 20 00             	andl   $0x0,(%eax)
4016c3:	8d 40 0c             	lea    0xc(%eax),%eax
4016c6:	83 ee 01             	sub    $0x1,%esi
4016c9:	75 f1                	jne    0x4016bc
4016cb:	eb 02                	jmp    0x4016cf
4016cd:	33 c9                	xor    %ecx,%ecx
4016cf:	89 0f                	mov    %ecx,(%edi)
4016d1:	5f                   	pop    %edi
4016d2:	5e                   	pop    %esi
4016d3:	5b                   	pop    %ebx
4016d4:	c3                   	ret
4016d5:	55                   	push   %ebp
4016d6:	8b ec                	mov    %esp,%ebp