4024ea:	b9 01 00 00 00       	mov    $0x1,%ecx
4024ef:	0f b7 33             	movzwl (%ebx),%esi
4024f2:	2b 48 fc             	sub    -0x4(%eax),%ecx
4024f5:	8b 40 f8             	mov    -0x8(%eax),%eax
4024f8:	2b c6                	sub    %esi,%eax
4024fa:	0b c8                	or     %eax,%ecx
4024fc:	7d 08                	jge    0x402506
4024fe:	56                   	push   %esi
4024ff:	8b cf                	mov    %edi,%ecx
402501:	e8 fa 01 00 00       	call   0x402700
402506:	0f b7 0b             	movzwl (%ebx),%ecx
402509:	8d 43 02             	lea    0x2(%ebx),%eax
40250c:	51                   	push   %ecx
40250d:	50                   	push   %eax
40250e:	56                   	push   %esi
40250f:	ff 37                	push   (%edi)
402511:	e8 04 58 00 00       	call   0x407d1a
402516:	50                   	push   %eax
402517:	e8 c4 ee ff ff       	call   0x4013e0
40251c:	8b 0f                	mov    (%edi),%ecx
40251e:	83 c4 14             	add    $0x14,%esp
402521:	3b 71 f8             	cmp    -0x8(%ecx),%esi
402524:	7f 1e                	jg     0x402544
402526:	89 71 f4             	mov    %esi,-0xc(%ecx)
402529:	33 d2                	xor    %edx,%edx
40252b:	8b 0f                	mov    (%edi),%ecx
40252d:	5f                   	pop    %edi
40252e:	8d 42 01             	lea    0x1(%edx),%eax
402531:	66 89 14 71          	mov    %dx,(%ecx,%esi,2)
402535:	5e                   	pop    %esi
402536:	5b                   	pop    %ebx
402537:	5d                   	pop    %ebp
402538:	c2 08 00             	ret    $0x8
40253b:	5f                   	pop    %edi
40253c:	5e                   	pop    %esi
40253d:	33 c0                	xor    %eax,%eax
40253f:	5b                   	pop    %ebx
402540:	5d                   	pop    %ebp
402541:	c2 08 00             	ret    $0x8
402544:	68 57 00 07 80       	push   $0x80070057
402549:	e8 72 ee ff ff       	call   0x4013c0
40254e:	cc                   	int3
40254f:	cc                   	int3
402550:	68 0e 00 07 80       	push   $0x8007000e
402555:	e8 66 ee ff ff       	call   0x4013c0
40255a:	cc                   	int3
40255b:	cc                   	int3
40255c:	cc                   	int3
40255d:	cc                   	int3
40255e:	cc                   	int3
40255f:	cc                   	int3
402560:	55                   	push   %ebp
402561:	8b ec                	mov    %esp,%ebp
402563:	8b 45 0c             	mov    0xc(%ebp),%eax
402566:	56                   	push   %esi
402567:	57                   	push   %edi
402568:	8b f9                	mov    %ecx,%edi
40256a:	8d 34 00             	lea    (%eax,%eax,1),%esi
40256d:	85 f6                	test   %esi,%esi
40256f:	74 56                	je     0x4025c7
402571:	85 ff                	test   %edi,%edi
402573:	75 13                	jne    0x402588
402575:	e8 8d 57 00 00       	call   0x407d07
40257a:	5f                   	pop    %edi
40257b:	5e                   	pop    %esi
40257c:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
402582:	5d                   	pop    %ebp
402583:	e9 a6 56 00 00       	jmp    0x407c2e
402588:	8b 4d 08             	mov    0x8(%ebp),%ecx
40258b:	85 c9                	test   %ecx,%ecx
40258d:	75 13                	jne    0x4025a2
40258f:	e8 73 57 00 00       	call   0x407d07
402594:	5f                   	pop    %edi
402595:	5e                   	pop    %esi
402596:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40259c:	5d                   	pop    %ebp
40259d:	e9 8c 56 00 00       	jmp    0x407c2e
4025a2:	8d 04 12             	lea    (%edx,%edx,1),%eax
4025a5:	3b c6                	cmp    %esi,%eax
4025a7:	73 13                	jae    0x4025bc
4025a9:	e8 59 57 00 00       	call   0x407d07
4025ae:	5f                   	pop    %edi
4025af:	5e                   	pop    %esi
4025b0:	c7 00 22 00 00 00    	movl   $0x22,(%eax)
4025b6:	5d                   	pop    %ebp
4025b7:	e9 72 56 00 00       	jmp    0x407c2e
4025bc:	56                   	push   %esi
4025bd:	51                   	push   %ecx
4025be:	57                   	push   %edi
4025bf:	e8 dc 18 00 00       	call   0x403ea0
4025c4:	83 c4 0c             	add    $0xc,%esp
4025c7:	5f                   	pop    %edi
4025c8:	5e                   	pop    %esi
4025c9:	5d                   	pop    %ebp
4025ca:	c3                   	ret
4025cb:	cc                   	int3
4025cc:	cc                   	int3
4025cd:	cc                   	int3
4025ce:	cc                   	int3
4025cf:	cc                   	int3
4025d0:	56                   	push   %esi
4025d1:	8b f1                	mov    %ecx,%esi
4025d3:	57                   	push   %edi
4025d4:	8b 06                	mov    (%esi),%eax
4025d6:	83 78 f4 00          	cmpl   $0x0,-0xc(%eax)
4025da:	8d 50 f0             	lea    -0x10(%eax),%edx
4025dd:	8b 3a                	mov    (%edx),%edi
4025df:	74 40                	je     0x402621
4025e1:	83 7a 0c 00          	cmpl   $0x0,0xc(%edx)
4025e5:	8d 4a 0c             	lea    0xc(%edx),%ecx
4025e8:	7d 17                	jge    0x402601
4025ea:	83 78 f8 00          	cmpl   $0x0,-0x8(%eax)
4025ee:	7c 34                	jl     0x402624
4025f0:	c7 40 f4 00 00 00 00 	movl   $0x0,-0xc(%eax)
4025f7:	33 c9                	xor    %ecx,%ecx
4025f9:	8b 06                	mov    (%esi),%eax
4025fb:	5f                   	pop    %edi
4025fc:	5e                   	pop    %esi
4025fd:	66 89 08             	mov    %cx,(%eax)
402600:	c3                   	ret
402601:	83 c8 ff             	or     $0xffffffff,%eax
402604:	f0 0f c1 01          	lock xadd %eax,(%ecx)
402608:	48                   	dec    %eax
402609:	85 c0                	test   %eax,%eax
40260b:	7f 08                	jg     0x402615
40260d:	8b 0a                	mov    (%edx),%ecx
40260f:	52                   	push   %edx
402610:	8b 01                	mov    (%ecx),%eax
402612:	ff 50 04             	call   *0x4(%eax)
402615:	8b 07                	mov    (%edi),%eax
402617:	8b cf                	mov    %edi,%ecx
402619:	ff 50 0c             	call   *0xc(%eax)
40261c:	83 c0 10             	add    $0x10,%eax
40261f:	89 06                	mov    %eax,(%esi)
402621:	5f                   	pop    %edi
402622:	5e                   	pop    %esi
402623:	c3                   	ret
402624:	68 57 00 07 80       	push   $0x80070057
402629:	e8 92 ed ff ff       	call   0x4013c0
40262e:	cc                   	int3
40262f:	cc                   	int3
402630:	55                   	push   %ebp
402631:	8b ec                	mov    %esp,%ebp
402633:	51                   	push   %ecx
402634:	53                   	push   %ebx
402635:	8b d9                	mov    %ecx,%ebx
402637:	8b 4d 08             	mov    0x8(%ebp),%ecx
40263a:	56                   	push   %esi
40263b:	57                   	push   %edi
40263c:	8b f9                	mov    %ecx,%edi
40263e:	8b 03                	mov    (%ebx),%eax
402640:	2b f8                	sub    %eax,%edi
402642:	d1 ff                	sar    $1,%edi
402644:	8b 70 f4             	mov    -0xc(%eax),%esi
402647:	8b 45 0c             	mov    0xc(%ebp),%eax
40264a:	89 75 fc             	mov    %esi,-0x4(%ebp)
40264d:	85 c0                	test   %eax,%eax
40264f:	0f 88 82 00 00 00    	js     0x4026d7
402655:	85 c9                	test   %ecx,%ecx
402657:	75 07                	jne    0x402660
402659:	33 d2                	xor    %edx,%edx
40265b:	89 55 0c             	mov    %edx,0xc(%ebp)
40265e:	eb 0f                	jmp    0x40266f
402660:	50                   	push   %eax
402661:	51                   	push   %ecx
402662:	e8 63 57 00 00       	call   0x407dca
402667:	83 c4 08             	add    $0x8,%esp
40266a:	89 45 0c             	mov    %eax,0xc(%ebp)
40266d:	8b d0                	mov    %eax,%edx
40266f:	b9 ff ff ff 7f       	mov    $0x7fffffff,%ecx
402674:	2b ca                	sub    %edx,%ecx
402676:	3b ce                	cmp    %esi,%ecx
402678:	7c 67                	jl     0x4026e1
40267a:	03 f2                	add    %edx,%esi
40267c:	78 6d                	js     0x4026eb
40267e:	8b 03                	mov    (%ebx),%eax
402680:	b9 01 00 00 00       	mov    $0x1,%ecx
402685:	2b 48 fc             	sub    -0x4(%eax),%ecx
402688:	8b 40 f8             	mov    -0x8(%eax),%eax
40268b:	2b c6                	sub    %esi,%eax
40268d:	0b c8                	or     %eax,%ecx
40268f:	7d 0b                	jge    0x40269c
402691:	56                   	push   %esi
402692:	8b cb                	mov    %ebx,%ecx
402694:	e8 67 00 00 00       	call   0x402700
402699:	8b 55 0c             	mov    0xc(%ebp),%edx
40269c:	8b 03                	mov    (%ebx),%eax
40269e:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4026a1:	8d 04 78             	lea    (%eax,%edi,2),%eax
4026a4:	3b f9                	cmp    %ecx,%edi
4026a6:	76 03                	jbe    0x4026ab
4026a8:	8b 45 08             	mov    0x8(%ebp),%eax
4026ab:	03 d2                	add    %edx,%edx
4026ad:	52                   	push   %edx
4026ae:	50                   	push   %eax
4026af:	8b 03                	mov    (%ebx),%eax
4026b1:	8d 0c 48             	lea    (%eax,%ecx,2),%ecx
4026b4:	e8 67 01 00 00       	call   0x402820
4026b9:	8b 03                	mov    (%ebx),%eax
4026bb:	83 c4 08             	add    $0x8,%esp
4026be:	3b 70 f8             	cmp    -0x8(%eax),%esi
4026c1:	7f 14                	jg     0x4026d7
4026c3:	89 70 f4             	mov    %esi,-0xc(%eax)
4026c6:	33 c9                	xor    %ecx,%ecx
4026c8:	8b 03                	mov    (%ebx),%eax
4026ca:	5f                   	pop    %edi
4026cb:	66 89 0c 70          	mov    %cx,(%eax,%esi,2)
4026cf:	5e                   	pop    %esi
4026d0:	5b                   	pop    %ebx
4026d1:	8b e5                	mov    %ebp,%esp
4026d3:	5d                   	pop    %ebp
4026d4:	c2 08 00             	ret    $0x8
4026d7:	68 57 00 07 80       	push   $0x80070057
4026dc:	e8 df ec ff ff       	call   0x4013c0
4026e1:	68 57 00 07 80       	push   $0x80070057
4026e6:	e8 d5 ec ff ff       	call   0x4013c0
4026eb:	68 57 00 07 80       	push   $0x80070057
4026f0:	e8 cb ec ff ff       	call   0x4013c0
4026f5:	cc                   	int3
4026f6:	cc                   	int3
4026f7:	cc                   	int3
4026f8:	cc                   	int3
4026f9:	cc                   	int3
4026fa:	cc                   	int3
4026fb:	cc                   	int3
4026fc:	cc                   	int3
4026fd:	cc                   	int3
4026fe:	cc                   	int3
4026ff:	cc                   	int3
402700:	55                   	push   %ebp
402701:	8b ec                	mov    %esp,%ebp
402703:	56                   	push   %esi
402704:	8b 75 08             	mov    0x8(%ebp),%esi
402707:	57                   	push   %edi
402708:	8b f9                	mov    %ecx,%edi
40270a:	8b 0f                	mov    (%edi),%ecx
40270c:	39 71 f4             	cmp    %esi,-0xc(%ecx)
40270f:	0f 4f 71 f4          	cmovg  -0xc(%ecx),%esi
402713:	83 79 fc 01          	cmpl   $0x1,-0x4(%ecx)
402717:	7e 0e                	jle    0x402727
402719:	56                   	push   %esi
40271a:	8b cf                	mov    %edi,%ecx
40271c:	e8 7f 00 00 00       	call   0x4027a0
402721:	5f                   	pop    %edi
402722:	5e                   	pop    %esi
402723:	5d                   	pop    %ebp
402724:	c2 04 00             	ret    $0x4
402727:	8b 49 f8             	mov    -0x8(%ecx),%ecx
40272a:	3b ce                	cmp    %esi,%ecx
40272c:	7d 25                	jge    0x402753
40272e:	81 f9 00 00 00 40    	cmp    $0x40000000,%ecx
402734:	7e 07                	jle    0x40273d
402736:	b8 00 00 10 00       	mov    $0x100000,%eax
40273b:	eb 07                	jmp    0x402744
40273d:	8b c1                	mov    %ecx,%eax
40273f:	99                   	cltd
402740:	2b c2                	sub    %edx,%eax
402742:	d1 f8                	sar    $1,%eax
402744:	03 c8                	add    %eax,%ecx
402746:	3b ce                	cmp    %esi,%ecx
402748:	0f 4c ce             	cmovl  %esi,%ecx
40274b:	51                   	push   %ecx
40274c:	8b cf                	mov    %edi,%ecx
40274e:	e8 0d 00 00 00       	call   0x402760
402753:	5f                   	pop    %edi
402754:	5e                   	pop    %esi
402755:	5d                   	pop    %ebp
402756:	c2 04 00             	ret    $0x4
402759:	cc                   	int3
40275a:	cc                   	int3
40275b:	cc                   	int3
40275c:	cc                   	int3
40275d:	cc                   	int3
40275e:	cc                   	int3
40275f:	cc                   	int3
402760:	55                   	push   %ebp
402761:	8b ec                	mov    %esp,%ebp
402763:	56                   	push   %esi
402764:	8b 75 08             	mov    0x8(%ebp),%esi
402767:	57                   	push   %edi
402768:	8b f9                	mov    %ecx,%edi
40276a:	8b 17                	mov    (%edi),%edx
40276c:	83 ea 10             	sub    $0x10,%edx
40276f:	8b 0a                	mov    (%edx),%ecx
402771:	39 72 08             	cmp    %esi,0x8(%edx)
402774:	7d 1c                	jge    0x402792
402776:	85 f6                	test   %esi,%esi
402778:	7e 18                	jle    0x402792
40277a:	8b 01                	mov    (%ecx),%eax
40277c:	6a 02                	push   $0x2
40277e:	56                   	push   %esi
40277f:	52                   	push   %edx
402780:	ff 50 08             	call   *0x8(%eax)
402783:	85 c0                	test   %eax,%eax
402785:	74 0b                	je     0x402792
402787:	83 c0 10             	add    $0x10,%eax
40278a:	89 07                	mov    %eax,(%edi)
40278c:	5f                   	pop    %edi
40278d:	5e                   	pop    %esi
40278e:	5d                   	pop    %ebp
40278f:	c2 04 00             	ret    $0x4
402792:	e8 b9 fd ff ff       	call   0x402550
402797:	cc                   	int3
402798:	cc                   	int3
402799:	cc                   	int3
40279a:	cc                   	int3
40279b:	cc                   	int3
40279c:	cc                   	int3
40279d:	cc                   	int3
40279e:	cc                   	int3
40279f:	cc                   	int3
4027a0:	55                   	push   %ebp
4027a1:	8b ec                	mov    %esp,%ebp
4027a3:	83 ec 08             	sub    $0x8,%esp
4027a6:	8b c1                	mov    %ecx,%eax
4027a8:	89 45 f8             	mov    %eax,-0x8(%ebp)
4027ab:	53                   	push   %ebx
4027ac:	56                   	push   %esi
4027ad:	8b 00                	mov    (%eax),%eax
4027af:	8b 48 f0             	mov    -0x10(%eax),%ecx
4027b2:	8d 70 f0             	lea    -0x10(%eax),%esi
4027b5:	8b 5e 04             	mov    0x4(%esi),%ebx
4027b8:	89 45 fc             	mov    %eax,-0x4(%ebp)
4027bb:	57                   	push   %edi
4027bc:	8b 01                	mov    (%ecx),%eax
4027be:	ff 50 10             	call   *0x10(%eax)
4027c1:	8b 7d 08             	mov    0x8(%ebp),%edi
4027c4:	8b c8                	mov    %eax,%ecx
4027c6:	6a 02                	push   $0x2
4027c8:	57                   	push   %edi
4027c9:	8b 10                	mov    (%eax),%edx
4027cb:	ff 12                	call   *(%edx)
4027cd:	89 45 08             	mov    %eax,0x8(%ebp)
4027d0:	85 c0                	test   %eax,%eax
4027d2:	74 46                	je     0x40281a
4027d4:	3b df                	cmp    %edi,%ebx
4027d6:	0f 4c fb             	cmovl  %ebx,%edi
4027d9:	8d 14 7d 02 00 00 00 	lea    0x2(,%edi,2),%edx
4027e0:	52                   	push   %edx
4027e1:	ff 75 fc             	push   -0x4(%ebp)
4027e4:	8d 78 10             	lea    0x10(%eax),%edi
4027e7:	8b cf                	mov    %edi,%ecx
4027e9:	e8 32 00 00 00       	call   0x402820
4027ee:	8b 45 08             	mov    0x8(%ebp),%eax
4027f1:	83 c4 08             	add    $0x8,%esp
4027f4:	89 58 04             	mov    %ebx,0x4(%eax)
4027f7:	83 c8 ff             	or     $0xffffffff,%eax
4027fa:	f0 0f c1 46 0c       	lock xadd %eax,0xc(%esi)
4027ff:	48                   	dec    %eax
402800:	85 c0                	test   %eax,%eax