45555b:	51                   	push   %ecx
45555c:	dd 1c 24             	fstpl  (%esp)
45555f:	e8 1c ef fc ff       	call   0x424480
455564:	8b 75 0c             	mov    0xc(%ebp),%esi
455567:	dd 5d f8             	fstpl  -0x8(%ebp)
45556a:	83 c4 08             	add    $0x8,%esp
45556d:	8b ce                	mov    %esi,%ecx
45556f:	e8 ac d6 fb ff       	call   0x412c20
455574:	dd 45 f8             	fldl   -0x8(%ebp)
455577:	dd 1e                	fstpl  (%esi)
455579:	c7 46 0c 03 00 00 00 	movl   $0x3,0xc(%esi)
455580:	33 c0                	xor    %eax,%eax
455582:	5e                   	pop    %esi
455583:	c9                   	leave
455584:	c2 08 00             	ret    $0x8
455587:	55                   	push   %ebp
455588:	8b ec                	mov    %esp,%ebp
45558a:	8b 45 08             	mov    0x8(%ebp),%eax
45558d:	53                   	push   %ebx
45558e:	8b 40 04             	mov    0x4(%eax),%eax
455591:	56                   	push   %esi
455592:	8b 30                	mov    (%eax),%esi
455594:	57                   	push   %edi
455595:	8b ce                	mov    %esi,%ecx
455597:	e8 d0 3d fb ff       	call   0x40936c
45559c:	8b 46 08             	mov    0x8(%esi),%eax
45559f:	83 ca ff             	or     $0xffffffff,%edx
4555a2:	8b 00                	mov    (%eax),%eax
4555a4:	8d 4d 08             	lea    0x8(%ebp),%ecx
4555a7:	66 8b 00             	mov    (%eax),%ax
4555aa:	66 89 45 08          	mov    %ax,0x8(%ebp)
4555ae:	33 c0                	xor    %eax,%eax
4555b0:	66 89 45 0a          	mov    %ax,0xa(%ebp)
4555b4:	e8 7c 2a ff ff       	call   0x448035
4555b9:	8b 75 0c             	mov    0xc(%ebp),%esi
4555bc:	8b d8                	mov    %eax,%ebx
4555be:	8b ce                	mov    %esi,%ecx
4555c0:	0f b6 3b             	movzbl (%ebx),%edi
4555c3:	e8 58 d6 fb ff       	call   0x412c20
4555c8:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
4555cf:	53                   	push   %ebx
4555d0:	89 3e                	mov    %edi,(%esi)
4555d2:	e8 87 9f fc ff       	call   0x41f55e
4555d7:	59                   	pop    %ecx
4555d8:	5f                   	pop    %edi
4555d9:	5e                   	pop    %esi
4555da:	33 c0                	xor    %eax,%eax
4555dc:	5b                   	pop    %ebx
4555dd:	5d                   	pop    %ebp
4555de:	c2 08 00             	ret    $0x8
4555e1:	55                   	push   %ebp
4555e2:	8b ec                	mov    %esp,%ebp
4555e4:	8b 45 08             	mov    0x8(%ebp),%eax
4555e7:	56                   	push   %esi
4555e8:	8b 40 04             	mov    0x4(%eax),%eax
4555eb:	57                   	push   %edi
4555ec:	8b 30                	mov    (%eax),%esi
4555ee:	8b ce                	mov    %esi,%ecx
4555f0:	e8 77 3d fb ff       	call   0x40936c
4555f5:	8b 46 08             	mov    0x8(%esi),%eax
4555f8:	8b 75 0c             	mov    0xc(%ebp),%esi
4555fb:	8b 00                	mov    (%eax),%eax
4555fd:	8b ce                	mov    %esi,%ecx
4555ff:	0f b7 38             	movzwl (%eax),%edi
455602:	e8 19 d6 fb ff       	call   0x412c20
455607:	89 3e                	mov    %edi,(%esi)
455609:	5f                   	pop    %edi
45560a:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
455611:	33 c0                	xor    %eax,%eax
455613:	5e                   	pop    %esi
455614:	5d                   	pop    %ebp
455615:	c2 08 00             	ret    $0x8
455618:	55                   	push   %ebp
455619:	8b ec                	mov    %esp,%ebp
45561b:	8b 45 08             	mov    0x8(%ebp),%eax
45561e:	8b 4d 0c             	mov    0xc(%ebp),%ecx
455621:	8b 40 04             	mov    0x4(%eax),%eax
455624:	ff 30                	push   (%eax)
455626:	e8 83 86 fb ff       	call   0x40dcae
45562b:	8b 4d 0c             	mov    0xc(%ebp),%ecx
45562e:	e8 a2 4e ff ff       	call   0x44a4d5
455633:	33 c0                	xor    %eax,%eax
455635:	5d                   	pop    %ebp
455636:	c2 08 00             	ret    $0x8
455639:	55                   	push   %ebp
45563a:	8b ec                	mov    %esp,%ebp
45563c:	53                   	push   %ebx
45563d:	8b 5d 08             	mov    0x8(%ebp),%ebx
455640:	56                   	push   %esi
455641:	8b 43 08             	mov    0x8(%ebx),%eax
455644:	89 45 08             	mov    %eax,0x8(%ebp)
455647:	8b 43 04             	mov    0x4(%ebx),%eax
45564a:	57                   	push   %edi
45564b:	8b 08                	mov    (%eax),%ecx
45564d:	e8 34 7c fb ff       	call   0x40d286
455652:	33 f6                	xor    %esi,%esi
455654:	46                   	inc    %esi
455655:	8b f8                	mov    %eax,%edi
455657:	39 75 08             	cmp    %esi,0x8(%ebp)
45565a:	76 13                	jbe    0x45566f
45565c:	8b 4b 04             	mov    0x4(%ebx),%ecx
45565f:	8b 0c b1             	mov    (%ecx,%esi,4),%ecx
455662:	e8 1f 7c fb ff       	call   0x40d286
455667:	23 f8                	and    %eax,%edi
455669:	46                   	inc    %esi
45566a:	3b 75 08             	cmp    0x8(%ebp),%esi
45566d:	72 ed                	jb     0x45565c
45566f:	8b 75 0c             	mov    0xc(%ebp),%esi
455672:	8b ce                	mov    %esi,%ecx
455674:	e8 a7 d5 fb ff       	call   0x412c20
455679:	89 3e                	mov    %edi,(%esi)
45567b:	5f                   	pop    %edi
45567c:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
455683:	5e                   	pop    %esi
455684:	33 c0                	xor    %eax,%eax
455686:	5b                   	pop    %ebx
455687:	5d                   	pop    %ebp
455688:	c2 08 00             	ret    $0x8
45568b:	55                   	push   %ebp
45568c:	8b ec                	mov    %esp,%ebp
45568e:	8b 45 08             	mov    0x8(%ebp),%eax
455691:	56                   	push   %esi
455692:	8b 40 04             	mov    0x4(%eax),%eax
455695:	57                   	push   %edi
455696:	8b 08                	mov    (%eax),%ecx
455698:	e8 e9 7b fb ff       	call   0x40d286
45569d:	8b 75 0c             	mov    0xc(%ebp),%esi
4556a0:	8b f8                	mov    %eax,%edi
4556a2:	8b ce                	mov    %esi,%ecx
4556a4:	f7 d7                	not    %edi
4556a6:	e8 75 d5 fb ff       	call   0x412c20
4556ab:	89 3e                	mov    %edi,(%esi)
4556ad:	5f                   	pop    %edi
4556ae:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
4556b5:	33 c0                	xor    %eax,%eax
4556b7:	5e                   	pop    %esi
4556b8:	5d                   	pop    %ebp
4556b9:	c2 08 00             	ret    $0x8
4556bc:	55                   	push   %ebp
4556bd:	8b ec                	mov    %esp,%ebp
4556bf:	53                   	push   %ebx
4556c0:	8b 5d 08             	mov    0x8(%ebp),%ebx
4556c3:	56                   	push   %esi
4556c4:	8b 43 08             	mov    0x8(%ebx),%eax
4556c7:	89 45 08             	mov    %eax,0x8(%ebp)
4556ca:	8b 43 04             	mov    0x4(%ebx),%eax
4556cd:	57                   	push   %edi
4556ce:	8b 08                	mov    (%eax),%ecx
4556d0:	e8 b1 7b fb ff       	call   0x40d286
4556d5:	33 f6                	xor    %esi,%esi
4556d7:	46                   	inc    %esi
4556d8:	8b f8                	mov    %eax,%edi
4556da:	39 75 08             	cmp    %esi,0x8(%ebp)
4556dd:	76 13                	jbe    0x4556f2
4556df:	8b 4b 04             	mov    0x4(%ebx),%ecx
4556e2:	8b 0c b1             	mov    (%ecx,%esi,4),%ecx
4556e5:	e8 9c 7b fb ff       	call   0x40d286
4556ea:	0b f8                	or     %eax,%edi
4556ec:	46                   	inc    %esi
4556ed:	3b 75 08             	cmp    0x8(%ebp),%esi
4556f0:	72 ed                	jb     0x4556df
4556f2:	8b 75 0c             	mov    0xc(%ebp),%esi
4556f5:	8b ce                	mov    %esi,%ecx
4556f7:	e8 24 d5 fb ff       	call   0x412c20
4556fc:	89 3e                	mov    %edi,(%esi)
4556fe:	5f                   	pop    %edi
4556ff:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
455706:	5e                   	pop    %esi
455707:	33 c0                	xor    %eax,%eax
455709:	5b                   	pop    %ebx
45570a:	5d                   	pop    %ebp
45570b:	c2 08 00             	ret    $0x8
45570e:	55                   	push   %ebp
45570f:	8b ec                	mov    %esp,%ebp
455711:	83 ec 0c             	sub    $0xc,%esp
455714:	8b 55 08             	mov    0x8(%ebp),%edx
455717:	53                   	push   %ebx
455718:	56                   	push   %esi
455719:	57                   	push   %edi
45571a:	33 f6                	xor    %esi,%esi
45571c:	46                   	inc    %esi
45571d:	6a 10                	push   $0x10
45571f:	33 db                	xor    %ebx,%ebx
455721:	83 7a 08 03          	cmpl   $0x3,0x8(%edx)
455725:	89 4d f4             	mov    %ecx,-0xc(%ebp)
455728:	5f                   	pop    %edi
455729:	89 75 fc             	mov    %esi,-0x4(%ebp)
45572c:	0f 82 94 00 00 00    	jb     0x4557c6
455732:	8b 42 04             	mov    0x4(%edx),%eax
455735:	8b 48 08             	mov    0x8(%eax),%ecx
455738:	89 4d f8             	mov    %ecx,-0x8(%ebp)
45573b:	83 79 0c 0a          	cmpl   $0xa,0xc(%ecx)
45573f:	75 0a                	jne    0x45574b
455741:	e8 07 5e ff ff       	call   0x44b54d
455746:	83 f8 29             	cmp    $0x29,%eax
455749:	74 7b                	je     0x4557c6
45574b:	e8 1c 3c fb ff       	call   0x40936c
455750:	8b 4d f8             	mov    -0x8(%ebp),%ecx
455753:	8b 41 08             	mov    0x8(%ecx),%eax
455756:	39 18                	cmp    %ebx,(%eax)
455758:	74 69                	je     0x4557c3
45575a:	8b 45 08             	mov    0x8(%ebp),%eax
45575d:	8b 40 04             	mov    0x4(%eax),%eax
455760:	8b 70 08             	mov    0x8(%eax),%esi
455763:	8b ce                	mov    %esi,%ecx
455765:	e8 02 3c fb ff       	call   0x40936c
45576a:	8b 46 08             	mov    0x8(%esi),%eax
45576d:	8b 00                	mov    (%eax),%eax
45576f:	0f b7 00             	movzwl (%eax),%eax
455772:	83 e8 42             	sub    $0x42,%eax
455775:	74 46                	je     0x4557bd
455777:	48                   	dec    %eax
455778:	48                   	dec    %eax
455779:	74 3e                	je     0x4557b9
45577b:	83 e8 13             	sub    $0x13,%eax
45577e:	74 40                	je     0x4557c0
455780:	83 e8 0b             	sub    $0xb,%eax
455783:	74 38                	je     0x4557bd
455785:	48                   	dec    %eax
455786:	48                   	dec    %eax
455787:	74 30                	je     0x4557b9
455789:	83 e8 13             	sub    $0x13,%eax
45578c:	74 32                	je     0x4557c0
45578e:	8b 75 0c             	mov    0xc(%ebp),%esi
455791:	8b ce                	mov    %esi,%ecx
455793:	e8 88 d4 fb ff       	call   0x412c20
455798:	8b 55 f4             	mov    -0xc(%ebp),%edx
45579b:	33 c0                	xor    %eax,%eax
45579d:	40                   	inc    %eax
45579e:	53                   	push   %ebx
45579f:	89 46 0c             	mov    %eax,0xc(%esi)
4557a2:	89 1e                	mov    %ebx,(%esi)
4557a4:	50                   	push   %eax
4557a5:	8b 02                	mov    (%edx),%eax
4557a7:	8b 48 04             	mov    0x4(%eax),%ecx
4557aa:	03 ca                	add    %edx,%ecx
4557ac:	e8 9b 77 ff ff       	call   0x44cf4c
4557b1:	83 c8 ff             	or     $0xffffffff,%eax
4557b4:	e9 dd 00 00 00       	jmp    0x455896
4557b9:	6a 20                	push   $0x20
4557bb:	eb 02                	jmp    0x4557bf
4557bd:	6a 08                	push   $0x8
4557bf:	5f                   	pop    %edi
4557c0:	8b 75 fc             	mov    -0x4(%ebp),%esi
4557c3:	8b 55 08             	mov    0x8(%ebp),%edx
4557c6:	83 7a 08 02          	cmpl   $0x2,0x8(%edx)
4557ca:	72 13                	jb     0x4557df
4557cc:	8b 75 08             	mov    0x8(%ebp),%esi
4557cf:	8b 46 04             	mov    0x4(%esi),%eax
4557d2:	8b 48 04             	mov    0x4(%eax),%ecx
4557d5:	e8 ac 7a fb ff       	call   0x40d286
4557da:	8b 55 08             	mov    0x8(%ebp),%edx
4557dd:	8b f0                	mov    %eax,%esi
4557df:	8b 4a 04             	mov    0x4(%edx),%ecx
4557e2:	8b 09                	mov    (%ecx),%ecx
4557e4:	e8 9d 7a fb ff       	call   0x40d286
4557e9:	89 45 fc             	mov    %eax,-0x4(%ebp)
4557ec:	83 ff 20             	cmp    $0x20,%edi
4557ef:	7d 07                	jge    0x4557f8
4557f1:	83 cb ff             	or     $0xffffffff,%ebx
4557f4:	8b cf                	mov    %edi,%ecx
4557f6:	d3 e3                	shl    %cl,%ebx
4557f8:	23 d8                	and    %eax,%ebx
4557fa:	89 5d 08             	mov    %ebx,0x8(%ebp)
4557fd:	85 f6                	test   %esi,%esi
4557ff:	79 08                	jns    0x455809
455801:	03 f7                	add    %edi,%esi
455803:	78 fc                	js     0x455801
455805:	eb 02                	jmp    0x455809
455807:	2b f7                	sub    %edi,%esi
455809:	3b f7                	cmp    %edi,%esi
45580b:	7d fa                	jge    0x455807
45580d:	85 f6                	test   %esi,%esi
45580f:	75 0f                	jne    0x455820
455811:	8b 75 0c             	mov    0xc(%ebp),%esi
455814:	8b ce                	mov    %esi,%ecx
455816:	e8 05 d4 fb ff       	call   0x412c20
45581b:	8b 45 fc             	mov    -0x4(%ebp),%eax
45581e:	eb 6b                	jmp    0x45588b
455820:	33 db                	xor    %ebx,%ebx
455822:	8b cf                	mov    %edi,%ecx
455824:	2b ce                	sub    %esi,%ecx
455826:	43                   	inc    %ebx
455827:	d3 e3                	shl    %cl,%ebx
455829:	89 4d f4             	mov    %ecx,-0xc(%ebp)
45582c:	8b ce                	mov    %esi,%ecx
45582e:	4b                   	dec    %ebx
45582f:	83 ff 20             	cmp    $0x20,%edi
455832:	7d 15                	jge    0x455849
455834:	8b d3                	mov    %ebx,%edx
455836:	23 d0                	and    %eax,%edx
455838:	33 c0                	xor    %eax,%eax
45583a:	d3 e2                	shl    %cl,%edx
45583c:	40                   	inc    %eax
45583d:	8b cf                	mov    %edi,%ecx
45583f:	d3 e0                	shl    %cl,%eax
455841:	48                   	dec    %eax
455842:	23 d0                	and    %eax,%edx
455844:	09 55 08             	or     %edx,0x8(%ebp)
455847:	eb 0a                	jmp    0x455853
455849:	8b c3                	mov    %ebx,%eax
45584b:	23 45 fc             	and    -0x4(%ebp),%eax
45584e:	d3 e0                	shl    %cl,%eax
455850:	09 45 08             	or     %eax,0x8(%ebp)
455853:	83 ff 20             	cmp    $0x20,%edi
455856:	7d 0e                	jge    0x455866
455858:	33 c0                	xor    %eax,%eax
45585a:	40                   	inc    %eax
45585b:	8b cf                	mov    %edi,%ecx
45585d:	d3 e0                	shl    %cl,%eax
45585f:	2b c3                	sub    %ebx,%eax
455861:	8d 58 ff             	lea    -0x1(%eax),%ebx
455864:	eb 02                	jmp    0x455868
455866:	f7 d3                	not    %ebx
455868:	8b 75 0c             	mov    0xc(%ebp),%esi
45586b:	8b ce                	mov    %esi,%ecx
45586d:	e8 ae d3 fb ff       	call   0x412c20
455872:	8b 55 f4             	mov    -0xc(%ebp),%edx
455875:	23 5d fc             	and    -0x4(%ebp),%ebx
455878:	8d 4a ff             	lea    -0x1(%edx),%ecx
45587b:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
455880:	d3 f8                	sar    %cl,%eax
455882:	8b ca                	mov    %edx,%ecx
455884:	d3 fb                	sar    %cl,%ebx
455886:	23 c3                	and    %ebx,%eax
455888:	0b 45 08             	or     0x8(%ebp),%eax
45588b:	89 06                	mov    %eax,(%esi)
45588d:	33 c0                	xor    %eax,%eax
45588f:	c7 46 0c 01 00 00 00 	movl   $0x1,0xc(%esi)
455896:	5f                   	pop    %edi
455897:	5e                   	pop    %esi
455898:	5b                   	pop    %ebx
455899:	c9                   	leave
45589a:	c2 08 00             	ret    $0x8
45589d:	55                   	push   %ebp
45589e:	8b ec                	mov    %esp,%ebp
4558a0:	56                   	push   %esi
4558a1:	8b 75 08             	mov    0x8(%ebp),%esi
4558a4:	57                   	push   %edi
4558a5:	8b 46 04             	mov    0x4(%esi),%eax
4558a8:	8b 48 04             	mov    0x4(%eax),%ecx
4558ab:	e8 d6 79 fb ff       	call   0x40d286
4558b0:	8b 4e 04             	mov    0x4(%esi),%ecx
4558b3:	8b 39                	mov    (%ecx),%edi
4558b5:	8b 49 04             	mov    0x4(%ecx),%ecx
4558b8:	85 c0                	test   %eax,%eax
4558ba:	78 16                	js     0x4558d2
4558bc:	e8 c5 79 fb ff       	call   0x40d286
4558c1:	8b cf                	mov    %edi,%ecx
4558c3:	8b f0                	mov    %eax,%esi