40538a:	b8 0e 00 07 80       	mov    $0x8007000e,%eax
40538f:	e9 e2 00 00 00       	jmp    0x405476
405394:	6a 02                	push   $0x2
405396:	59                   	pop    %ecx
405397:	f7 e1                	mul    %ecx
405399:	88 4d fc             	mov    %cl,-0x4(%ebp)
40539c:	3b d6                	cmp    %esi,%edx
40539e:	0f 87 da 00 00 00    	ja     0x40547e
4053a4:	72 09                	jb     0x4053af
4053a6:	83 f8 ff             	cmp    $0xffffffff,%eax
4053a9:	0f 87 cf 00 00 00    	ja     0x40547e
4053af:	3d 00 04 00 00       	cmp    $0x400,%eax
4053b4:	76 14                	jbe    0x4053ca
4053b6:	50                   	push   %eax
4053b7:	8d 8d e0 fb ff ff    	lea    -0x420(%ebp),%ecx
4053bd:	e8 48 36 00 00       	call   0x408a0a
4053c2:	8b 85 e0 fb ff ff    	mov    -0x420(%ebp),%eax
4053c8:	eb 0c                	jmp    0x4053d6
4053ca:	8d 85 e4 fb ff ff    	lea    -0x41c(%ebp),%eax
4053d0:	89 85 e0 fb ff ff    	mov    %eax,-0x420(%ebp)
4053d6:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
4053dd:	eb 21                	jmp    0x405400
4053df:	b8 e5 53 40 00       	mov    $0x4053e5,%eax
4053e4:	c3                   	ret
4053e5:	8b bd d4 fb ff ff    	mov    -0x42c(%ebp),%edi
4053eb:	33 f6                	xor    %esi,%esi
4053ed:	8b 9d dc fb ff ff    	mov    -0x424(%ebp),%ebx
4053f3:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
4053fa:	8b 85 e0 fb ff ff    	mov    -0x420(%ebp),%eax
405400:	85 c0                	test   %eax,%eax
405402:	75 07                	jne    0x40540b
405404:	be 0e 00 07 80       	mov    $0x8007000e,%esi
405409:	eb 3e                	jmp    0x405449
40540b:	53                   	push   %ebx
40540c:	50                   	push   %eax
40540d:	53                   	push   %ebx
40540e:	ff b5 d0 fb ff ff    	push   -0x430(%ebp)
405414:	56                   	push   %esi
405415:	6a 03                	push   $0x3
405417:	ff 15 c4 60 41 00    	call   *0x4160c4
40541d:	8b c8                	mov    %eax,%ecx
40541f:	85 c9                	test   %ecx,%ecx
405421:	0f 84 0c ff ff ff    	je     0x405333
405427:	8b 85 e0 fb ff ff    	mov    -0x420(%ebp),%eax
40542d:	33 d2                	xor    %edx,%edx
40542f:	ff 75 14             	push   0x14(%ebp)
405432:	66 89 14 48          	mov    %dx,(%eax,%ecx,2)
405436:	8d 8d c8 fb ff ff    	lea    -0x438(%ebp),%ecx
40543c:	ff b5 e0 fb ff ff    	push   -0x420(%ebp)
405442:	e8 cc 09 00 00       	call   0x405e13
405447:	8b f0                	mov    %eax,%esi
405449:	57                   	push   %edi
40544a:	ff 15 d0 60 41 00    	call   *0x4160d0
405450:	8d 85 e4 fb ff ff    	lea    -0x41c(%ebp),%eax
405456:	39 85 e0 fb ff ff    	cmp    %eax,-0x420(%ebp)
40545c:	74 0b                	je     0x405469
40545e:	8d 8d e0 fb ff ff    	lea    -0x420(%ebp),%ecx
405464:	e8 c6 2a 00 00       	call   0x407f2f
405469:	8d 8d d8 fb ff ff    	lea    -0x428(%ebp),%ecx
40546f:	e8 49 23 00 00       	call   0x4077bd
405474:	8b c6                	mov    %esi,%eax
405476:	e8 d4 d0 00 00       	call   0x41254f
40547b:	c2 10 00             	ret    $0x10
40547e:	b9 57 00 07 80       	mov    $0x80070057,%ecx
405483:	e8 67 f7 ff ff       	call   0x404bef
405488:	cc                   	int3
405489:	cc                   	int3
40548a:	cc                   	int3
40548b:	cc                   	int3
40548c:	cc                   	int3
40548d:	cc                   	int3
40548e:	cc                   	int3
40548f:	cc                   	int3
405490:	8b ff                	mov    %edi,%edi
405492:	55                   	push   %ebp
405493:	8b ec                	mov    %esp,%ebp
405495:	56                   	push   %esi
405496:	8b 75 08             	mov    0x8(%ebp),%esi
405499:	57                   	push   %edi
40549a:	8d 7e 10             	lea    0x10(%esi),%edi
40549d:	57                   	push   %edi
40549e:	ff 15 64 61 41 00    	call   *0x416164
4054a4:	8d 4e 04             	lea    0x4(%esi),%ecx
4054a7:	e8 ef fb ff ff       	call   0x40509b
4054ac:	57                   	push   %edi
4054ad:	8b f0                	mov    %eax,%esi
4054af:	ff 15 5c 61 41 00    	call   *0x41615c
4054b5:	5f                   	pop    %edi
4054b6:	8b c6                	mov    %esi,%eax
4054b8:	5e                   	pop    %esi
4054b9:	5d                   	pop    %ebp
4054ba:	c2 04 00             	ret    $0x4
4054bd:	8b ff                	mov    %edi,%edi
4054bf:	55                   	push   %ebp
4054c0:	8b ec                	mov    %esp,%ebp
4054c2:	51                   	push   %ecx
4054c3:	53                   	push   %ebx
4054c4:	56                   	push   %esi
4054c5:	57                   	push   %edi
4054c6:	8b f9                	mov    %ecx,%edi
4054c8:	8d 47 10             	lea    0x10(%edi),%eax
4054cb:	50                   	push   %eax
4054cc:	89 45 fc             	mov    %eax,-0x4(%ebp)
4054cf:	ff 15 64 61 41 00    	call   *0x416164
4054d5:	33 db                	xor    %ebx,%ebx
4054d7:	8b f3                	mov    %ebx,%esi
4054d9:	39 5f 0c             	cmp    %ebx,0xc(%edi)
4054dc:	7e 19                	jle    0x4054f7
4054de:	8b 47 04             	mov    0x4(%edi),%eax
4054e1:	ff 75 08             	push   0x8(%ebp)
4054e4:	ff 34 b0             	push   (%eax,%esi,4)
4054e7:	ff 15 d4 60 41 00    	call   *0x4160d4
4054ed:	85 c0                	test   %eax,%eax
4054ef:	74 09                	je     0x4054fa
4054f1:	46                   	inc    %esi
4054f2:	3b 77 0c             	cmp    0xc(%edi),%esi
4054f5:	7c e7                	jl     0x4054de
4054f7:	83 ce ff             	or     $0xffffffff,%esi
4054fa:	83 fe ff             	cmp    $0xffffffff,%esi
4054fd:	74 0f                	je     0x40550e
4054ff:	85 f6                	test   %esi,%esi
405501:	78 1d                	js     0x405520
405503:	3b 77 0c             	cmp    0xc(%edi),%esi
405506:	7d 18                	jge    0x405520
405508:	8b 47 08             	mov    0x8(%edi),%eax
40550b:	8b 1c b0             	mov    (%eax,%esi,4),%ebx
40550e:	ff 75 fc             	push   -0x4(%ebp)
405511:	ff 15 5c 61 41 00    	call   *0x41615c
405517:	5f                   	pop    %edi
405518:	5e                   	pop    %esi
405519:	8b c3                	mov    %ebx,%eax
40551b:	5b                   	pop    %ebx
40551c:	c9                   	leave
40551d:	c2 04 00             	ret    $0x4
405520:	b9 8c 00 00 c0       	mov    $0xc000008c,%ecx
405525:	e8 a7 f6 ff ff       	call   0x404bd1
40552a:	cc                   	int3
40552b:	8b ff                	mov    %edi,%edi
40552d:	56                   	push   %esi
40552e:	33 f6                	xor    %esi,%esi
405530:	57                   	push   %edi
405531:	66 8b fa             	mov    %dx,%di
405534:	85 c9                	test   %ecx,%ecx
405536:	75 04                	jne    0x40553c
405538:	33 c0                	xor    %eax,%eax
40553a:	eb 28                	jmp    0x405564
40553c:	0f b7 01             	movzwl (%ecx),%eax
40553f:	66 85 c0             	test   %ax,%ax
405542:	74 1e                	je     0x405562
405544:	8b d0                	mov    %eax,%edx
405546:	66 3b d7             	cmp    %di,%dx
405549:	74 15                	je     0x405560
40554b:	51                   	push   %ecx
40554c:	ff 15 f0 61 41 00    	call   *0x4161f0
405552:	8b c8                	mov    %eax,%ecx
405554:	0f b7 01             	movzwl (%ecx),%eax
405557:	8b d0                	mov    %eax,%edx
405559:	66 85 c0             	test   %ax,%ax
40555c:	75 e8                	jne    0x405546
40555e:	eb 02                	jmp    0x405562
405560:	8b f1                	mov    %ecx,%esi
405562:	8b c6                	mov    %esi,%eax
405564:	5f                   	pop    %edi
405565:	5e                   	pop    %esi
405566:	c3                   	ret
405567:	8b ff                	mov    %edi,%edi
405569:	56                   	push   %esi
40556a:	8b f1                	mov    %ecx,%esi
40556c:	8b 16                	mov    (%esi),%edx
40556e:	0f b7 0a             	movzwl (%edx),%ecx
405571:	8b c1                	mov    %ecx,%eax
405573:	83 f8 09             	cmp    $0x9,%eax
405576:	72 1a                	jb     0x405592
405578:	83 f8 0a             	cmp    $0xa,%eax
40557b:	76 0a                	jbe    0x405587
40557d:	83 f8 0d             	cmp    $0xd,%eax
405580:	74 05                	je     0x405587
405582:	83 f9 20             	cmp    $0x20,%ecx
405585:	75 0b                	jne    0x405592
405587:	52                   	push   %edx
405588:	ff 15 f0 61 41 00    	call   *0x4161f0
40558e:	89 06                	mov    %eax,(%esi)
405590:	eb da                	jmp    0x40556c
405592:	5e                   	pop    %esi
405593:	c3                   	ret
405594:	8b ff                	mov    %edi,%edi
405596:	55                   	push   %ebp
405597:	8b ec                	mov    %esp,%ebp
405599:	51                   	push   %ecx
40559a:	51                   	push   %ecx
40559b:	53                   	push   %ebx
40559c:	56                   	push   %esi
40559d:	57                   	push   %edi
40559e:	8b f9                	mov    %ecx,%edi
4055a0:	e8 c2 ff ff ff       	call   0x405567
4055a5:	8b 1f                	mov    (%edi),%ebx
4055a7:	33 d2                	xor    %edx,%edx
4055a9:	0f b7 03             	movzwl (%ebx),%eax
4055ac:	66 3b d0             	cmp    %ax,%dx
4055af:	0f 84 2d 01 00 00    	je     0x4056e2
4055b5:	8b 75 08             	mov    0x8(%ebp),%esi
4055b8:	6a 27                	push   $0x27
4055ba:	8d 96 00 20 00 00    	lea    0x2000(%esi),%edx
4055c0:	89 55 fc             	mov    %edx,-0x4(%ebp)
4055c3:	5a                   	pop    %edx
4055c4:	66 3b d0             	cmp    %ax,%dx
4055c7:	0f 85 a8 00 00 00    	jne    0x405675
4055cd:	53                   	push   %ebx
4055ce:	ff 15 f0 61 41 00    	call   *0x4161f0
4055d4:	8b d0                	mov    %eax,%edx
4055d6:	33 db                	xor    %ebx,%ebx
4055d8:	89 17                	mov    %edx,(%edi)
4055da:	0f b7 0a             	movzwl (%edx),%ecx
4055dd:	8b c1                	mov    %ecx,%eax
4055df:	66 3b d9             	cmp    %cx,%bx
4055e2:	74 6e                	je     0x405652
4055e4:	6a 27                	push   $0x27
4055e6:	5b                   	pop    %ebx
4055e7:	66 3b d8             	cmp    %ax,%bx
4055ea:	75 0c                	jne    0x4055f8
4055ec:	52                   	push   %edx
4055ed:	ff 15 f0 61 41 00    	call   *0x4161f0
4055f3:	66 3b 18             	cmp    (%eax),%bx
4055f6:	75 5a                	jne    0x405652
4055f8:	8b 1f                	mov    (%edi),%ebx
4055fa:	6a 27                	push   $0x27
4055fc:	58                   	pop    %eax
4055fd:	66 3b 03             	cmp    (%ebx),%ax
405600:	75 0b                	jne    0x40560d
405602:	53                   	push   %ebx
405603:	ff 15 f0 61 41 00    	call   *0x4161f0
405609:	8b d8                	mov    %eax,%ebx
40560b:	89 1f                	mov    %ebx,(%edi)
40560d:	53                   	push   %ebx
40560e:	ff 15 f0 61 41 00    	call   *0x4161f0
405614:	8b d0                	mov    %eax,%edx
405616:	8b ca                	mov    %edx,%ecx
405618:	89 17                	mov    %edx,(%edi)
40561a:	2b cb                	sub    %ebx,%ecx
40561c:	d1 f9                	sar    $1,%ecx
40561e:	8d 41 01             	lea    0x1(%ecx),%eax
405621:	8d 04 46             	lea    (%esi,%eax,2),%eax
405624:	3b 45 fc             	cmp    -0x4(%ebp),%eax
405627:	0f 83 b5 00 00 00    	jae    0x4056e2
40562d:	85 c9                	test   %ecx,%ecx
40562f:	7e 13                	jle    0x405644
405631:	2b de                	sub    %esi,%ebx
405633:	66 8b 04 33          	mov    (%ebx,%esi,1),%ax
405637:	66 89 06             	mov    %ax,(%esi)
40563a:	83 c6 02             	add    $0x2,%esi
40563d:	83 e9 01             	sub    $0x1,%ecx
405640:	75 f1                	jne    0x405633
405642:	8b 17                	mov    (%edi),%edx
405644:	0f b7 02             	movzwl (%edx),%eax
405647:	33 db                	xor    %ebx,%ebx
405649:	8b c8                	mov    %eax,%ecx
40564b:	66 3b d8             	cmp    %ax,%bx
40564e:	74 02                	je     0x405652
405650:	eb 92                	jmp    0x4055e4
405652:	8b 07                	mov    (%edi),%eax
405654:	33 c9                	xor    %ecx,%ecx
405656:	66 3b 08             	cmp    (%eax),%cx
405659:	0f 84 83 00 00 00    	je     0x4056e2
40565f:	3b 75 fc             	cmp    -0x4(%ebp),%esi
405662:	73 7e                	jae    0x4056e2
405664:	33 c0                	xor    %eax,%eax
405666:	66 89 06             	mov    %ax,(%esi)
405669:	ff 37                	push   (%edi)
40566b:	ff 15 f0 61 41 00    	call   *0x4161f0
405671:	89 07                	mov    %eax,(%edi)
405673:	eb 69                	jmp    0x4056de
405675:	0f b7 c0             	movzwl %ax,%eax
405678:	83 f8 09             	cmp    $0x9,%eax
40567b:	72 0f                	jb     0x40568c
40567d:	83 f8 0a             	cmp    $0xa,%eax
405680:	76 52                	jbe    0x4056d4
405682:	83 f8 0d             	cmp    $0xd,%eax
405685:	74 4d                	je     0x4056d4
405687:	83 f8 20             	cmp    $0x20,%eax
40568a:	74 48                	je     0x4056d4
40568c:	53                   	push   %ebx
40568d:	ff 15 f0 61 41 00    	call   *0x4161f0
405693:	8b d0                	mov    %eax,%edx
405695:	89 45 f8             	mov    %eax,-0x8(%ebp)
405698:	2b d3                	sub    %ebx,%edx
40569a:	89 07                	mov    %eax,(%edi)
40569c:	d1 fa                	sar    $1,%edx
40569e:	8d 4a 01             	lea    0x1(%edx),%ecx
4056a1:	8d 0c 4e             	lea    (%esi,%ecx,2),%ecx
4056a4:	3b 4d fc             	cmp    -0x4(%ebp),%ecx
4056a7:	73 39                	jae    0x4056e2
4056a9:	85 d2                	test   %edx,%edx
4056ab:	7e 16                	jle    0x4056c3
4056ad:	2b de                	sub    %esi,%ebx
4056af:	66 8b 04 33          	mov    (%ebx,%esi,1),%ax
4056b3:	66 89 06             	mov    %ax,(%esi)
4056b6:	83 c6 02             	add    $0x2,%esi
4056b9:	83 ea 01             	sub    $0x1,%edx
4056bc:	75 f1                	jne    0x4056af
4056be:	8b 07                	mov    (%edi),%eax
4056c0:	89 45 f8             	mov    %eax,-0x8(%ebp)
4056c3:	0f b7 00             	movzwl (%eax),%eax
4056c6:	33 d2                	xor    %edx,%edx
4056c8:	8b 5d f8             	mov    -0x8(%ebp),%ebx
4056cb:	8b c8                	mov    %eax,%ecx
4056cd:	66 3b d0             	cmp    %ax,%dx
4056d0:	74 02                	je     0x4056d4
4056d2:	eb a1                	jmp    0x405675
4056d4:	3b 75 fc             	cmp    -0x4(%ebp),%esi
4056d7:	73 09                	jae    0x4056e2
4056d9:	33 c0                	xor    %eax,%eax
4056db:	66 89 06             	mov    %ax,(%esi)
4056de:	33 c0                	xor    %eax,%eax
4056e0:	eb 05                	jmp    0x4056e7
4056e2:	b8 09 00 02 80       	mov    $0x80020009,%eax
4056e7:	5f                   	pop    %edi
4056e8:	5e                   	pop    %esi
4056e9:	5b                   	pop    %ebx
4056ea:	c9                   	leave
4056eb:	c2 04 00             	ret    $0x4
4056ee:	8b ff                	mov    %edi,%edi
4056f0:	55                   	push   %ebp
4056f1:	8b ec                	mov    %esp,%ebp
4056f3:	6a ff                	push   $0xffffffff
4056f5:	68 99 2b 41 00       	push   $0x412b99
4056fa:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
405700:	50                   	push   %eax
405701:	51                   	push   %ecx
405702:	b8 28 21 00 00       	mov    $0x2128,%eax
405707:	e8 b4 d3 00 00       	call   0x412ac0
40570c:	a1 f4 51 41 00       	mov    0x4151f4,%eax
405711:	33 c5                	xor    %ebp,%eax
405713:	89 45 ec             	mov    %eax,-0x14(%ebp)
405716:	53                   	push   %ebx
405717:	56                   	push   %esi
405718:	57                   	push   %edi
405719:	50                   	push   %eax
40571a:	8d 45 f4             	lea    -0xc(%ebp),%eax
40571d:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
405723:	89 65 f0             	mov    %esp,-0x10(%ebp)
405726:	8b f9                	mov    %ecx,%edi
405728:	89 bd d0 de ff ff    	mov    %edi,-0x2130(%ebp)
40572e:	8b 45 08             	mov    0x8(%ebp),%eax
405731:	89 85 dc de ff ff    	mov    %eax,-0x2124(%ebp)
405737:	8b 45 0c             	mov    0xc(%ebp),%eax
40573a:	89 85 e0 de ff ff    	mov    %eax,-0x2120(%ebp)
405740:	8b 45 10             	mov    0x10(%ebp),%eax
405743:	89 85 c8 de ff ff    	mov    %eax,-0x2138(%ebp)
405749:	8d 85 ec df ff ff    	lea    -0x2014(%ebp),%eax
40574f:	50                   	push   %eax