43d37e:	f6 c1 02             	test   $0x2,%cl
43d381:	0f 84 9b 00 00 00    	je     0x43d422
43d387:	8b 12                	mov    (%edx),%edx
43d389:	89 55 fc             	mov    %edx,-0x4(%ebp)
43d38c:	85 d2                	test   %edx,%edx
43d38e:	0f 84 8e 00 00 00    	je     0x43d422
43d394:	8b 45 14             	mov    0x14(%ebp),%eax
43d397:	83 f8 02             	cmp    $0x2,%eax
43d39a:	75 17                	jne    0x43d3b3
43d39c:	8b 4b 0c             	mov    0xc(%ebx),%ecx
43d39f:	8b 43 38             	mov    0x38(%ebx),%eax
43d3a2:	8b 75 0c             	mov    0xc(%ebp),%esi
43d3a5:	8b 7d 10             	mov    0x10(%ebp),%edi
43d3a8:	2b 01                	sub    (%ecx),%eax
43d3aa:	d1 f8                	sar    $1,%eax
43d3ac:	99                   	cltd
43d3ad:	03 f0                	add    %eax,%esi
43d3af:	13 fa                	adc    %edx,%edi
43d3b1:	eb 33                	jmp    0x43d3e6
43d3b3:	83 f8 01             	cmp    $0x1,%eax
43d3b6:	75 16                	jne    0x43d3ce
43d3b8:	8b 4b 0c             	mov    0xc(%ebx),%ecx
43d3bb:	8b c2                	mov    %edx,%eax
43d3bd:	8b 75 0c             	mov    0xc(%ebp),%esi
43d3c0:	8b 7d 10             	mov    0x10(%ebp),%edi
43d3c3:	2b 01                	sub    (%ecx),%eax
43d3c5:	d1 f8                	sar    $1,%eax
43d3c7:	99                   	cltd
43d3c8:	03 f0                	add    %eax,%esi
43d3ca:	13 fa                	adc    %edx,%edi
43d3cc:	eb 18                	jmp    0x43d3e6
43d3ce:	85 c0                	test   %eax,%eax
43d3d0:	74 0e                	je     0x43d3e0
43d3d2:	8b 35 c8 f7 6c 00    	mov    0x6cf7c8,%esi
43d3d8:	8b 3d cc f7 6c 00    	mov    0x6cf7cc,%edi
43d3de:	eb 06                	jmp    0x43d3e6
43d3e0:	8b 7d 10             	mov    0x10(%ebp),%edi
43d3e3:	8b 75 0c             	mov    0xc(%ebp),%esi
43d3e6:	85 ff                	test   %edi,%edi
43d3e8:	7c 44                	jl     0x43d42e
43d3ea:	7f 04                	jg     0x43d3f0
43d3ec:	85 f6                	test   %esi,%esi
43d3ee:	72 3e                	jb     0x43d42e
43d3f0:	8b 43 0c             	mov    0xc(%ebx),%eax
43d3f3:	8b 08                	mov    (%eax),%ecx
43d3f5:	8b 43 38             	mov    0x38(%ebx),%eax
43d3f8:	2b c1                	sub    %ecx,%eax
43d3fa:	d1 f8                	sar    $1,%eax
43d3fc:	99                   	cltd
43d3fd:	3b fa                	cmp    %edx,%edi
43d3ff:	7f 2d                	jg     0x43d42e
43d401:	7c 04                	jl     0x43d407
43d403:	3b f0                	cmp    %eax,%esi
43d405:	77 27                	ja     0x43d42e
43d407:	2b 4d fc             	sub    -0x4(%ebp),%ecx
43d40a:	8b 43 30             	mov    0x30(%ebx),%eax
43d40d:	d1 f9                	sar    $1,%ecx
43d40f:	03 ce                	add    %esi,%ecx
43d411:	89 4d fc             	mov    %ecx,-0x4(%ebp)
43d414:	29 08                	sub    %ecx,(%eax)
43d416:	8b 4b 20             	mov    0x20(%ebx),%ecx
43d419:	8b 45 fc             	mov    -0x4(%ebp),%eax
43d41c:	03 c0                	add    %eax,%eax
43d41e:	01 01                	add    %eax,(%ecx)
43d420:	eb 18                	jmp    0x43d43a
43d422:	8b 75 0c             	mov    0xc(%ebp),%esi
43d425:	8b c6                	mov    %esi,%eax
43d427:	8b 7d 10             	mov    0x10(%ebp),%edi
43d42a:	0b c7                	or     %edi,%eax
43d42c:	74 0c                	je     0x43d43a
43d42e:	8b 35 c8 f7 6c 00    	mov    0x6cf7c8,%esi
43d434:	8b 3d cc f7 6c 00    	mov    0x6cf7cc,%edi
43d43a:	8b 45 08             	mov    0x8(%ebp),%eax
43d43d:	0f 57 c0             	xorps  %xmm0,%xmm0
43d440:	89 78 04             	mov    %edi,0x4(%eax)
43d443:	5f                   	pop    %edi
43d444:	89 30                	mov    %esi,(%eax)
43d446:	5e                   	pop    %esi
43d447:	c7 40 08 00 00 00 00 	movl   $0x0,0x8(%eax)
43d44e:	c7 40 0c 00 00 00 00 	movl   $0x0,0xc(%eax)
43d455:	66 0f d6 40 10       	movq   %xmm0,0x10(%eax)
43d45a:	5b                   	pop    %ebx
43d45b:	8b e5                	mov    %ebp,%esp
43d45d:	5d                   	pop    %ebp
43d45e:	c2 14 00             	ret    $0x14
43d461:	cc                   	int3
43d462:	cc                   	int3
43d463:	cc                   	int3
43d464:	cc                   	int3
43d465:	cc                   	int3
43d466:	cc                   	int3
43d467:	cc                   	int3
43d468:	cc                   	int3
43d469:	cc                   	int3
43d46a:	cc                   	int3
43d46b:	cc                   	int3
43d46c:	cc                   	int3
43d46d:	cc                   	int3
43d46e:	cc                   	int3
43d46f:	cc                   	int3
43d470:	53                   	push   %ebx
43d471:	56                   	push   %esi
43d472:	8b f1                	mov    %ecx,%esi
43d474:	57                   	push   %edi
43d475:	8b 7e 1c             	mov    0x1c(%esi),%edi
43d478:	8b 17                	mov    (%edi),%edx
43d47a:	85 d2                	test   %edx,%edx
43d47c:	74 4b                	je     0x43d4c9
43d47e:	8b 5e 2c             	mov    0x2c(%esi),%ebx
43d481:	8b 0b                	mov    (%ebx),%ecx
43d483:	8d 0c 4a             	lea    (%edx,%ecx,2),%ecx
43d486:	3b d1                	cmp    %ecx,%edx
43d488:	73 07                	jae    0x43d491
43d48a:	66 8b 02             	mov    (%edx),%ax
43d48d:	5f                   	pop    %edi
43d48e:	5e                   	pop    %esi
43d48f:	5b                   	pop    %ebx
43d490:	c3                   	ret
43d491:	f6 46 3c 04          	testb  $0x4,0x3c(%esi)
43d495:	75 32                	jne    0x43d4c9
43d497:	8b 46 20             	mov    0x20(%esi),%eax
43d49a:	8b 08                	mov    (%eax),%ecx
43d49c:	85 c9                	test   %ecx,%ecx
43d49e:	74 29                	je     0x43d4c9
43d4a0:	3b ca                	cmp    %edx,%ecx
43d4a2:	77 05                	ja     0x43d4a9
43d4a4:	39 56 38             	cmp    %edx,0x38(%esi)
43d4a7:	76 20                	jbe    0x43d4c9
43d4a9:	8b 46 38             	mov    0x38(%esi),%eax
43d4ac:	3b c1                	cmp    %ecx,%eax
43d4ae:	73 07                	jae    0x43d4b7
43d4b0:	89 4e 38             	mov    %ecx,0x38(%esi)
43d4b3:	8b c1                	mov    %ecx,%eax
43d4b5:	8b 17                	mov    (%edi),%edx
43d4b7:	2b c2                	sub    %edx,%eax
43d4b9:	d1 f8                	sar    $1,%eax
43d4bb:	89 03                	mov    %eax,(%ebx)
43d4bd:	8b 46 1c             	mov    0x1c(%esi),%eax
43d4c0:	5f                   	pop    %edi
43d4c1:	5e                   	pop    %esi
43d4c2:	5b                   	pop    %ebx
43d4c3:	8b 00                	mov    (%eax),%eax
43d4c5:	66 8b 00             	mov    (%eax),%ax
43d4c8:	c3                   	ret
43d4c9:	5f                   	pop    %edi
43d4ca:	5e                   	pop    %esi
43d4cb:	b8 ff ff 00 00       	mov    $0xffff,%eax
43d4d0:	5b                   	pop    %ebx
43d4d1:	c3                   	ret
43d4d2:	cc                   	int3
43d4d3:	cc                   	int3
43d4d4:	cc                   	int3
43d4d5:	cc                   	int3
43d4d6:	cc                   	int3
43d4d7:	cc                   	int3
43d4d8:	cc                   	int3
43d4d9:	cc                   	int3
43d4da:	cc                   	int3
43d4db:	cc                   	int3
43d4dc:	cc                   	int3
43d4dd:	cc                   	int3
43d4de:	cc                   	int3
43d4df:	cc                   	int3
43d4e0:	55                   	push   %ebp
43d4e1:	8b ec                	mov    %esp,%ebp
43d4e3:	8b 41 1c             	mov    0x1c(%ecx),%eax
43d4e6:	56                   	push   %esi
43d4e7:	57                   	push   %edi
43d4e8:	bf ff ff 00 00       	mov    $0xffff,%edi
43d4ed:	8b 30                	mov    (%eax),%esi
43d4ef:	85 f6                	test   %esi,%esi
43d4f1:	74 45                	je     0x43d538
43d4f3:	8b 41 0c             	mov    0xc(%ecx),%eax
43d4f6:	3b 30                	cmp    (%eax),%esi
43d4f8:	76 3e                	jbe    0x43d538
43d4fa:	66 8b 55 08          	mov    0x8(%ebp),%dx
43d4fe:	66 3b fa             	cmp    %dx,%di
43d501:	74 0c                	je     0x43d50f
43d503:	66 3b 56 fe          	cmp    -0x2(%esi),%dx
43d507:	74 06                	je     0x43d50f
43d509:	f6 41 3c 02          	testb  $0x2,0x3c(%ecx)
43d50d:	75 29                	jne    0x43d538
43d50f:	8b 41 2c             	mov    0x2c(%ecx),%eax
43d512:	ff 00                	incl   (%eax)
43d514:	8b 41 1c             	mov    0x1c(%ecx),%eax
43d517:	83 00 fe             	addl   $0xfffffffe,(%eax)
43d51a:	66 3b fa             	cmp    %dx,%di
43d51d:	74 08                	je     0x43d527
43d51f:	8b 41 1c             	mov    0x1c(%ecx),%eax
43d522:	8b 00                	mov    (%eax),%eax
43d524:	66 89 10             	mov    %dx,(%eax)
43d527:	33 c9                	xor    %ecx,%ecx
43d529:	0f b7 c2             	movzwl %dx,%eax
43d52c:	66 3b d7             	cmp    %di,%dx
43d52f:	5f                   	pop    %edi
43d530:	0f 44 c1             	cmove  %ecx,%eax
43d533:	5e                   	pop    %esi
43d534:	5d                   	pop    %ebp
43d535:	c2 04 00             	ret    $0x4
43d538:	66 8b c7             	mov    %di,%ax
43d53b:	5f                   	pop    %edi
43d53c:	5e                   	pop    %esi
43d53d:	5d                   	pop    %ebp
43d53e:	c2 04 00             	ret    $0x4
43d541:	cc                   	int3
43d542:	cc                   	int3
43d543:	cc                   	int3
43d544:	cc                   	int3
43d545:	cc                   	int3
43d546:	cc                   	int3
43d547:	cc                   	int3
43d548:	cc                   	int3
43d549:	cc                   	int3
43d54a:	cc                   	int3
43d54b:	cc                   	int3
43d54c:	cc                   	int3
43d54d:	cc                   	int3
43d54e:	cc                   	int3
43d54f:	cc                   	int3
43d550:	55                   	push   %ebp
43d551:	8b ec                	mov    %esp,%ebp
43d553:	83 ec 0c             	sub    $0xc,%esp
43d556:	53                   	push   %ebx
43d557:	56                   	push   %esi
43d558:	8b f1                	mov    %ecx,%esi
43d55a:	b9 ff ff 00 00       	mov    $0xffff,%ecx
43d55f:	57                   	push   %edi
43d560:	8b 46 3c             	mov    0x3c(%esi),%eax
43d563:	a8 02                	test   $0x2,%al
43d565:	0f 85 19 02 00 00    	jne    0x43d784
43d56b:	66 8b 5d 08          	mov    0x8(%ebp),%bx
43d56f:	66 3b cb             	cmp    %bx,%cx
43d572:	75 0b                	jne    0x43d57f
43d574:	5f                   	pop    %edi
43d575:	5e                   	pop    %esi
43d576:	33 c0                	xor    %eax,%eax
43d578:	5b                   	pop    %ebx
43d579:	8b e5                	mov    %ebp,%esp
43d57b:	5d                   	pop    %ebp
43d57c:	c2 04 00             	ret    $0x4
43d57f:	a8 08                	test   $0x8,%al
43d581:	74 23                	je     0x43d5a6
43d583:	8b 7e 20             	mov    0x20(%esi),%edi
43d586:	8b 0f                	mov    (%edi),%ecx
43d588:	85 c9                	test   %ecx,%ecx
43d58a:	74 1a                	je     0x43d5a6
43d58c:	8b 56 38             	mov    0x38(%esi),%edx
43d58f:	3b ca                	cmp    %edx,%ecx
43d591:	73 13                	jae    0x43d5a6
43d593:	8b 46 30             	mov    0x30(%esi),%eax
43d596:	8b 00                	mov    (%eax),%eax
43d598:	89 17                	mov    %edx,(%edi)
43d59a:	8d 0c 41             	lea    (%ecx,%eax,2),%ecx
43d59d:	8b 46 30             	mov    0x30(%esi),%eax
43d5a0:	2b ca                	sub    %edx,%ecx
43d5a2:	d1 f9                	sar    $1,%ecx
43d5a4:	89 08                	mov    %ecx,(%eax)
43d5a6:	8b 46 20             	mov    0x20(%esi),%eax
43d5a9:	8b 38                	mov    (%eax),%edi
43d5ab:	85 ff                	test   %edi,%edi
43d5ad:	74 39                	je     0x43d5e8
43d5af:	8b 56 30             	mov    0x30(%esi),%edx
43d5b2:	8b 0a                	mov    (%edx),%ecx
43d5b4:	8d 04 09             	lea    (%ecx,%ecx,1),%eax
43d5b7:	89 45 f8             	mov    %eax,-0x8(%ebp)
43d5ba:	03 c7                	add    %edi,%eax
43d5bc:	3b f8                	cmp    %eax,%edi
43d5be:	73 1c                	jae    0x43d5dc
43d5c0:	49                   	dec    %ecx
43d5c1:	66 8b c3             	mov    %bx,%ax
43d5c4:	89 0a                	mov    %ecx,(%edx)
43d5c6:	8b 56 20             	mov    0x20(%esi),%edx
43d5c9:	5f                   	pop    %edi
43d5ca:	8b 32                	mov    (%edx),%esi
43d5cc:	8d 4e 02             	lea    0x2(%esi),%ecx
43d5cf:	89 0a                	mov    %ecx,(%edx)
43d5d1:	66 89 1e             	mov    %bx,(%esi)
43d5d4:	5e                   	pop    %esi
43d5d5:	5b                   	pop    %ebx
43d5d6:	8b e5                	mov    %ebp,%esp
43d5d8:	5d                   	pop    %ebp
43d5d9:	c2 04 00             	ret    $0x4
43d5dc:	8b 46 0c             	mov    0xc(%esi),%eax
43d5df:	2b 38                	sub    (%eax),%edi
43d5e1:	03 7d f8             	add    -0x8(%ebp),%edi
43d5e4:	d1 ff                	sar    $1,%edi
43d5e6:	eb 02                	jmp    0x43d5ea
43d5e8:	33 ff                	xor    %edi,%edi
43d5ea:	8b cf                	mov    %edi,%ecx
43d5ec:	b8 20 00 00 00       	mov    $0x20,%eax
43d5f1:	d1 e9                	shr    $1,%ecx
43d5f3:	3b c8                	cmp    %eax,%ecx
43d5f5:	0f 42 c8             	cmovb  %eax,%ecx
43d5f8:	0f 1f 84 00 00 00 00 	nopl   0x0(%eax,%eax,1)
43d5ff:	00
43d600:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
43d605:	2b c1                	sub    %ecx,%eax
43d607:	3b c7                	cmp    %edi,%eax
43d609:	73 04                	jae    0x43d60f
43d60b:	d1 e9                	shr    $1,%ecx
43d60d:	75 f1                	jne    0x43d600
43d60f:	85 c9                	test   %ecx,%ecx
43d611:	0f 84 68 01 00 00    	je     0x43d77f
43d617:	8d 04 39             	lea    (%ecx,%edi,1),%eax
43d61a:	50                   	push   %eax
43d61b:	8d 4e 40             	lea    0x40(%esi),%ecx
43d61e:	89 45 f4             	mov    %eax,-0xc(%ebp)
43d621:	e8 ca bd ff ff       	call   0x4393f0
43d626:	8b 4e 0c             	mov    0xc(%esi),%ecx
43d629:	8b d0                	mov    %eax,%edx
43d62b:	89 55 fc             	mov    %edx,-0x4(%ebp)
43d62e:	8b 19                	mov    (%ecx),%ebx
43d630:	89 5d f8             	mov    %ebx,-0x8(%ebp)
43d633:	85 ff                	test   %edi,%edi
43d635:	74 11                	je     0x43d648
43d637:	8d 04 3f             	lea    (%edi,%edi,1),%eax
43d63a:	50                   	push   %eax
43d63b:	53                   	push   %ebx
43d63c:	52                   	push   %edx
43d63d:	e8 be 58 1a 00       	call   0x5e2f00
43d642:	8b 55 fc             	mov    -0x4(%ebp),%edx
43d645:	83 c4 0c             	add    $0xc,%esp
43d648:	8b 4d f4             	mov    -0xc(%ebp),%ecx
43d64b:	8d 04 09             	lea    (%ecx,%ecx,1),%eax
43d64e:	89 45 f4             	mov    %eax,-0xc(%ebp)
43d651:	85 ff                	test   %edi,%edi
43d653:	75 39                	jne    0x43d68e
43d655:	8b 46 10             	mov    0x10(%esi),%eax
43d658:	89 56 38             	mov    %edx,0x38(%esi)
43d65b:	89 10                	mov    %edx,(%eax)
43d65d:	8b 46 20             	mov    0x20(%esi),%eax
43d660:	89 10                	mov    %edx,(%eax)
43d662:	8b 46 30             	mov    0x30(%esi),%eax
43d665:	89 08                	mov    %ecx,(%eax)
43d667:	8b 46 0c             	mov    0xc(%esi),%eax
43d66a:	8b 4e 3c             	mov    0x3c(%esi),%ecx
43d66d:	89 10                	mov    %edx,(%eax)
43d66f:	8b 46 1c             	mov    0x1c(%esi),%eax
43d672:	83 e1 04             	and    $0x4,%ecx
43d675:	74 07                	je     0x43d67e
43d677:	89 38                	mov    %edi,(%eax)
43d679:	e9 96 00 00 00       	jmp    0x43d714
43d67e:	89 10                	mov    %edx,(%eax)
43d680:	8b 46 2c             	mov    0x2c(%esi),%eax
43d683:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
43d689:	e9 8d 00 00 00       	jmp    0x43d71b
43d68e:	8b 46 38             	mov    0x38(%esi),%eax
43d691:	2b c3                	sub    %ebx,%eax
43d693:	8b 4e 10             	mov    0x10(%esi),%ecx
43d696:	d1 f8                	sar    $1,%eax