40548d:	8d 8c 24 64 02 00 00 	lea    0x264(%esp),%ecx
405494:	83 c4 0c             	add    $0xc,%esp
405497:	bb e3 7e 00 00       	mov    $0x7ee3,%ebx
40549c:	38 84 24 64 04 00 00 	cmp    %al,0x464(%esp)
4054a3:	0f 94 c0             	sete   %al
4054a6:	48                   	dec    %eax
4054a7:	23 c3                	and    %ebx,%eax
4054a9:	03 c6                	add    %esi,%eax
4054ab:	50                   	push   %eax
4054ac:	e8 3f 8f 00 00       	call   0x40e3f0
4054b1:	85 c0                	test   %eax,%eax
4054b3:	0f 88 fa 41 01 00    	js     0x4196b3
4054b9:	33 c0                	xor    %eax,%eax
4054bb:	8d 4c 24 40          	lea    0x40(%esp),%ecx
4054bf:	38 84 24 4c 02 00 00 	cmp    %al,0x24c(%esp)
4054c6:	0f 94 c0             	sete   %al
4054c9:	48                   	dec    %eax
4054ca:	23 c3                	and    %ebx,%eax
4054cc:	03 c6                	add    %esi,%eax
4054ce:	50                   	push   %eax
4054cf:	e8 1c 8f 00 00       	call   0x40e3f0
4054d4:	85 c0                	test   %eax,%eax
4054d6:	0f 88 d7 41 01 00    	js     0x4196b3
4054dc:	8b cf                	mov    %edi,%ecx
4054de:	e8 46 04 00 00       	call   0x405929
4054e3:	6a 2a                	push   $0x2a
4054e5:	8b d8                	mov    %eax,%ebx
4054e7:	8b f7                	mov    %edi,%esi
4054e9:	58                   	pop    %eax
4054ea:	6a 3f                	push   $0x3f
4054ec:	66 89 84 24 90 06 00 	mov    %ax,0x690(%esp)
4054f3:	00
4054f4:	58                   	pop    %eax
4054f5:	66 89 84 24 8e 06 00 	mov    %ax,0x68e(%esp)
4054fc:	00
4054fd:	8d 4e 02             	lea    0x2(%esi),%ecx
405500:	33 c0                	xor    %eax,%eax
405502:	6a 02                	push   $0x2
405504:	66 89 84 24 94 06 00 	mov    %ax,0x694(%esp)
40550b:	00
40550c:	5a                   	pop    %edx
40550d:	66 8b 06             	mov    (%esi),%ax
405510:	03 f2                	add    %edx,%esi
405512:	66 3b 44 24 2c       	cmp    0x2c(%esp),%ax
405517:	75 f4                	jne    0x40550d
405519:	2b f1                	sub    %ecx,%esi
40551b:	8d 94 24 8c 06 00 00 	lea    0x68c(%esp),%edx
405522:	8b cf                	mov    %edi,%ecx
405524:	d1 fe                	sar    $1,%esi
405526:	e8 8f 49 00 00       	call   0x409eba
40552b:	3b c6                	cmp    %esi,%eax
40552d:	1b f6                	sbb    %esi,%esi
40552f:	f7 de                	neg    %esi
405531:	89 74 24 34          	mov    %esi,0x34(%esp)
405535:	83 fb ff             	cmp    $0xffffffff,%ebx
405538:	0f 84 31 41 01 00    	je     0x41966f
40553e:	83 fb 01             	cmp    $0x1,%ebx
405541:	0f 8f df 41 01 00    	jg     0x419726
405547:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
40554b:	0f 85 9f 03 00 00    	jne    0x4058f0
405551:	6a 02                	push   $0x2
405553:	5b                   	pop    %ebx
405554:	88 5c 24 12          	mov    %bl,0x12(%esp)
405558:	c6 44 24 13 01       	movb   $0x1,0x13(%esp)
40555d:	6a 20                	push   $0x20
40555f:	58                   	pop    %eax
405560:	8d 4c 24 1c          	lea    0x1c(%esp),%ecx
405564:	89 44 24 38          	mov    %eax,0x38(%esp)
405568:	51                   	push   %ecx
405569:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
40556d:	8b d7                	mov    %edi,%edx
40556f:	ff 71 18             	push   0x18(%ecx)
405572:	33 c9                	xor    %ecx,%ecx
405574:	51                   	push   %ecx
405575:	50                   	push   %eax
405576:	b9 d0 59 41 00       	mov    $0x4159d0,%ecx
40557b:	e8 1a 03 01 00       	call   0x41589a
405580:	84 c0                	test   %al,%al
405582:	0f 84 c1 41 01 00    	je     0x419749
405588:	33 c9                	xor    %ecx,%ecx
40558a:	89 4c 24 24          	mov    %ecx,0x24(%esp)
40558e:	89 4c 24 14          	mov    %ecx,0x14(%esp)
405592:	8d 8c 24 58 02 00 00 	lea    0x258(%esp),%ecx
405599:	57                   	push   %edi
40559a:	e8 a2 50 00 00       	call   0x40a641
40559f:	8b 8c 24 60 04 00 00 	mov    0x460(%esp),%ecx
4055a6:	85 c9                	test   %ecx,%ecx
4055a8:	0f 84 e7 41 01 00    	je     0x419795
4055ae:	6a 5c                	push   $0x5c
4055b0:	5a                   	pop    %edx
4055b1:	e8 3f ac 00 00       	call   0x4101f5
4055b6:	8d 34 03             	lea    (%ebx,%eax,1),%esi
4055b9:	89 74 24 3c          	mov    %esi,0x3c(%esp)
4055bd:	83 3d 9c 25 43 00 00 	cmpl   $0x0,0x43259c
4055c4:	0f 85 de 43 01 00    	jne    0x4199a8
4055ca:	8b 8c 24 60 04 00 00 	mov    0x460(%esp),%ecx
4055d1:	85 c9                	test   %ecx,%ecx
4055d3:	0f 84 c8 41 01 00    	je     0x4197a1
4055d9:	8b 7c 24 18          	mov    0x18(%esp),%edi
4055dd:	8b 94 24 68 04 00 00 	mov    0x468(%esp),%edx
4055e4:	8b 47 18             	mov    0x18(%edi),%eax
4055e7:	83 c0 2c             	add    $0x2c,%eax
4055ea:	50                   	push   %eax
4055eb:	8b c6                	mov    %esi,%eax
4055ed:	2b c1                	sub    %ecx,%eax
4055ef:	8b ce                	mov    %esi,%ecx
4055f1:	d1 f8                	sar    $1,%eax
4055f3:	2b d0                	sub    %eax,%edx
4055f5:	e8 a6 9d 00 00       	call   0x40f3a0
4055fa:	ff 74 24 28          	push   0x28(%esp)
4055fe:	8d 4c 24 44          	lea    0x44(%esp),%ecx
405602:	e8 3a 50 00 00       	call   0x40a641
405607:	80 7c 24 12 01       	cmpb   $0x1,0x12(%esp)
40560c:	0f 84 69 02 00 00    	je     0x40587b
405612:	33 c0                	xor    %eax,%eax
405614:	c6 84 24 7c 06 00 00 	movb   $0x1,0x67c(%esp)
40561b:	01
40561c:	be 04 01 00 00       	mov    $0x104,%esi
405621:	89 84 24 78 06 00 00 	mov    %eax,0x678(%esp)
405628:	56                   	push   %esi
405629:	50                   	push   %eax
40562a:	8d 84 24 78 04 00 00 	lea    0x478(%esp),%eax
405631:	89 b4 24 88 06 00 00 	mov    %esi,0x688(%esp)
405638:	50                   	push   %eax
405639:	e8 7f 29 01 00       	call   0x417fbd
40563e:	33 c0                	xor    %eax,%eax
405640:	8d 8c 24 7c 04 00 00 	lea    0x47c(%esp),%ecx
405647:	83 c4 0c             	add    $0xc,%esp
40564a:	38 84 24 7c 06 00 00 	cmp    %al,0x67c(%esp)
405651:	0f 94 c0             	sete   %al
405654:	48                   	dec    %eax
405655:	25 e3 7e 00 00       	and    $0x7ee3,%eax
40565a:	03 c6                	add    %esi,%eax
40565c:	50                   	push   %eax
40565d:	e8 8e 8d 00 00       	call   0x40e3f0
405662:	85 c0                	test   %eax,%eax
405664:	0f 88 55 41 01 00    	js     0x4197bf
40566a:	8b 8c 24 78 06 00 00 	mov    0x678(%esp),%ecx
405671:	85 c9                	test   %ecx,%ecx
405673:	0f 84 72 41 01 00    	je     0x4197eb
405679:	8b 84 24 48 02 00 00 	mov    0x248(%esp),%eax
405680:	85 c0                	test   %eax,%eax
405682:	0f 84 6f 41 01 00    	je     0x4197f7
405688:	33 f6                	xor    %esi,%esi
40568a:	56                   	push   %esi
40568b:	51                   	push   %ecx
40568c:	ff b4 24 58 02 00 00 	push   0x258(%esp)
405693:	50                   	push   %eax
405694:	ff 15 a4 a0 44 00    	call   *0x44a0a4
40569a:	85 c0                	test   %eax,%eax
40569c:	0f 84 fa 41 01 00    	je     0x41989c
4056a2:	3d e7 7f 00 00       	cmp    $0x7fe7,%eax
4056a7:	0f 83 ef 41 01 00    	jae    0x41989c
4056ad:	8b 8c 24 78 06 00 00 	mov    0x678(%esp),%ecx
4056b4:	8b f9                	mov    %ecx,%edi
4056b6:	85 c9                	test   %ecx,%ecx
4056b8:	0f 84 42 41 01 00    	je     0x419800
4056be:	8d 57 02             	lea    0x2(%edi),%edx
4056c1:	66 8b 07             	mov    (%edi),%ax
4056c4:	03 fb                	add    %ebx,%edi
4056c6:	66 3b c6             	cmp    %si,%ax
4056c9:	75 f6                	jne    0x4056c1
4056cb:	2b fa                	sub    %edx,%edi
4056cd:	d1 ff                	sar    $1,%edi
4056cf:	85 c9                	test   %ecx,%ecx
4056d1:	0f 84 35 41 01 00    	je     0x41980c
4056d7:	8b 84 24 60 04 00 00 	mov    0x460(%esp),%eax
4056de:	85 c0                	test   %eax,%eax
4056e0:	0f 84 32 41 01 00    	je     0x419818
4056e6:	56                   	push   %esi
4056e7:	51                   	push   %ecx
4056e8:	ff b4 24 70 04 00 00 	push   0x470(%esp)
4056ef:	50                   	push   %eax
4056f0:	ff 15 a4 a0 44 00    	call   *0x44a0a4
4056f6:	85 c0                	test   %eax,%eax
4056f8:	0f 84 9e 41 01 00    	je     0x41989c
4056fe:	3d e7 7f 00 00       	cmp    $0x7fe7,%eax
405703:	0f 83 93 41 01 00    	jae    0x41989c
405709:	8b 8c 24 78 06 00 00 	mov    0x678(%esp),%ecx
405710:	85 c9                	test   %ecx,%ecx
405712:	0f 84 0c 41 01 00    	je     0x419824
405718:	8b 94 24 80 06 00 00 	mov    0x680(%esp),%edx
40571f:	8d 44 24 20          	lea    0x20(%esp),%eax
405723:	50                   	push   %eax
405724:	e8 05 fc ff ff       	call   0x40532e
405729:	85 c0                	test   %eax,%eax
40572b:	0f 84 ff 40 01 00    	je     0x419830
405731:	8b 94 24 78 06 00 00 	mov    0x678(%esp),%edx
405738:	8b ca                	mov    %edx,%ecx
40573a:	85 d2                	test   %edx,%edx
40573c:	0f 84 32 41 01 00    	je     0x419874
405742:	8d 71 02             	lea    0x2(%ecx),%esi
405745:	66 8b 01             	mov    (%ecx),%ax
405748:	03 cb                	add    %ebx,%ecx
40574a:	66 3b 44 24 2c       	cmp    0x2c(%esp),%ax
40574f:	75 f4                	jne    0x405745
405751:	2b ce                	sub    %esi,%ecx
405753:	33 c0                	xor    %eax,%eax
405755:	8b 74 24 20          	mov    0x20(%esp),%esi
405759:	d1 f9                	sar    $1,%ecx
40575b:	2b f1                	sub    %ecx,%esi
40575d:	89 84 24 78 06 00 00 	mov    %eax,0x678(%esp)
405764:	89 74 24 20          	mov    %esi,0x20(%esp)
405768:	85 d2                	test   %edx,%edx
40576a:	74 08                	je     0x405774
40576c:	52                   	push   %edx
40576d:	ff 15 e0 a3 44 00    	call   *0x44a3e0
405773:	59                   	pop    %ecx
405774:	8d 04 3e             	lea    (%esi,%edi,1),%eax
405777:	3d e7 7f 00 00       	cmp    $0x7fe7,%eax
40577c:	0f 87 fe 40 01 00    	ja     0x419880
405782:	8b 94 24 48 02 00 00 	mov    0x248(%esp),%edx
405789:	85 d2                	test   %edx,%edx
40578b:	0f 84 f6 40 01 00    	je     0x419887
405791:	8b 8c 24 60 04 00 00 	mov    0x460(%esp),%ecx
405798:	85 c9                	test   %ecx,%ecx
40579a:	0f 84 f0 40 01 00    	je     0x419890
4057a0:	8d 44 24 30          	lea    0x30(%esp),%eax
4057a4:	50                   	push   %eax
4057a5:	8d 45 08             	lea    0x8(%ebp),%eax
4057a8:	50                   	push   %eax
4057a9:	e8 1d fc ff ff       	call   0x4053cb
4057ae:	85 c0                	test   %eax,%eax
4057b0:	0f 84 00 41 01 00    	je     0x4198b6
4057b6:	83 7c 24 30 00       	cmpl   $0x0,0x30(%esp)
4057bb:	74 0f                	je     0x4057cc
4057bd:	ff 44 24 24          	incl   0x24(%esp)
4057c1:	83 7c 24 34 00       	cmpl   $0x0,0x34(%esp)
4057c6:	0f 85 31 01 00 00    	jne    0x4058fd
4057cc:	80 7c 24 13 00       	cmpb   $0x0,0x13(%esp)
4057d1:	0f 84 73 40 01 00    	je     0x41984a
4057d7:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
4057db:	e8 6d 33 00 00       	call   0x408b4d
4057e0:	e8 83 0c 00 00       	call   0x406468
4057e5:	8b 4c 24 18          	mov    0x18(%esp),%ecx
4057e9:	be 30 8e 44 00       	mov    $0x448e30,%esi
4057ee:	8b 41 18             	mov    0x18(%ecx),%eax
4057f1:	8b 18                	mov    (%eax),%ebx
4057f3:	8b 44 24 24          	mov    0x24(%esp),%eax
4057f7:	50                   	push   %eax
4057f8:	68 94 1f 40 00       	push   $0x401f94
4057fd:	68 04 01 00 00       	push   $0x104
405802:	56                   	push   %esi
405803:	e8 b7 42 00 00       	call   0x409abf
405808:	80 e3 10             	and    $0x10,%bl
40580b:	0f b6 c3             	movzbl %bl,%eax
40580e:	f7 d8                	neg    %eax
405810:	56                   	push   %esi
405811:	1b c0                	sbb    %eax,%eax
405813:	05 6e 23 00 00       	add    $0x236e,%eax
405818:	6a 01                	push   $0x1
40581a:	50                   	push   %eax
40581b:	e8 9d 0b 00 00       	call   0x4063bd
405820:	8b 84 24 64 02 00 00 	mov    0x264(%esp),%eax
405827:	33 db                	xor    %ebx,%ebx
405829:	83 c4 1c             	add    $0x1c,%esp
40582c:	39 5c 24 14          	cmp    %ebx,0x14(%esp)
405830:	0f 95 c3             	setne  %bl
405833:	33 f6                	xor    %esi,%esi
405835:	89 b4 24 48 02 00 00 	mov    %esi,0x248(%esp)
40583c:	85 c0                	test   %eax,%eax
40583e:	74 08                	je     0x405848
405840:	50                   	push   %eax
405841:	ff 15 e0 a3 44 00    	call   *0x44a3e0
405847:	59                   	pop    %ecx
405848:	8b 84 24 60 04 00 00 	mov    0x460(%esp),%eax
40584f:	89 b4 24 60 04 00 00 	mov    %esi,0x460(%esp)
405856:	85 c0                	test   %eax,%eax
405858:	74 08                	je     0x405862
40585a:	50                   	push   %eax
40585b:	ff 15 e0 a3 44 00    	call   *0x44a3e0
405861:	59                   	pop    %ecx
405862:	8b c3                	mov    %ebx,%eax
405864:	8b 8c 24 94 06 00 00 	mov    0x694(%esp),%ecx
40586b:	5f                   	pop    %edi
40586c:	5e                   	pop    %esi
40586d:	5b                   	pop    %ebx
40586e:	33 cc                	xor    %esp,%ecx
405870:	e8 bb 12 01 00       	call   0x416b30
405875:	8b e5                	mov    %ebp,%esp
405877:	5d                   	pop    %ebp
405878:	c2 0c 00             	ret    $0xc
40587b:	8b 8c 24 48 02 00 00 	mov    0x248(%esp),%ecx
405882:	85 c9                	test   %ecx,%ecx
405884:	0f 84 23 3f 01 00    	je     0x4197ad
40588a:	6a 5c                	push   $0x5c
40588c:	5a                   	pop    %edx
40588d:	e8 63 a9 00 00       	call   0x4101f5
405892:	8b 8c 24 48 02 00 00 	mov    0x248(%esp),%ecx
405899:	8d 34 03             	lea    (%ebx,%eax,1),%esi
40589c:	85 c9                	test   %ecx,%ecx
40589e:	0f 84 12 3f 01 00    	je     0x4197b6
4058a4:	8b 47 18             	mov    0x18(%edi),%eax
4058a7:	8b 94 24 50 02 00 00 	mov    0x250(%esp),%edx
4058ae:	83 c0 2c             	add    $0x2c,%eax
4058b1:	50                   	push   %eax
4058b2:	8b c6                	mov    %esi,%eax
4058b4:	2b c1                	sub    %ecx,%eax
4058b6:	8b ce                	mov    %esi,%ecx
4058b8:	d1 f8                	sar    $1,%eax
4058ba:	2b d0                	sub    %eax,%edx
4058bc:	e8 df 9a 00 00       	call   0x40f3a0
4058c1:	8b 8c 24 48 02 00 00 	mov    0x248(%esp),%ecx
4058c8:	85 c9                	test   %ecx,%ecx
4058ca:	74 4e                	je     0x40591a
4058cc:	8d 51 02             	lea    0x2(%ecx),%edx
4058cf:	33 f6                	xor    %esi,%esi
4058d1:	66 8b 01             	mov    (%ecx),%ax
4058d4:	03 cb                	add    %ebx,%ecx
4058d6:	66 3b c6             	cmp    %si,%ax
4058d9:	75 f6                	jne    0x4058d1
4058db:	2b ca                	sub    %edx,%ecx
4058dd:	d1 f9                	sar    $1,%ecx
4058df:	81 f9 e7 7f 00 00    	cmp    $0x7fe7,%ecx
4058e5:	0f 86 27 fd ff ff    	jbe    0x405612
4058eb:	e9 a0 40 01 00       	jmp    0x419990
4058f0:	6a 02                	push   $0x2
4058f2:	c6 44 24 16 01       	movb   $0x1,0x16(%esp)
4058f7:	5b                   	pop    %ebx
4058f8:	e9 5b fc ff ff       	jmp    0x405558
4058fd:	8b 84 24 60 04 00 00 	mov    0x460(%esp),%eax
405904:	85 c0                	test   %eax,%eax
405906:	74 18                	je     0x405920
405908:	50                   	push   %eax
405909:	68 80 22 40 00       	push   $0x402280
40590e:	e8 3d 40 00 00       	call   0x409950
405913:	59                   	pop    %ecx
405914:	59                   	pop    %ecx
405915:	e9 b2 fe ff ff       	jmp    0x4057cc
40591a:	8d 4c 24 40          	lea    0x40(%esp),%ecx
40591e:	eb ac                	jmp    0x4058cc
405920:	8d 84 24 58 02 00 00 	lea    0x258(%esp),%eax
405927:	eb df                	jmp    0x405908
405929:	8b ff                	mov    %edi,%edi
40592b:	55                   	push   %ebp
40592c:	8b ec                	mov    %esp,%ebp
40592e:	81 ec 5c 02 00 00    	sub    $0x25c,%esp
405934:	a1 b4 e0 42 00       	mov    0x42e0b4,%eax
405939:	33 c5                	xor    %ebp,%eax
40593b:	89 45 fc             	mov    %eax,-0x4(%ebp)
40593e:	53                   	push   %ebx
40593f:	56                   	push   %esi
405940:	57                   	push   %edi
405941:	8d 85 a4 fd ff ff    	lea    -0x25c(%ebp),%eax
405947:	8b f9                	mov    %ecx,%edi
405949:	50                   	push   %eax
40594a:	8d 85 a8 fd ff ff    	lea    -0x258(%ebp),%eax
405950:	33 f6                	xor    %esi,%esi
405952:	50                   	push   %eax
405953:	56                   	push   %esi