405534:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
405538:	8d 45 fc             	lea    -0x4(%ebp),%eax
40553b:	56                   	push   %esi
40553c:	57                   	push   %edi
40553d:	8b 7d 08             	mov    0x8(%ebp),%edi
405540:	50                   	push   %eax
405541:	ff 75 0c             	push   0xc(%ebp)
405544:	57                   	push   %edi
405545:	e8 6c 00 00 00       	call   0x4055b6
40554a:	8b f0                	mov    %eax,%esi
40554c:	85 f6                	test   %esi,%esi
40554e:	79 0f                	jns    0x40555f
405550:	68 50 d4 44 00       	push   $0x44d450
405555:	56                   	push   %esi
405556:	e8 d4 ab 03 00       	call   0x44012f
40555b:	59                   	pop    %ecx
40555c:	59                   	pop    %ecx
40555d:	eb 4d                	jmp    0x4055ac
40555f:	53                   	push   %ebx
405560:	8b 5d fc             	mov    -0x4(%ebp),%ebx
405563:	83 fe 01             	cmp    $0x1,%esi
405566:	75 1f                	jne    0x405587
405568:	53                   	push   %ebx
405569:	ff 75 0c             	push   0xc(%ebp)
40556c:	57                   	push   %edi
40556d:	e8 54 15 00 00       	call   0x406ac6
405572:	8b f0                	mov    %eax,%esi
405574:	85 f6                	test   %esi,%esi
405576:	79 0f                	jns    0x405587
405578:	68 70 d4 44 00       	push   $0x44d470
40557d:	56                   	push   %esi
40557e:	e8 ac ab 03 00       	call   0x44012f
405583:	59                   	pop    %ecx
405584:	59                   	pop    %ecx
405585:	eb 24                	jmp    0x4055ab
405587:	8b 45 18             	mov    0x18(%ebp),%eax
40558a:	6b cb 38             	imul   $0x38,%ebx,%ecx
40558d:	03 4f 20             	add    0x20(%edi),%ecx
405590:	89 41 28             	mov    %eax,0x28(%ecx)
405593:	33 c0                	xor    %eax,%eax
405595:	39 45 1c             	cmp    %eax,0x1c(%ebp)
405598:	0f 94 c0             	sete   %al
40559b:	40                   	inc    %eax
40559c:	89 41 2c             	mov    %eax,0x2c(%ecx)
40559f:	8b 45 10             	mov    0x10(%ebp),%eax
4055a2:	89 41 30             	mov    %eax,0x30(%ecx)
4055a5:	8b 45 14             	mov    0x14(%ebp),%eax
4055a8:	89 41 34             	mov    %eax,0x34(%ecx)
4055ab:	5b                   	pop    %ebx
4055ac:	5f                   	pop    %edi
4055ad:	8b c6                	mov    %esi,%eax
4055af:	5e                   	pop    %esi
4055b0:	8b e5                	mov    %ebp,%esp
4055b2:	5d                   	pop    %ebp
4055b3:	c2 18 00             	ret    $0x18
4055b6:	55                   	push   %ebp
4055b7:	8b ec                	mov    %esp,%ebp
4055b9:	51                   	push   %ecx
4055ba:	51                   	push   %ecx
4055bb:	8b 4d 08             	mov    0x8(%ebp),%ecx
4055be:	53                   	push   %ebx
4055bf:	56                   	push   %esi
4055c0:	57                   	push   %edi
4055c1:	8b 79 1c             	mov    0x1c(%ecx),%edi
4055c4:	33 f6                	xor    %esi,%esi
4055c6:	8b de                	mov    %esi,%ebx
4055c8:	85 ff                	test   %edi,%edi
4055ca:	0f 84 9a 00 00 00    	je     0x40566a
4055d0:	8b c7                	mov    %edi,%eax
4055d2:	d1 e8                	shr    $1,%eax
4055d4:	89 45 fc             	mov    %eax,-0x4(%ebp)
4055d7:	03 c3                	add    %ebx,%eax
4055d9:	89 45 f8             	mov    %eax,-0x8(%ebp)
4055dc:	6b c0 38             	imul   $0x38,%eax,%eax
4055df:	6a ff                	push   $0xffffffff
4055e1:	03 41 20             	add    0x20(%ecx),%eax
4055e4:	ff 30                	push   (%eax)
4055e6:	6a ff                	push   $0xffffffff
4055e8:	ff 75 0c             	push   0xc(%ebp)
4055eb:	68 00 10 00 00       	push   $0x1000
4055f0:	6a 7f                	push   $0x7f
4055f2:	ff 15 28 b1 44 00    	call   *0x44b128
4055f8:	83 e8 01             	sub    $0x1,%eax
4055fb:	74 18                	je     0x405615
4055fd:	83 e8 01             	sub    $0x1,%eax
405600:	74 5c                	je     0x40565e
405602:	83 e8 01             	sub    $0x1,%eax
405605:	75 1a                	jne    0x405621
405607:	8b 5d f8             	mov    -0x8(%ebp),%ebx
40560a:	83 c8 ff             	or     $0xffffffff,%eax
40560d:	2b 45 fc             	sub    -0x4(%ebp),%eax
405610:	43                   	inc    %ebx
405611:	03 f8                	add    %eax,%edi
405613:	eb 03                	jmp    0x405618
405615:	8b 7d fc             	mov    -0x4(%ebp),%edi
405618:	85 ff                	test   %edi,%edi
40561a:	74 4e                	je     0x40566a
40561c:	8b 4d 08             	mov    0x8(%ebp),%ecx
40561f:	eb af                	jmp    0x4055d0
405621:	ff 15 e8 b0 44 00    	call   *0x44b0e8
405627:	0f b7 f0             	movzwl %ax,%esi
40562a:	81 ce 00 00 07 80    	or     $0x80070000,%esi
405630:	85 c0                	test   %eax,%eax
405632:	0f 4e f0             	cmovle %eax,%esi
405635:	b8 05 40 00 80       	mov    $0x80004005,%eax
40563a:	85 f6                	test   %esi,%esi
40563c:	0f 49 f0             	cmovns %eax,%esi
40563f:	56                   	push   %esi
405640:	68 9f 05 00 00       	push   $0x59f
405645:	68 bc cc 44 00       	push   $0x44ccbc
40564a:	e8 84 e1 ff ff       	call   0x4037d3
40564f:	68 c0 d4 44 00       	push   $0x44d4c0
405654:	56                   	push   %esi
405655:	e8 d5 aa 03 00       	call   0x44012f
40565a:	59                   	pop    %ecx
40565b:	59                   	pop    %ecx
40565c:	eb 14                	jmp    0x405672
40565e:	8b 45 10             	mov    0x10(%ebp),%eax
405661:	8b 4d fc             	mov    -0x4(%ebp),%ecx
405664:	03 cb                	add    %ebx,%ecx
405666:	89 08                	mov    %ecx,(%eax)
405668:	eb 08                	jmp    0x405672
40566a:	8b 45 10             	mov    0x10(%ebp),%eax
40566d:	33 f6                	xor    %esi,%esi
40566f:	46                   	inc    %esi
405670:	89 18                	mov    %ebx,(%eax)
405672:	5f                   	pop    %edi
405673:	8b c6                	mov    %esi,%eax
405675:	5e                   	pop    %esi
405676:	5b                   	pop    %ebx
405677:	8b e5                	mov    %ebp,%esp
405679:	5d                   	pop    %ebp
40567a:	c2 0c 00             	ret    $0xc
40567d:	55                   	push   %ebp
40567e:	8b ec                	mov    %esp,%ebp
405680:	83 ec 24             	sub    $0x24,%esp
405683:	53                   	push   %ebx
405684:	33 c0                	xor    %eax,%eax
405686:	56                   	push   %esi
405687:	57                   	push   %edi
405688:	ff 75 08             	push   0x8(%ebp)
40568b:	8b d8                	mov    %eax,%ebx
40568d:	89 45 f4             	mov    %eax,-0xc(%ebp)
405690:	89 45 f8             	mov    %eax,-0x8(%ebp)
405693:	89 45 ec             	mov    %eax,-0x14(%ebp)
405696:	89 5d fc             	mov    %ebx,-0x4(%ebp)
405699:	89 45 f0             	mov    %eax,-0x10(%ebp)
40569c:	89 45 e0             	mov    %eax,-0x20(%ebp)
40569f:	89 45 e4             	mov    %eax,-0x1c(%ebp)
4056a2:	ff 15 b4 b1 44 00    	call   *0x44b1b4
4056a8:	8b 7d 0c             	mov    0xc(%ebp),%edi
4056ab:	57                   	push   %edi
4056ac:	ff 15 f8 b0 44 00    	call   *0x44b0f8
4056b2:	40                   	inc    %eax
4056b3:	50                   	push   %eax
4056b4:	8d 45 f4             	lea    -0xc(%ebp),%eax
4056b7:	50                   	push   %eax
4056b8:	e8 21 c8 ff ff       	call   0x401ede
4056bd:	8b f0                	mov    %eax,%esi
4056bf:	89 75 0c             	mov    %esi,0xc(%ebp)
4056c2:	85 f6                	test   %esi,%esi
4056c4:	0f 89 e7 01 00 00    	jns    0x4058b1
4056ca:	68 5c d2 44 00       	push   $0x44d25c
4056cf:	56                   	push   %esi
4056d0:	e8 5a aa 03 00       	call   0x44012f
4056d5:	59                   	pop    %ecx
4056d6:	59                   	pop    %ecx
4056d7:	e9 77 04 00 00       	jmp    0x405b53
4056dc:	8d 43 02             	lea    0x2(%ebx),%eax
4056df:	6a 5d                	push   $0x5d
4056e1:	50                   	push   %eax
4056e2:	e8 e3 a0 02 00       	call   0x42f7ca
4056e7:	89 45 dc             	mov    %eax,-0x24(%ebp)
4056ea:	59                   	pop    %ecx
4056eb:	59                   	pop    %ecx
4056ec:	85 c0                	test   %eax,%eax
4056ee:	0f 84 d1 01 00 00    	je     0x4058c5
4056f4:	8b c8                	mov    %eax,%ecx
4056f6:	2b cb                	sub    %ebx,%ecx
4056f8:	d1 f9                	sar    $1,%ecx
4056fa:	83 e9 01             	sub    $0x1,%ecx
4056fd:	89 4d f0             	mov    %ecx,-0x10(%ebp)
405700:	75 38                	jne    0x40573a
405702:	2b c7                	sub    %edi,%eax
405704:	d1 f8                	sar    $1,%eax
405706:	40                   	inc    %eax
405707:	50                   	push   %eax
405708:	57                   	push   %edi
405709:	8d 45 f4             	lea    -0xc(%ebp),%eax
40570c:	50                   	push   %eax
40570d:	33 c0                	xor    %eax,%eax
40570f:	39 45 18             	cmp    %eax,0x18(%ebp)
405712:	0f 94 c0             	sete   %al
405715:	50                   	push   %eax
405716:	e8 23 2b 00 00       	call   0x40823e
40571b:	8b f0                	mov    %eax,%esi
40571d:	89 75 0c             	mov    %esi,0xc(%ebp)
405720:	85 f6                	test   %esi,%esi
405722:	0f 89 83 01 00 00    	jns    0x4058ab
405728:	68 8c d2 44 00       	push   $0x44d28c
40572d:	56                   	push   %esi
40572e:	e8 fc a9 03 00       	call   0x44012f
405733:	59                   	pop    %ecx
405734:	59                   	pop    %ecx
405735:	e9 16 04 00 00       	jmp    0x405b50
40573a:	3b df                	cmp    %edi,%ebx
40573c:	76 26                	jbe    0x405764
40573e:	8b c3                	mov    %ebx,%eax
405740:	2b c7                	sub    %edi,%eax
405742:	d1 f8                	sar    $1,%eax
405744:	50                   	push   %eax
405745:	57                   	push   %edi
405746:	8d 45 f4             	lea    -0xc(%ebp),%eax
405749:	50                   	push   %eax
40574a:	33 c0                	xor    %eax,%eax
40574c:	39 45 18             	cmp    %eax,0x18(%ebp)
40574f:	0f 94 c0             	sete   %al
405752:	50                   	push   %eax
405753:	e8 e6 2a 00 00       	call   0x40823e
405758:	8b f0                	mov    %eax,%esi
40575a:	89 75 0c             	mov    %esi,0xc(%ebp)
40575d:	85 f6                	test   %esi,%esi
40575f:	78 c7                	js     0x405728
405761:	8b 4d f0             	mov    -0x10(%ebp),%ecx
405764:	51                   	push   %ecx
405765:	33 c0                	xor    %eax,%eax
405767:	8d 4b 02             	lea    0x2(%ebx),%ecx
40576a:	39 45 18             	cmp    %eax,0x18(%ebp)
40576d:	51                   	push   %ecx
40576e:	8d 4d f8             	lea    -0x8(%ebp),%ecx
405771:	0f 94 c0             	sete   %al
405774:	51                   	push   %ecx
405775:	50                   	push   %eax
405776:	89 45 e8             	mov    %eax,-0x18(%ebp)
405779:	e8 03 2b 00 00       	call   0x408281
40577e:	8b f0                	mov    %eax,%esi
405780:	89 75 0c             	mov    %esi,0xc(%ebp)
405783:	85 f6                	test   %esi,%esi
405785:	0f 88 0d 02 00 00    	js     0x405998
40578b:	8b 45 fc             	mov    -0x4(%ebp),%eax
40578e:	8b 4d ec             	mov    -0x14(%ebp),%ecx
405791:	6a 01                	push   $0x1
405793:	8d 04 85 04 00 00 00 	lea    0x4(,%eax,4),%eax
40579a:	50                   	push   %eax
40579b:	85 c9                	test   %ecx,%ecx
40579d:	74 15                	je     0x4057b4
40579f:	51                   	push   %ecx
4057a0:	e8 cd e2 ff ff       	call   0x403a72
4057a5:	85 c0                	test   %eax,%eax
4057a7:	0f 84 71 01 00 00    	je     0x40591e
4057ad:	8b f8                	mov    %eax,%edi
4057af:	89 7d ec             	mov    %edi,-0x14(%ebp)
4057b2:	eb 12                	jmp    0x4057c6
4057b4:	e8 1b e1 ff ff       	call   0x4038d4
4057b9:	8b f8                	mov    %eax,%edi
4057bb:	89 7d ec             	mov    %edi,-0x14(%ebp)
4057be:	85 ff                	test   %edi,%edi
4057c0:	0f 84 b1 01 00 00    	je     0x405977
4057c6:	83 7d f0 02          	cmpl   $0x2,-0x10(%ebp)
4057ca:	72 26                	jb     0x4057f2
4057cc:	6a 5c                	push   $0x5c
4057ce:	59                   	pop    %ecx
4057cf:	66 3b 4b 02          	cmp    0x2(%ebx),%cx
4057d3:	75 1d                	jne    0x4057f2
4057d5:	8d 43 04             	lea    0x4(%ebx),%eax
4057d8:	8b 5d fc             	mov    -0x4(%ebp),%ebx
4057db:	6a 01                	push   $0x1
4057dd:	50                   	push   %eax
4057de:	8d 04 9f             	lea    (%edi,%ebx,4),%eax
4057e1:	8b 7d e8             	mov    -0x18(%ebp),%edi
4057e4:	50                   	push   %eax
4057e5:	57                   	push   %edi
4057e6:	e8 96 2a 00 00       	call   0x408281
4057eb:	8b f0                	mov    %eax,%esi
4057ed:	89 75 0c             	mov    %esi,0xc(%ebp)
4057f0:	eb 70                	jmp    0x405862
4057f2:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
4057f6:	74 1c                	je     0x405814
4057f8:	8d 45 e0             	lea    -0x20(%ebp),%eax
4057fb:	50                   	push   %eax
4057fc:	ff 75 f8             	push   -0x8(%ebp)
4057ff:	ff 75 08             	push   0x8(%ebp)
405802:	e8 0c 26 00 00       	call   0x407e13
405807:	8b f0                	mov    %eax,%esi
405809:	89 75 0c             	mov    %esi,0xc(%ebp)
40580c:	85 f6                	test   %esi,%esi
40580e:	0f 88 2f 01 00 00    	js     0x405943
405814:	83 7d e0 00          	cmpl   $0x0,-0x20(%ebp)
405818:	8b 5d fc             	mov    -0x4(%ebp),%ebx
40581b:	74 13                	je     0x405830
40581d:	33 c0                	xor    %eax,%eax
40581f:	50                   	push   %eax
405820:	68 84 ce 44 00       	push   $0x44ce84
405825:	8d 04 9f             	lea    (%edi,%ebx,4),%eax
405828:	50                   	push   %eax
405829:	e8 77 c9 ff ff       	call   0x4021a5
40582e:	eb 2a                	jmp    0x40585a
405830:	8d 3c 9f             	lea    (%edi,%ebx,4),%edi
405833:	57                   	push   %edi
405834:	ff 75 f8             	push   -0x8(%ebp)
405837:	ff 75 08             	push   0x8(%ebp)
40583a:	e8 c4 19 00 00       	call   0x407203
40583f:	8b f0                	mov    %eax,%esi
405841:	89 75 0c             	mov    %esi,0xc(%ebp)
405844:	81 fe 90 04 07 80    	cmp    $0x80070490,%esi
40584a:	75 13                	jne    0x40585f
40584c:	33 c0                	xor    %eax,%eax
40584e:	50                   	push   %eax
40584f:	68 24 b5 44 00       	push   $0x44b524
405854:	57                   	push   %edi
405855:	e8 9f ca ff ff       	call   0x4022f9
40585a:	8b f0                	mov    %eax,%esi
40585c:	89 75 0c             	mov    %esi,0xc(%ebp)
40585f:	8b 7d e8             	mov    -0x18(%ebp),%edi
405862:	85 f6                	test   %esi,%esi
405864:	0f 88 03 01 00 00    	js     0x40596d
40586a:	43                   	inc    %ebx
40586b:	8d 45 f8             	lea    -0x8(%ebp),%eax
40586e:	53                   	push   %ebx
40586f:	68 44 d3 44 00       	push   $0x44d344
405874:	50                   	push   %eax
405875:	57                   	push   %edi
405876:	89 5d fc             	mov    %ebx,-0x4(%ebp)
405879:	e8 e2 29 00 00       	call   0x408260
40587e:	8b f0                	mov    %eax,%esi
405880:	83 c4 10             	add    $0x10,%esp
405883:	89 75 0c             	mov    %esi,0xc(%ebp)
405886:	85 f6                	test   %esi,%esi
405888:	0f 88 d5 00 00 00    	js     0x405963
40588e:	33 c0                	xor    %eax,%eax
405890:	50                   	push   %eax
405891:	ff 75 f8             	push   -0x8(%ebp)
405894:	8d 45 f4             	lea    -0xc(%ebp),%eax
405897:	50                   	push   %eax
405898:	57                   	push   %edi
405899:	e8 a0 29 00 00       	call   0x40823e
40589e:	8b f0                	mov    %eax,%esi
4058a0:	89 75 0c             	mov    %esi,0xc(%ebp)
4058a3:	85 f6                	test   %esi,%esi
4058a5:	0f 88 ae 00 00 00    	js     0x405959
4058ab:	8b 7d dc             	mov    -0x24(%ebp),%edi
4058ae:	83 c7 02             	add    $0x2,%edi
4058b1:	6a 5b                	push   $0x5b
4058b3:	57                   	push   %edi
4058b4:	e8 11 9f 02 00       	call   0x42f7ca
4058b9:	8b d8                	mov    %eax,%ebx
4058bb:	59                   	pop    %ecx
4058bc:	59                   	pop    %ecx
4058bd:	85 db                	test   %ebx,%ebx
4058bf:	0f 85 17 fe ff ff    	jne    0x4056dc