4024a5:	e8 7e 7d 00 00       	call   0x40a228
4024aa:	59                   	pop    %ecx
4024ab:	c3                   	ret
4024ac:	cc                   	int3
4024ad:	cc                   	int3
4024ae:	cc                   	int3
4024af:	cc                   	int3
4024b0:	8b ff                	mov    %edi,%edi
4024b2:	55                   	push   %ebp
4024b3:	8b ec                	mov    %esp,%ebp
4024b5:	56                   	push   %esi
4024b6:	8b 75 0c             	mov    0xc(%ebp),%esi
4024b9:	57                   	push   %edi
4024ba:	8b fa                	mov    %edx,%edi
4024bc:	85 f6                	test   %esi,%esi
4024be:	75 04                	jne    0x4024c4
4024c0:	33 c0                	xor    %eax,%eax
4024c2:	eb 69                	jmp    0x40252d
4024c4:	85 c9                	test   %ecx,%ecx
4024c6:	75 14                	jne    0x4024dc
4024c8:	ff 15 2c e1 40 00    	call   *0x40e12c
4024ce:	6a 16                	push   $0x16
4024d0:	5e                   	pop    %esi
4024d1:	89 30                	mov    %esi,(%eax)
4024d3:	e8 97 83 00 00       	call   0x40a86f
4024d8:	8b c6                	mov    %esi,%eax
4024da:	eb 51                	jmp    0x40252d
4024dc:	53                   	push   %ebx
4024dd:	8b 5d 08             	mov    0x8(%ebp),%ebx
4024e0:	85 db                	test   %ebx,%ebx
4024e2:	74 13                	je     0x4024f7
4024e4:	3b fe                	cmp    %esi,%edi
4024e6:	72 0f                	jb     0x4024f7
4024e8:	56                   	push   %esi
4024e9:	53                   	push   %ebx
4024ea:	51                   	push   %ecx
4024eb:	e8 cd 87 00 00       	call   0x40acbd
4024f0:	83 c4 0c             	add    $0xc,%esp
4024f3:	33 c0                	xor    %eax,%eax
4024f5:	eb 35                	jmp    0x40252c
4024f7:	57                   	push   %edi
4024f8:	6a 00                	push   $0x0
4024fa:	51                   	push   %ecx
4024fb:	e8 ab 83 00 00       	call   0x40a8ab
402500:	83 c4 0c             	add    $0xc,%esp
402503:	85 db                	test   %ebx,%ebx
402505:	75 0a                	jne    0x402511
402507:	ff 15 2c e1 40 00    	call   *0x40e12c
40250d:	6a 16                	push   $0x16
40250f:	eb 0c                	jmp    0x40251d
402511:	3b fe                	cmp    %esi,%edi
402513:	73 14                	jae    0x402529
402515:	ff 15 2c e1 40 00    	call   *0x40e12c
40251b:	6a 22                	push   $0x22
40251d:	5e                   	pop    %esi
40251e:	89 30                	mov    %esi,(%eax)
402520:	e8 4a 83 00 00       	call   0x40a86f
402525:	8b c6                	mov    %esi,%eax
402527:	eb 03                	jmp    0x40252c
402529:	6a 16                	push   $0x16
40252b:	58                   	pop    %eax
40252c:	5b                   	pop    %ebx
40252d:	5f                   	pop    %edi
40252e:	5e                   	pop    %esi
40252f:	5d                   	pop    %ebp
402530:	c3                   	ret
402531:	cc                   	int3
402532:	cc                   	int3
402533:	cc                   	int3
402534:	cc                   	int3
402535:	cc                   	int3
402536:	cc                   	int3
402537:	cc                   	int3
402538:	cc                   	int3
402539:	cc                   	int3
40253a:	cc                   	int3
40253b:	cc                   	int3
40253c:	cc                   	int3
40253d:	cc                   	int3
40253e:	cc                   	int3
40253f:	cc                   	int3
402540:	8b ff                	mov    %edi,%edi
402542:	55                   	push   %ebp
402543:	8b ec                	mov    %esp,%ebp
402545:	56                   	push   %esi
402546:	8b f1                	mov    %ecx,%esi
402548:	8d 46 04             	lea    0x4(%esi),%eax
40254b:	c7 06 14 10 40 00    	movl   $0x401014,(%esi)
402551:	83 20 00             	andl   $0x0,(%eax)
402554:	83 60 04 00          	andl   $0x0,0x4(%eax)
402558:	50                   	push   %eax
402559:	8b 45 08             	mov    0x8(%ebp),%eax
40255c:	83 c0 04             	add    $0x4,%eax
40255f:	50                   	push   %eax
402560:	e8 aa 82 00 00       	call   0x40a80f
402565:	59                   	pop    %ecx
402566:	59                   	pop    %ecx
402567:	8b c6                	mov    %esi,%eax
402569:	5e                   	pop    %esi
40256a:	5d                   	pop    %ebp
40256b:	c2 04 00             	ret    $0x4
40256e:	cc                   	int3
40256f:	cc                   	int3
402570:	8b 41 04             	mov    0x4(%ecx),%eax
402573:	85 c0                	test   %eax,%eax
402575:	75 05                	jne    0x40257c
402577:	b8 38 15 40 00       	mov    $0x401538,%eax
40257c:	c3                   	ret
40257d:	cc                   	int3
40257e:	cc                   	int3
40257f:	cc                   	int3
402580:	8b ff                	mov    %edi,%edi
402582:	55                   	push   %ebp
402583:	8b ec                	mov    %esp,%ebp
402585:	56                   	push   %esi
402586:	8b f1                	mov    %ecx,%esi
402588:	8d 46 04             	lea    0x4(%esi),%eax
40258b:	c7 06 14 10 40 00    	movl   $0x401014,(%esi)
402591:	50                   	push   %eax
402592:	e8 7e 82 00 00       	call   0x40a815
402597:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
40259b:	59                   	pop    %ecx
40259c:	74 0a                	je     0x4025a8
40259e:	6a 0c                	push   $0xc
4025a0:	56                   	push   %esi
4025a1:	e8 99 7c 00 00       	call   0x40a23f
4025a6:	59                   	pop    %ecx
4025a7:	59                   	pop    %ecx
4025a8:	8b c6                	mov    %esi,%eax
4025aa:	5e                   	pop    %esi
4025ab:	5d                   	pop    %ebp
4025ac:	c2 04 00             	ret    $0x4
4025af:	8b ff                	mov    %edi,%edi
4025b1:	55                   	push   %ebp
4025b2:	8b ec                	mov    %esp,%ebp
4025b4:	56                   	push   %esi
4025b5:	33 f6                	xor    %esi,%esi
4025b7:	85 d2                	test   %edx,%edx
4025b9:	74 08                	je     0x4025c3
4025bb:	81 fa ff ff ff 7f    	cmp    $0x7fffffff,%edx
4025c1:	76 05                	jbe    0x4025c8
4025c3:	be 57 00 07 80       	mov    $0x80070057,%esi
4025c8:	85 f6                	test   %esi,%esi
4025ca:	78 41                	js     0x40260d
4025cc:	8b f2                	mov    %edx,%esi
4025ce:	85 d2                	test   %edx,%edx
4025d0:	74 28                	je     0x4025fa
4025d2:	57                   	push   %edi
4025d3:	bf fe ff ff 7f       	mov    $0x7ffffffe,%edi
4025d8:	2b fa                	sub    %edx,%edi
4025da:	8b 55 08             	mov    0x8(%ebp),%edx
4025dd:	2b d1                	sub    %ecx,%edx
4025df:	8d 04 37             	lea    (%edi,%esi,1),%eax
4025e2:	85 c0                	test   %eax,%eax
4025e4:	74 0f                	je     0x4025f5
4025e6:	8a 04 0a             	mov    (%edx,%ecx,1),%al
4025e9:	84 c0                	test   %al,%al
4025eb:	74 08                	je     0x4025f5
4025ed:	88 01                	mov    %al,(%ecx)
4025ef:	41                   	inc    %ecx
4025f0:	83 ee 01             	sub    $0x1,%esi
4025f3:	75 ea                	jne    0x4025df
4025f5:	5f                   	pop    %edi
4025f6:	85 f6                	test   %esi,%esi
4025f8:	75 01                	jne    0x4025fb
4025fa:	49                   	dec    %ecx
4025fb:	f7 de                	neg    %esi
4025fd:	1b f6                	sbb    %esi,%esi
4025ff:	81 e6 86 ff f8 7f    	and    $0x7ff8ff86,%esi
402605:	81 c6 7a 00 07 80    	add    $0x8007007a,%esi
40260b:	eb 04                	jmp    0x402611
40260d:	85 d2                	test   %edx,%edx
40260f:	74 03                	je     0x402614
402611:	c6 01 00             	movb   $0x0,(%ecx)
402614:	8b c6                	mov    %esi,%eax
402616:	5e                   	pop    %esi
402617:	5d                   	pop    %ebp
402618:	c2 04 00             	ret    $0x4
40261b:	8b ff                	mov    %edi,%edi
40261d:	55                   	push   %ebp
40261e:	8b ec                	mov    %esp,%ebp
402620:	56                   	push   %esi
402621:	57                   	push   %edi
402622:	8b f9                	mov    %ecx,%edi
402624:	be 04 01 00 00       	mov    $0x104,%esi
402629:	8b ce                	mov    %esi,%ecx
40262b:	8b c7                	mov    %edi,%eax
40262d:	66 83 38 00          	cmpw   $0x0,(%eax)
402631:	74 08                	je     0x40263b
402633:	83 c0 02             	add    $0x2,%eax
402636:	83 e9 01             	sub    $0x1,%ecx
402639:	75 f2                	jne    0x40262d
40263b:	8b c1                	mov    %ecx,%eax
40263d:	f7 d8                	neg    %eax
40263f:	1b c0                	sbb    %eax,%eax
402641:	25 a9 ff f8 7f       	and    $0x7ff8ffa9,%eax
402646:	05 57 00 07 80       	add    $0x80070057,%eax
40264b:	85 c9                	test   %ecx,%ecx
40264d:	74 26                	je     0x402675
40264f:	8b d1                	mov    %ecx,%edx
402651:	8d 81 fc fe ff ff    	lea    -0x104(%ecx),%eax
402657:	f7 da                	neg    %edx
402659:	51                   	push   %ecx
40265a:	ff 75 08             	push   0x8(%ebp)
40265d:	1b d2                	sbb    %edx,%edx
40265f:	23 d0                	and    %eax,%edx
402661:	03 d6                	add    %esi,%edx
402663:	2b f1                	sub    %ecx,%esi
402665:	51                   	push   %ecx
402666:	03 f6                	add    %esi,%esi
402668:	f7 d9                	neg    %ecx
40266a:	1b c9                	sbb    %ecx,%ecx
40266c:	23 ce                	and    %esi,%ecx
40266e:	03 cf                	add    %edi,%ecx
402670:	e8 4b 00 00 00       	call   0x4026c0
402675:	5f                   	pop    %edi
402676:	5e                   	pop    %esi
402677:	5d                   	pop    %ebp
402678:	c2 04 00             	ret    $0x4
40267b:	8b ff                	mov    %edi,%edi
40267d:	55                   	push   %ebp
40267e:	8b ec                	mov    %esp,%ebp
402680:	8b 45 0c             	mov    0xc(%ebp),%eax
402683:	33 c9                	xor    %ecx,%ecx
402685:	56                   	push   %esi
402686:	8b 75 08             	mov    0x8(%ebp),%esi
402689:	85 c0                	test   %eax,%eax
40268b:	74 07                	je     0x402694
40268d:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
402692:	76 05                	jbe    0x402699
402694:	b9 57 00 07 80       	mov    $0x80070057,%ecx
402699:	85 c9                	test   %ecx,%ecx
40269b:	78 15                	js     0x4026b2
40269d:	8d 4d 14             	lea    0x14(%ebp),%ecx
4026a0:	8b d0                	mov    %eax,%edx
4026a2:	51                   	push   %ecx
4026a3:	ff 75 10             	push   0x10(%ebp)
4026a6:	51                   	push   %ecx
4026a7:	8b ce                	mov    %esi,%ecx
4026a9:	e8 62 00 00 00       	call   0x402710
4026ae:	8b c8                	mov    %eax,%ecx
4026b0:	eb 09                	jmp    0x4026bb
4026b2:	85 c0                	test   %eax,%eax
4026b4:	74 05                	je     0x4026bb
4026b6:	33 c0                	xor    %eax,%eax
4026b8:	66 89 06             	mov    %ax,(%esi)
4026bb:	8b c1                	mov    %ecx,%eax
4026bd:	5e                   	pop    %esi
4026be:	5d                   	pop    %ebp
4026bf:	c3                   	ret
4026c0:	8b ff                	mov    %edi,%edi
4026c2:	55                   	push   %ebp
4026c3:	8b ec                	mov    %esp,%ebp
4026c5:	85 d2                	test   %edx,%edx
4026c7:	74 2b                	je     0x4026f4
4026c9:	8b 45 0c             	mov    0xc(%ebp),%eax
4026cc:	56                   	push   %esi
4026cd:	57                   	push   %edi
4026ce:	be fe ff ff 7f       	mov    $0x7ffffffe,%esi
4026d3:	2b c1                	sub    %ecx,%eax
4026d5:	85 f6                	test   %esi,%esi
4026d7:	74 15                	je     0x4026ee
4026d9:	0f b7 3c 08          	movzwl (%eax,%ecx,1),%edi
4026dd:	66 85 ff             	test   %di,%di
4026e0:	74 0c                	je     0x4026ee
4026e2:	66 89 39             	mov    %di,(%ecx)
4026e5:	83 c1 02             	add    $0x2,%ecx
4026e8:	4e                   	dec    %esi
4026e9:	83 ea 01             	sub    $0x1,%edx
4026ec:	75 e7                	jne    0x4026d5
4026ee:	5f                   	pop    %edi
4026ef:	5e                   	pop    %esi
4026f0:	85 d2                	test   %edx,%edx
4026f2:	75 03                	jne    0x4026f7
4026f4:	83 e9 02             	sub    $0x2,%ecx
4026f7:	f7 da                	neg    %edx
4026f9:	1b d2                	sbb    %edx,%edx
4026fb:	81 e2 86 ff f8 7f    	and    $0x7ff8ff86,%edx
402701:	33 c0                	xor    %eax,%eax
402703:	66 89 01             	mov    %ax,(%ecx)
402706:	8d 82 7a 00 07 80    	lea    -0x7ff8ff86(%edx),%eax
40270c:	5d                   	pop    %ebp
40270d:	c2 0c 00             	ret    $0xc
402710:	8b ff                	mov    %edi,%edi
402712:	55                   	push   %ebp
402713:	8b ec                	mov    %esp,%ebp
402715:	53                   	push   %ebx
402716:	56                   	push   %esi
402717:	57                   	push   %edi
402718:	ff 75 10             	push   0x10(%ebp)
40271b:	8d 72 ff             	lea    -0x1(%edx),%esi
40271e:	8b f9                	mov    %ecx,%edi
402720:	ff 75 0c             	push   0xc(%ebp)
402723:	33 db                	xor    %ebx,%ebx
402725:	56                   	push   %esi
402726:	57                   	push   %edi
402727:	e8 be 81 00 00       	call   0x40a8ea
40272c:	83 c4 10             	add    $0x10,%esp
40272f:	85 c0                	test   %eax,%eax
402731:	78 08                	js     0x40273b
402733:	3b c6                	cmp    %esi,%eax
402735:	77 04                	ja     0x40273b
402737:	75 0d                	jne    0x402746
402739:	eb 05                	jmp    0x402740
40273b:	bb 7a 00 07 80       	mov    $0x8007007a,%ebx
402740:	33 c0                	xor    %eax,%eax
402742:	66 89 04 77          	mov    %ax,(%edi,%esi,2)
402746:	5f                   	pop    %edi
402747:	5e                   	pop    %esi
402748:	8b c3                	mov    %ebx,%eax
40274a:	5b                   	pop    %ebx
40274b:	5d                   	pop    %ebp
40274c:	c2 0c 00             	ret    $0xc
40274f:	8b ff                	mov    %edi,%edi
402751:	55                   	push   %ebp
402752:	8b ec                	mov    %esp,%ebp
402754:	8b 45 0c             	mov    0xc(%ebp),%eax
402757:	56                   	push   %esi
402758:	8b 75 08             	mov    0x8(%ebp),%esi
40275b:	2b c6                	sub    %esi,%eax
40275d:	d1 f8                	sar    $1,%eax
40275f:	74 1a                	je     0x40277b
402761:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
402766:	77 13                	ja     0x40277b
402768:	8d 4d 14             	lea    0x14(%ebp),%ecx
40276b:	8b d0                	mov    %eax,%edx
40276d:	51                   	push   %ecx
40276e:	ff 75 10             	push   0x10(%ebp)
402771:	51                   	push   %ecx
402772:	8b ce                	mov    %esi,%ecx
402774:	e8 97 ff ff ff       	call   0x402710
402779:	eb 09                	jmp    0x402784
40277b:	85 c0                	test   %eax,%eax
40277d:	74 05                	je     0x402784
40277f:	33 c0                	xor    %eax,%eax
402781:	66 89 06             	mov    %ax,(%esi)
402784:	39 75 0c             	cmp    %esi,0xc(%ebp)
402787:	74 17                	je     0x4027a0
402789:	8b ce                	mov    %esi,%ecx
40278b:	8d 51 02             	lea    0x2(%ecx),%edx
40278e:	66 8b 01             	mov    (%ecx),%ax
402791:	83 c1 02             	add    $0x2,%ecx
402794:	66 85 c0             	test   %ax,%ax
402797:	75 f5                	jne    0x40278e
402799:	2b ca                	sub    %edx,%ecx
40279b:	d1 f9                	sar    $1,%ecx
40279d:	8d 34 4e             	lea    (%esi,%ecx,2),%esi
4027a0:	8b c6                	mov    %esi,%eax
4027a2:	5e                   	pop    %esi
4027a3:	5d                   	pop    %ebp