40577a:	33 ff                	xor    %edi,%edi
40577c:	83 cb ff             	or     $0xffffffff,%ebx
40577f:	3b f7                	cmp    %edi,%esi
405781:	75 1c                	jne    0x40579f
405783:	e8 4d 03 00 00       	call   0x405ad5
405788:	57                   	push   %edi
405789:	57                   	push   %edi
40578a:	57                   	push   %edi
40578b:	57                   	push   %edi
40578c:	57                   	push   %edi
40578d:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
405793:	e8 8d fa ff ff       	call   0x405225
405798:	83 c4 14             	add    $0x14,%esp
40579b:	0b c3                	or     %ebx,%eax
40579d:	eb 42                	jmp    0x4057e1
40579f:	f6 46 0c 83          	testb  $0x83,0xc(%esi)
4057a3:	74 37                	je     0x4057dc
4057a5:	56                   	push   %esi
4057a6:	e8 a7 6c 00 00       	call   0x40c452
4057ab:	56                   	push   %esi
4057ac:	8b d8                	mov    %eax,%ebx
4057ae:	e8 6e 6c 00 00       	call   0x40c421
4057b3:	56                   	push   %esi
4057b4:	e8 c8 69 00 00       	call   0x40c181
4057b9:	50                   	push   %eax
4057ba:	e8 95 6b 00 00       	call   0x40c354
4057bf:	83 c4 10             	add    $0x10,%esp
4057c2:	85 c0                	test   %eax,%eax
4057c4:	7d 05                	jge    0x4057cb
4057c6:	83 cb ff             	or     $0xffffffff,%ebx
4057c9:	eb 11                	jmp    0x4057dc
4057cb:	8b 46 1c             	mov    0x1c(%esi),%eax
4057ce:	3b c7                	cmp    %edi,%eax
4057d0:	74 0a                	je     0x4057dc
4057d2:	50                   	push   %eax
4057d3:	e8 48 f8 ff ff       	call   0x405020
4057d8:	59                   	pop    %ecx
4057d9:	89 7e 1c             	mov    %edi,0x1c(%esi)
4057dc:	89 7e 0c             	mov    %edi,0xc(%esi)
4057df:	8b c3                	mov    %ebx,%eax
4057e1:	5f                   	pop    %edi
4057e2:	5e                   	pop    %esi
4057e3:	5b                   	pop    %ebx
4057e4:	5d                   	pop    %ebp
4057e5:	c3                   	ret
4057e6:	6a 0c                	push   $0xc
4057e8:	68 50 95 42 00       	push   $0x429550
4057ed:	e8 ea 4b 00 00       	call   0x40a3dc
4057f2:	83 4d e4 ff          	orl    $0xffffffff,-0x1c(%ebp)
4057f6:	33 c0                	xor    %eax,%eax
4057f8:	8b 75 08             	mov    0x8(%ebp),%esi
4057fb:	33 ff                	xor    %edi,%edi
4057fd:	3b f7                	cmp    %edi,%esi
4057ff:	0f 95 c0             	setne  %al
405802:	3b c7                	cmp    %edi,%eax
405804:	75 1d                	jne    0x405823
405806:	e8 ca 02 00 00       	call   0x405ad5
40580b:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
405811:	57                   	push   %edi
405812:	57                   	push   %edi
405813:	57                   	push   %edi
405814:	57                   	push   %edi
405815:	57                   	push   %edi
405816:	e8 0a fa ff ff       	call   0x405225
40581b:	83 c4 14             	add    $0x14,%esp
40581e:	83 c8 ff             	or     $0xffffffff,%eax
405821:	eb 0c                	jmp    0x40582f
405823:	f6 46 0c 40          	testb  $0x40,0xc(%esi)
405827:	74 0c                	je     0x405835
405829:	89 7e 0c             	mov    %edi,0xc(%esi)
40582c:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40582f:	e8 ed 4b 00 00       	call   0x40a421
405834:	c3                   	ret
405835:	56                   	push   %esi
405836:	e8 b3 55 00 00       	call   0x40adee
40583b:	59                   	pop    %ecx
40583c:	89 7d fc             	mov    %edi,-0x4(%ebp)
40583f:	56                   	push   %esi
405840:	e8 2a ff ff ff       	call   0x40576f
405845:	59                   	pop    %ecx
405846:	89 45 e4             	mov    %eax,-0x1c(%ebp)
405849:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
405850:	e8 05 00 00 00       	call   0x40585a
405855:	eb d5                	jmp    0x40582c
405857:	8b 75 08             	mov    0x8(%ebp),%esi
40585a:	56                   	push   %esi
40585b:	e8 01 56 00 00       	call   0x40ae61
405860:	59                   	pop    %ecx
405861:	c3                   	ret
405862:	8b ff                	mov    %edi,%edi
405864:	56                   	push   %esi
405865:	6a 01                	push   $0x1
405867:	68 e4 b0 42 00       	push   $0x42b0e4
40586c:	8b f1                	mov    %ecx,%esi
40586e:	e8 82 f6 ff ff       	call   0x404ef5
405873:	c7 06 08 a2 41 00    	movl   $0x41a208,(%esi)
405879:	8b c6                	mov    %esi,%eax
40587b:	5e                   	pop    %esi
40587c:	c3                   	ret
40587d:	8b ff                	mov    %edi,%edi
40587f:	55                   	push   %ebp
405880:	8b ec                	mov    %esp,%ebp
405882:	83 ec 0c             	sub    $0xc,%esp
405885:	eb 0d                	jmp    0x405894
405887:	ff 75 08             	push   0x8(%ebp)
40588a:	e8 65 6d 00 00       	call   0x40c5f4
40588f:	59                   	pop    %ecx
405890:	85 c0                	test   %eax,%eax
405892:	74 0f                	je     0x4058a3
405894:	ff 75 08             	push   0x8(%ebp)
405897:	e8 d2 3d 00 00       	call   0x40966e
40589c:	59                   	pop    %ecx
40589d:	85 c0                	test   %eax,%eax
40589f:	74 e6                	je     0x405887
4058a1:	c9                   	leave
4058a2:	c3                   	ret
4058a3:	f6 05 ec 07 43 00 01 	testb  $0x1,0x4307ec
4058aa:	be e0 07 43 00       	mov    $0x4307e0,%esi
4058af:	75 19                	jne    0x4058ca
4058b1:	83 0d ec 07 43 00 01 	orl    $0x1,0x4307ec
4058b8:	8b ce                	mov    %esi,%ecx
4058ba:	e8 a3 ff ff ff       	call   0x405862
4058bf:	68 04 9b 41 00       	push   $0x419b04
4058c4:	e8 60 09 00 00       	call   0x406229
4058c9:	59                   	pop    %ecx
4058ca:	56                   	push   %esi
4058cb:	8d 4d f4             	lea    -0xc(%ebp),%ecx
4058ce:	e8 6d e6 ff ff       	call   0x403f40
4058d3:	68 80 9c 42 00       	push   $0x429c80
4058d8:	8d 45 f4             	lea    -0xc(%ebp),%eax
4058db:	50                   	push   %eax
4058dc:	e8 d1 0d 00 00       	call   0x4066b2
4058e1:	cc                   	int3
4058e2:	8b ff                	mov    %edi,%edi
4058e4:	55                   	push   %ebp
4058e5:	8b ec                	mov    %esp,%ebp
4058e7:	83 3d f8 07 43 00 01 	cmpl   $0x1,0x4307f8
4058ee:	75 05                	jne    0x4058f5
4058f0:	e8 5a 72 00 00       	call   0x40cb4f
4058f5:	ff 75 08             	push   0x8(%ebp)
4058f8:	e8 a7 70 00 00       	call   0x40c9a4
4058fd:	68 ff 00 00 00       	push   $0xff
405902:	e8 e9 6d 00 00       	call   0x40c6f0
405907:	59                   	pop    %ecx
405908:	59                   	pop    %ecx
405909:	5d                   	pop    %ebp
40590a:	c3                   	ret
40590b:	6a 58                	push   $0x58
40590d:	68 70 95 42 00       	push   $0x429570
405912:	e8 c5 4a 00 00       	call   0x40a3dc
405917:	33 f6                	xor    %esi,%esi
405919:	89 75 fc             	mov    %esi,-0x4(%ebp)
40591c:	8d 45 98             	lea    -0x68(%ebp),%eax
40591f:	50                   	push   %eax
405920:	ff 15 b8 a0 41 00    	call   *0x41a0b8
405926:	6a fe                	push   $0xfffffffe
405928:	5f                   	pop    %edi
405929:	89 7d fc             	mov    %edi,-0x4(%ebp)
40592c:	b8 4d 5a 00 00       	mov    $0x5a4d,%eax
405931:	66 39 05 00 00 40 00 	cmp    %ax,0x400000
405938:	75 38                	jne    0x405972
40593a:	a1 3c 00 40 00       	mov    0x40003c,%eax
40593f:	81 b8 00 00 40 00 50 	cmpl   $0x4550,0x400000(%eax)
405946:	45 00 00
405949:	75 27                	jne    0x405972
40594b:	b9 0b 01 00 00       	mov    $0x10b,%ecx
405950:	66 39 88 18 00 40 00 	cmp    %cx,0x400018(%eax)
405957:	75 19                	jne    0x405972
405959:	83 b8 74 00 40 00 0e 	cmpl   $0xe,0x400074(%eax)
405960:	76 10                	jbe    0x405972
405962:	33 c9                	xor    %ecx,%ecx
405964:	39 b0 e8 00 40 00    	cmp    %esi,0x4000e8(%eax)
40596a:	0f 95 c1             	setne  %cl
40596d:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
405970:	eb 03                	jmp    0x405975
405972:	89 75 e4             	mov    %esi,-0x1c(%ebp)
405975:	33 db                	xor    %ebx,%ebx
405977:	43                   	inc    %ebx
405978:	53                   	push   %ebx
405979:	e8 ba 3d 00 00       	call   0x409738
40597e:	59                   	pop    %ecx
40597f:	85 c0                	test   %eax,%eax
405981:	75 08                	jne    0x40598b
405983:	6a 1c                	push   $0x1c
405985:	e8 58 ff ff ff       	call   0x4058e2
40598a:	59                   	pop    %ecx
40598b:	e8 fa 51 00 00       	call   0x40ab8a
405990:	85 c0                	test   %eax,%eax
405992:	75 08                	jne    0x40599c
405994:	6a 10                	push   $0x10
405996:	e8 47 ff ff ff       	call   0x4058e2
40599b:	59                   	pop    %ecx
40599c:	e8 10 78 00 00       	call   0x40d1b1
4059a1:	89 5d fc             	mov    %ebx,-0x4(%ebp)
4059a4:	e8 33 64 00 00       	call   0x40bddc
4059a9:	85 c0                	test   %eax,%eax
4059ab:	7d 08                	jge    0x4059b5
4059ad:	6a 1b                	push   $0x1b
4059af:	e8 e8 6c 00 00       	call   0x40c69c
4059b4:	59                   	pop    %ecx
4059b5:	ff 15 b4 a0 41 00    	call   *0x41a0b4
4059bb:	a3 a4 23 c7 00       	mov    %eax,0xc723a4
4059c0:	e8 b5 76 00 00       	call   0x40d07a
4059c5:	a3 f0 07 43 00       	mov    %eax,0x4307f0
4059ca:	e8 f0 75 00 00       	call   0x40cfbf
4059cf:	85 c0                	test   %eax,%eax
4059d1:	7d 08                	jge    0x4059db
4059d3:	6a 08                	push   $0x8
4059d5:	e8 c2 6c 00 00       	call   0x40c69c
4059da:	59                   	pop    %ecx
4059db:	e8 67 73 00 00       	call   0x40cd47
4059e0:	85 c0                	test   %eax,%eax
4059e2:	7d 08                	jge    0x4059ec
4059e4:	6a 09                	push   $0x9
4059e6:	e8 b1 6c 00 00       	call   0x40c69c
4059eb:	59                   	pop    %ecx
4059ec:	53                   	push   %ebx
4059ed:	e8 69 6d 00 00       	call   0x40c75b
4059f2:	59                   	pop    %ecx
4059f3:	3b c6                	cmp    %esi,%eax
4059f5:	74 07                	je     0x4059fe
4059f7:	50                   	push   %eax
4059f8:	e8 9f 6c 00 00       	call   0x40c69c
4059fd:	59                   	pop    %ecx
4059fe:	e8 e5 72 00 00       	call   0x40cce8
405a03:	84 5d c4             	test   %bl,-0x3c(%ebp)
405a06:	74 06                	je     0x405a0e
405a08:	0f b7 4d c8          	movzwl -0x38(%ebp),%ecx
405a0c:	eb 03                	jmp    0x405a11
405a0e:	6a 0a                	push   $0xa
405a10:	59                   	pop    %ecx
405a11:	51                   	push   %ecx
405a12:	50                   	push   %eax
405a13:	56                   	push   %esi
405a14:	68 00 00 40 00       	push   $0x400000
405a19:	e8 82 c9 ff ff       	call   0x4023a0
405a1e:	89 45 e0             	mov    %eax,-0x20(%ebp)
405a21:	39 75 e4             	cmp    %esi,-0x1c(%ebp)
405a24:	75 06                	jne    0x405a2c
405a26:	50                   	push   %eax
405a27:	e8 e0 6e 00 00       	call   0x40c90c
405a2c:	e8 07 6f 00 00       	call   0x40c938
405a31:	89 7d fc             	mov    %edi,-0x4(%ebp)
405a34:	eb 35                	jmp    0x405a6b
405a36:	8b 45 ec             	mov    -0x14(%ebp),%eax
405a39:	8b 08                	mov    (%eax),%ecx
405a3b:	8b 09                	mov    (%ecx),%ecx
405a3d:	89 4d dc             	mov    %ecx,-0x24(%ebp)
405a40:	50                   	push   %eax
405a41:	51                   	push   %ecx
405a42:	e8 41 71 00 00       	call   0x40cb88
405a47:	59                   	pop    %ecx
405a48:	59                   	pop    %ecx
405a49:	c3                   	ret
405a4a:	8b 65 e8             	mov    -0x18(%ebp),%esp
405a4d:	8b 45 dc             	mov    -0x24(%ebp),%eax
405a50:	89 45 e0             	mov    %eax,-0x20(%ebp)
405a53:	83 7d e4 00          	cmpl   $0x0,-0x1c(%ebp)
405a57:	75 06                	jne    0x405a5f
405a59:	50                   	push   %eax
405a5a:	e8 c3 6e 00 00       	call   0x40c922
405a5f:	e8 e3 6e 00 00       	call   0x40c947
405a64:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
405a6b:	8b 45 e0             	mov    -0x20(%ebp),%eax
405a6e:	eb 13                	jmp    0x405a83
405a70:	33 c0                	xor    %eax,%eax
405a72:	40                   	inc    %eax
405a73:	c3                   	ret
405a74:	8b 65 e8             	mov    -0x18(%ebp),%esp
405a77:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
405a7e:	b8 ff 00 00 00       	mov    $0xff,%eax
405a83:	e8 99 49 00 00       	call   0x40a421
405a88:	c3                   	ret
405a89:	e8 6f 77 00 00       	call   0x40d1fd
405a8e:	e9 78 fe ff ff       	jmp    0x40590b
405a93:	8b ff                	mov    %edi,%edi
405a95:	55                   	push   %ebp
405a96:	8b ec                	mov    %esp,%ebp
405a98:	8b 45 08             	mov    0x8(%ebp),%eax
405a9b:	33 c9                	xor    %ecx,%ecx
405a9d:	3b 04 cd f0 b0 42 00 	cmp    0x42b0f0(,%ecx,8),%eax
405aa4:	74 13                	je     0x405ab9
405aa6:	41                   	inc    %ecx
405aa7:	83 f9 2d             	cmp    $0x2d,%ecx
405aaa:	72 f1                	jb     0x405a9d
405aac:	8d 48 ed             	lea    -0x13(%eax),%ecx
405aaf:	83 f9 11             	cmp    $0x11,%ecx
405ab2:	77 0e                	ja     0x405ac2
405ab4:	6a 0d                	push   $0xd
405ab6:	58                   	pop    %eax
405ab7:	5d                   	pop    %ebp
405ab8:	c3                   	ret
405ab9:	8b 04 cd f4 b0 42 00 	mov    0x42b0f4(,%ecx,8),%eax
405ac0:	5d                   	pop    %ebp
405ac1:	c3                   	ret
405ac2:	05 44 ff ff ff       	add    $0xffffff44,%eax
405ac7:	6a 0e                	push   $0xe
405ac9:	59                   	pop    %ecx
405aca:	3b c8                	cmp    %eax,%ecx
405acc:	1b c0                	sbb    %eax,%eax
405ace:	23 c1                	and    %ecx,%eax
405ad0:	83 c0 08             	add    $0x8,%eax
405ad3:	5d                   	pop    %ebp
405ad4:	c3                   	ret
405ad5:	e8 ee 4e 00 00       	call   0x40a9c8
405ada:	85 c0                	test   %eax,%eax
405adc:	75 06                	jne    0x405ae4
405ade:	b8 58 b2 42 00       	mov    $0x42b258,%eax
405ae3:	c3                   	ret
405ae4:	83 c0 08             	add    $0x8,%eax
405ae7:	c3                   	ret
405ae8:	e8 db 4e 00 00       	call   0x40a9c8
405aed:	85 c0                	test   %eax,%eax
405aef:	75 06                	jne    0x405af7
405af1:	b8 5c b2 42 00       	mov    $0x42b25c,%eax
405af6:	c3                   	ret
405af7:	83 c0 0c             	add    $0xc,%eax
405afa:	c3                   	ret
405afb:	8b ff                	mov    %edi,%edi
405afd:	55                   	push   %ebp
405afe:	8b ec                	mov    %esp,%ebp
405b00:	56                   	push   %esi
405b01:	e8 e2 ff ff ff       	call   0x405ae8
405b06:	8b 4d 08             	mov    0x8(%ebp),%ecx
405b09:	51                   	push   %ecx
405b0a:	89 08                	mov    %ecx,(%eax)
405b0c:	e8 82 ff ff ff       	call   0x405a93
405b11:	59                   	pop    %ecx
405b12:	8b f0                	mov    %eax,%esi
405b14:	e8 bc ff ff ff       	call   0x405ad5
405b19:	89 30                	mov    %esi,(%eax)
405b1b:	5e                   	pop    %esi
405b1c:	5d                   	pop    %ebp
405b1d:	c3                   	ret
405b1e:	8b ff                	mov    %edi,%edi
405b20:	55                   	push   %ebp
405b21:	8b ec                	mov    %esp,%ebp
405b23:	83 ec 4c             	sub    $0x4c,%esp
405b26:	a1 68 b2 42 00       	mov    0x42b268,%eax
405b2b:	33 c5                	xor    %ebp,%eax
405b2d:	89 45 fc             	mov    %eax,-0x4(%ebp)
405b30:	53                   	push   %ebx
405b31:	33 db                	xor    %ebx,%ebx
405b33:	56                   	push   %esi
405b34:	8b 75 08             	mov    0x8(%ebp),%esi
405b37:	57                   	push   %edi
405b38:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
405b3b:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
405b3e:	89 5d e0             	mov    %ebx,-0x20(%ebp)
405b41:	89 5d d8             	mov    %ebx,-0x28(%ebp)