4553c0:	74 1f                	je     0x4553e1
4553c2:	8b 41 08             	mov    0x8(%ecx),%eax
4553c5:	51                   	push   %ecx
4553c6:	89 46 04             	mov    %eax,0x4(%esi)
4553c9:	e8 90 ee ff ff       	call   0x45425e
4553ce:	8b 46 04             	mov    0x4(%esi),%eax
4553d1:	85 c0                	test   %eax,%eax
4553d3:	74 06                	je     0x4553db
4553d5:	83 60 04 00          	andl   $0x0,0x4(%eax)
4553d9:	eb 03                	jmp    0x4553de
4553db:	83 26 00             	andl   $0x0,(%esi)
4553de:	ff 4e 08             	decl   0x8(%esi)
4553e1:	5e                   	pop    %esi
4553e2:	c3                   	ret
4553e3:	55                   	push   %ebp
4553e4:	8b ec                	mov    %esp,%ebp
4553e6:	56                   	push   %esi
4553e7:	57                   	push   %edi
4553e8:	8b f1                	mov    %ecx,%esi
4553ea:	33 ff                	xor    %edi,%edi
4553ec:	6a 0c                	push   $0xc
4553ee:	39 7e 04             	cmp    %edi,0x4(%esi)
4553f1:	75 1a                	jne    0x45540d
4553f3:	e8 f2 a0 fc ff       	call   0x41f4ea
4553f8:	59                   	pop    %ecx
4553f9:	85 c0                	test   %eax,%eax
4553fb:	74 0c                	je     0x455409
4553fd:	ff 75 08             	push   0x8(%ebp)
455400:	8b c8                	mov    %eax,%ecx
455402:	e8 88 ec ff ff       	call   0x45408f
455407:	8b f8                	mov    %eax,%edi
455409:	89 3e                	mov    %edi,(%esi)
45540b:	eb 22                	jmp    0x45542f
45540d:	e8 d8 a0 fc ff       	call   0x41f4ea
455412:	59                   	pop    %ecx
455413:	85 c0                	test   %eax,%eax
455415:	74 0c                	je     0x455423
455417:	ff 75 08             	push   0x8(%ebp)
45541a:	8b c8                	mov    %eax,%ecx
45541c:	e8 6e ec ff ff       	call   0x45408f
455421:	8b f8                	mov    %eax,%edi
455423:	8b 46 04             	mov    0x4(%esi),%eax
455426:	89 47 08             	mov    %eax,0x8(%edi)
455429:	8b 46 04             	mov    0x4(%esi),%eax
45542c:	89 78 04             	mov    %edi,0x4(%eax)
45542f:	ff 46 08             	incl   0x8(%esi)
455432:	89 7e 04             	mov    %edi,0x4(%esi)
455435:	5f                   	pop    %edi
455436:	5e                   	pop    %esi
455437:	5d                   	pop    %ebp
455438:	c2 04 00             	ret    $0x4
45543b:	55                   	push   %ebp
45543c:	8b ec                	mov    %esp,%ebp
45543e:	56                   	push   %esi
45543f:	8b f1                	mov    %ecx,%esi
455441:	57                   	push   %edi
455442:	8b 46 0c             	mov    0xc(%esi),%eax
455445:	39 46 08             	cmp    %eax,0x8(%esi)
455448:	75 4c                	jne    0x455496
45544a:	03 c0                	add    %eax,%eax
45544c:	83 f8 08             	cmp    $0x8,%eax
45544f:	73 03                	jae    0x455454
455451:	6a 08                	push   $0x8
455453:	58                   	pop    %eax
455454:	33 c9                	xor    %ecx,%ecx
455456:	6a 04                	push   $0x4
455458:	5a                   	pop    %edx
455459:	89 46 0c             	mov    %eax,0xc(%esi)
45545c:	f7 e2                	mul    %edx
45545e:	0f 90 c1             	seto   %cl
455461:	f7 d9                	neg    %ecx
455463:	0b c8                	or     %eax,%ecx
455465:	51                   	push   %ecx
455466:	e8 7f a0 fc ff       	call   0x41f4ea
45546b:	83 7e 04 00          	cmpl   $0x0,0x4(%esi)
45546f:	59                   	pop    %ecx
455470:	8b f8                	mov    %eax,%edi
455472:	74 1f                	je     0x455493
455474:	8b 46 08             	mov    0x8(%esi),%eax
455477:	85 c0                	test   %eax,%eax
455479:	74 18                	je     0x455493
45547b:	c1 e0 02             	shl    $0x2,%eax
45547e:	50                   	push   %eax
45547f:	ff 76 04             	push   0x4(%esi)
455482:	57                   	push   %edi
455483:	e8 f8 99 fc ff       	call   0x41ee80
455488:	ff 76 04             	push   0x4(%esi)
45548b:	e8 ce a0 fc ff       	call   0x41f55e
455490:	83 c4 10             	add    $0x10,%esp
455493:	89 7e 04             	mov    %edi,0x4(%esi)
455496:	6a 08                	push   $0x8
455498:	e8 4d a0 fc ff       	call   0x41f4ea
45549d:	8b f8                	mov    %eax,%edi
45549f:	59                   	pop    %ecx
4554a0:	85 ff                	test   %edi,%edi
4554a2:	74 0f                	je     0x4554b3
4554a4:	8b 55 08             	mov    0x8(%ebp),%edx
4554a7:	8b 0a                	mov    (%edx),%ecx
4554a9:	89 0f                	mov    %ecx,(%edi)
4554ab:	8b 4a 04             	mov    0x4(%edx),%ecx
4554ae:	89 4f 04             	mov    %ecx,0x4(%edi)
4554b1:	eb 02                	jmp    0x4554b5
4554b3:	33 ff                	xor    %edi,%edi
4554b5:	8b 4e 08             	mov    0x8(%esi),%ecx
4554b8:	8b 46 04             	mov    0x4(%esi),%eax
4554bb:	89 3c 88             	mov    %edi,(%eax,%ecx,4)
4554be:	ff 46 08             	incl   0x8(%esi)
4554c1:	5f                   	pop    %edi
4554c2:	5e                   	pop    %esi
4554c3:	5d                   	pop    %ebp
4554c4:	c2 04 00             	ret    $0x4
4554c7:	55                   	push   %ebp
4554c8:	8b ec                	mov    %esp,%ebp
4554ca:	56                   	push   %esi
4554cb:	57                   	push   %edi
4554cc:	8b 7d 08             	mov    0x8(%ebp),%edi
4554cf:	8b f1                	mov    %ecx,%esi
4554d1:	8b 0f                	mov    (%edi),%ecx
4554d3:	8b 51 08             	mov    0x8(%ecx),%edx
4554d6:	8b 41 04             	mov    0x4(%ecx),%eax
4554d9:	85 d2                	test   %edx,%edx
4554db:	74 03                	je     0x4554e0
4554dd:	89 42 04             	mov    %eax,0x4(%edx)
4554e0:	85 c0                	test   %eax,%eax
4554e2:	74 03                	je     0x4554e7
4554e4:	89 50 08             	mov    %edx,0x8(%eax)
4554e7:	3b 0e                	cmp    (%esi),%ecx
4554e9:	75 02                	jne    0x4554ed
4554eb:	89 06                	mov    %eax,(%esi)
4554ed:	3b 4e 04             	cmp    0x4(%esi),%ecx
4554f0:	75 03                	jne    0x4554f5
4554f2:	89 56 04             	mov    %edx,0x4(%esi)
4554f5:	51                   	push   %ecx
4554f6:	e8 63 ed ff ff       	call   0x45425e
4554fb:	83 27 00             	andl   $0x0,(%edi)
4554fe:	ff 4e 08             	decl   0x8(%esi)
455501:	5f                   	pop    %edi
455502:	5e                   	pop    %esi
455503:	5d                   	pop    %ebp
455504:	c2 04 00             	ret    $0x4
455507:	55                   	push   %ebp
455508:	8b ec                	mov    %esp,%ebp
45550a:	51                   	push   %ecx
45550b:	51                   	push   %ecx
45550c:	8b 45 08             	mov    0x8(%ebp),%eax
45550f:	56                   	push   %esi
455510:	8b 40 04             	mov    0x4(%eax),%eax
455513:	8b 08                	mov    (%eax),%ecx
455515:	e8 b6 d7 fb ff       	call   0x412cd0
45551a:	51                   	push   %ecx
45551b:	51                   	push   %ecx
45551c:	dd 1c 24             	fstpl  (%esp)
45551f:	e8 0c ee fc ff       	call   0x424330
455524:	8b 75 0c             	mov    0xc(%ebp),%esi
455527:	dd 5d f8             	fstpl  -0x8(%ebp)
45552a:	83 c4 08             	add    $0x8,%esp
45552d:	8b ce                	mov    %esi,%ecx
45552f:	e8 ec d6 fb ff       	call   0x412c20
455534:	dd 45 f8             	fldl   -0x8(%ebp)
455537:	dd 1e                	fstpl  (%esi)
455539:	c7 46 0c 03 00 00 00 	movl   $0x3,0xc(%esi)
455540:	33 c0                	xor    %eax,%eax
455542:	5e                   	pop    %esi
455543:	c9                   	leave
455544:	c2 08 00             	ret    $0x8
455547:	55                   	push   %ebp
455548:	8b ec                	mov    %esp,%ebp
45554a:	51                   	push   %ecx
45554b:	51                   	push   %ecx
45554c:	8b 45 08             	mov    0x8(%ebp),%eax
45554f:	56                   	push   %esi
455550:	8b 40 04             	mov    0x4(%eax),%eax
455553:	8b 08                	mov    (%eax),%ecx
455555:	e8 76 d7 fb ff       	call   0x412cd0
45555a:	51                   	push   %ecx
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