4056ac:	73 19                	jae    0x4056c7
4056ae:	8b 45 08             	mov    0x8(%ebp),%eax
4056b1:	8d 4e ff             	lea    -0x1(%esi),%ecx
4056b4:	89 0a                	mov    %ecx,(%edx)
4056b6:	8b 53 20             	mov    0x20(%ebx),%edx
4056b9:	8b 32                	mov    (%edx),%esi
4056bb:	8d 4e 01             	lea    0x1(%esi),%ecx
4056be:	89 0a                	mov    %ecx,(%edx)
4056c0:	88 06                	mov    %al,(%esi)
4056c2:	e9 30 01 00 00       	jmp    0x4057f7
4056c7:	33 f6                	xor    %esi,%esi
4056c9:	39 73 4c             	cmp    %esi,0x4c(%ebx)
4056cc:	0f 84 23 01 00 00    	je     0x4057f5
4056d2:	8b cb                	mov    %ebx,%ecx
4056d4:	e8 ca 09 00 00       	call   0x4060a3
4056d9:	39 73 38             	cmp    %esi,0x38(%ebx)
4056dc:	75 1d                	jne    0x4056fb
4056de:	ff 73 4c             	push   0x4c(%ebx)
4056e1:	8b 5d 08             	mov    0x8(%ebp),%ebx
4056e4:	0f be c3             	movsbl %bl,%eax
4056e7:	50                   	push   %eax
4056e8:	e8 82 84 01 00       	call   0x41db6f
4056ed:	3b c7                	cmp    %edi,%eax
4056ef:	59                   	pop    %ecx
4056f0:	0f 44 df             	cmove  %edi,%ebx
4056f3:	59                   	pop    %ecx
4056f4:	8b c3                	mov    %ebx,%eax
4056f6:	e9 fc 00 00 00       	jmp    0x4057f7
4056fb:	8b 45 08             	mov    0x8(%ebp),%eax
4056fe:	8d 4c 24 1c          	lea    0x1c(%esp),%ecx
405702:	56                   	push   %esi
405703:	6a 08                	push   $0x8
405705:	88 44 24 1b          	mov    %al,0x1b(%esp)
405709:	e8 f7 f7 ff ff       	call   0x404f05
40570e:	8b 54 24 30          	mov    0x30(%esp),%edx
405712:	8b 44 24 2c          	mov    0x2c(%esp),%eax
405716:	8d 4c 24 1c          	lea    0x1c(%esp),%ecx
40571a:	83 fa 10             	cmp    $0x10,%edx
40571d:	8d 74 24 1c          	lea    0x1c(%esp),%esi
405721:	0f 43 4c 24 1c       	cmovae 0x1c(%esp),%ecx
405726:	0f 43 74 24 1c       	cmovae 0x1c(%esp),%esi
40572b:	03 c1                	add    %ecx,%eax
40572d:	8b 4b 38             	mov    0x38(%ebx),%ecx
405730:	8b 11                	mov    (%ecx),%edx
405732:	8d 4c 24 14          	lea    0x14(%esp),%ecx
405736:	51                   	push   %ecx
405737:	8b 4b 38             	mov    0x38(%ebx),%ecx
40573a:	50                   	push   %eax
40573b:	56                   	push   %esi
40573c:	8d 44 24 24          	lea    0x24(%esp),%eax
405740:	50                   	push   %eax
405741:	8d 44 24 24          	lea    0x24(%esp),%eax
405745:	50                   	push   %eax
405746:	8d 44 24 27          	lea    0x27(%esp),%eax
40574a:	50                   	push   %eax
40574b:	8d 43 40             	lea    0x40(%ebx),%eax
40574e:	50                   	push   %eax
40574f:	ff 52 1c             	call   *0x1c(%edx)
405752:	85 c0                	test   %eax,%eax
405754:	0f 88 8e 00 00 00    	js     0x4057e8
40575a:	83 f8 01             	cmp    $0x1,%eax
40575d:	7f 6e                	jg     0x4057cd
40575f:	8b 54 24 30          	mov    0x30(%esp),%edx
405763:	8d 44 24 1c          	lea    0x1c(%esp),%eax
405767:	8b 4c 24 1c          	mov    0x1c(%esp),%ecx
40576b:	83 fa 10             	cmp    $0x10,%edx
40576e:	8b 74 24 14          	mov    0x14(%esp),%esi
405772:	0f 43 c1             	cmovae %ecx,%eax
405775:	2b f0                	sub    %eax,%esi
405777:	74 21                	je     0x40579a
405779:	ff 73 4c             	push   0x4c(%ebx)
40577c:	83 fa 10             	cmp    $0x10,%edx
40577f:	8d 44 24 20          	lea    0x20(%esp),%eax
405783:	56                   	push   %esi
405784:	0f 43 c1             	cmovae %ecx,%eax
405787:	6a 01                	push   $0x1
405789:	50                   	push   %eax
40578a:	e8 64 ac 01 00       	call   0x4203f3
40578f:	83 c4 10             	add    $0x10,%esp
405792:	3b f0                	cmp    %eax,%esi
405794:	75 52                	jne    0x4057e8
405796:	8b 54 24 30          	mov    0x30(%esp),%edx
40579a:	8d 44 24 13          	lea    0x13(%esp),%eax
40579e:	c6 43 3d 01          	movb   $0x1,0x3d(%ebx)
4057a2:	39 44 24 18          	cmp    %eax,0x18(%esp)
4057a6:	75 20                	jne    0x4057c8
4057a8:	85 f6                	test   %esi,%esi
4057aa:	0f 85 62 ff ff ff    	jne    0x405712
4057b0:	83 7c 24 2c 20       	cmpl   $0x20,0x2c(%esp)
4057b5:	73 31                	jae    0x4057e8
4057b7:	56                   	push   %esi
4057b8:	6a 08                	push   $0x8
4057ba:	8d 4c 24 24          	lea    0x24(%esp),%ecx
4057be:	e8 f3 07 00 00       	call   0x405fb6
4057c3:	e9 46 ff ff ff       	jmp    0x40570e
4057c8:	8b 7d 08             	mov    0x8(%ebp),%edi
4057cb:	eb 1b                	jmp    0x4057e8
4057cd:	83 f8 03             	cmp    $0x3,%eax
4057d0:	75 16                	jne    0x4057e8
4057d2:	ff 73 4c             	push   0x4c(%ebx)
4057d5:	0f be 44 24 17       	movsbl 0x17(%esp),%eax
4057da:	50                   	push   %eax
4057db:	e8 8f 83 01 00       	call   0x41db6f
4057e0:	3b c7                	cmp    %edi,%eax
4057e2:	59                   	pop    %ecx
4057e3:	0f 45 7d 08          	cmovne 0x8(%ebp),%edi
4057e7:	59                   	pop    %ecx
4057e8:	6a 00                	push   $0x0
4057ea:	6a 01                	push   $0x1
4057ec:	8d 4c 24 24          	lea    0x24(%esp),%ecx
4057f0:	e8 0a 06 00 00       	call   0x405dff
4057f5:	8b c7                	mov    %edi,%eax
4057f7:	8b 4c 24 34          	mov    0x34(%esp),%ecx
4057fb:	5f                   	pop    %edi
4057fc:	5e                   	pop    %esi
4057fd:	5b                   	pop    %ebx
4057fe:	33 cc                	xor    %esp,%ecx
405800:	e8 a2 44 00 00       	call   0x409ca7
405805:	8b e5                	mov    %ebp,%esp
405807:	5d                   	pop    %ebp
405808:	c2 04 00             	ret    $0x4
40580b:	83 79 4c 00          	cmpl   $0x0,0x4c(%ecx)
40580f:	74 09                	je     0x40581a
405811:	ff 71 4c             	push   0x4c(%ecx)
405814:	e8 cc 81 01 00       	call   0x41d9e5
405819:	59                   	pop    %ecx
40581a:	c3                   	ret
40581b:	83 79 4c 00          	cmpl   $0x0,0x4c(%ecx)
40581f:	74 09                	je     0x40582a
405821:	ff 71 4c             	push   0x4c(%ecx)
405824:	e8 a8 81 01 00       	call   0x41d9d1
405829:	59                   	pop    %ecx
40582a:	c3                   	ret
40582b:	56                   	push   %esi
40582c:	8b f1                	mov    %ecx,%esi
40582e:	83 7e 4c 00          	cmpl   $0x0,0x4c(%esi)
405832:	c7 06 14 97 43 00    	movl   $0x439714,(%esi)
405838:	74 05                	je     0x40583f
40583a:	e8 64 08 00 00       	call   0x4060a3
40583f:	80 7e 48 00          	cmpb   $0x0,0x48(%esi)
405843:	74 07                	je     0x40584c
405845:	8b ce                	mov    %esi,%ecx
405847:	e8 11 0a 00 00       	call   0x40625d
40584c:	8b ce                	mov    %esi,%ecx
40584e:	5e                   	pop    %esi
40584f:	e9 0e 04 00 00       	jmp    0x405c62
405854:	55                   	push   %ebp
405855:	8b ec                	mov    %esp,%ebp
405857:	83 ec 10             	sub    $0x10,%esp
40585a:	56                   	push   %esi
40585b:	8b f1                	mov    %ecx,%esi
40585d:	51                   	push   %ecx
40585e:	56                   	push   %esi
40585f:	8d 4d f4             	lea    -0xc(%ebp),%ecx
405862:	e8 38 05 00 00       	call   0x405d9f
405867:	8b 06                	mov    (%esi),%eax
405869:	8b 48 04             	mov    0x4(%eax),%ecx
40586c:	f6 44 31 0c 06       	testb  $0x6,0xc(%ecx,%esi,1)
405871:	75 2c                	jne    0x40589f
405873:	8b 4c 31 38          	mov    0x38(%ecx,%esi,1),%ecx
405877:	8b 75 08             	mov    0x8(%ebp),%esi
40587a:	6a 01                	push   $0x1
40587c:	6a 01                	push   $0x1
40587e:	8b 01                	mov    (%ecx),%eax
405880:	6a 00                	push   $0x0
405882:	6a 00                	push   $0x0
405884:	56                   	push   %esi
405885:	ff 50 28             	call   *0x28(%eax)
405888:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40588b:	8b 01                	mov    (%ecx),%eax
40588d:	8b 40 04             	mov    0x4(%eax),%eax
405890:	8b 4c 08 38          	mov    0x38(%eax,%ecx,1),%ecx
405894:	85 c9                	test   %ecx,%ecx
405896:	74 28                	je     0x4058c0
405898:	8b 01                	mov    (%ecx),%eax
40589a:	ff 50 08             	call   *0x8(%eax)
40589d:	eb 21                	jmp    0x4058c0
40589f:	8b 75 08             	mov    0x8(%ebp),%esi
4058a2:	51                   	push   %ecx
4058a3:	51                   	push   %ecx
4058a4:	8b ce                	mov    %esi,%ecx
4058a6:	e8 30 0a 00 00       	call   0x4062db
4058ab:	8b 55 f4             	mov    -0xc(%ebp),%edx
4058ae:	8b 02                	mov    (%edx),%eax
4058b0:	8b 48 04             	mov    0x4(%eax),%ecx
4058b3:	8b 4c 11 38          	mov    0x38(%ecx,%edx,1),%ecx
4058b7:	85 c9                	test   %ecx,%ecx
4058b9:	74 05                	je     0x4058c0
4058bb:	8b 11                	mov    (%ecx),%edx
4058bd:	ff 52 08             	call   *0x8(%edx)
4058c0:	8b c6                	mov    %esi,%eax
4058c2:	5e                   	pop    %esi
4058c3:	c9                   	leave
4058c4:	c2 04 00             	ret    $0x4
4058c7:	55                   	push   %ebp
4058c8:	8b ec                	mov    %esp,%ebp
4058ca:	83 ec 24             	sub    $0x24,%esp
4058cd:	56                   	push   %esi
4058ce:	8b f1                	mov    %ecx,%esi
4058d0:	57                   	push   %edi
4058d1:	33 ff                	xor    %edi,%edi
4058d3:	57                   	push   %edi
4058d4:	8b 06                	mov    (%esi),%eax
4058d6:	8b 48 04             	mov    0x4(%eax),%ecx
4058d9:	03 ce                	add    %esi,%ecx
4058db:	8b 51 0c             	mov    0xc(%ecx),%edx
4058de:	83 e2 fe             	and    $0xfffffffe,%edx
4058e1:	8b c2                	mov    %edx,%eax
4058e3:	83 c8 04             	or     $0x4,%eax
4058e6:	39 79 38             	cmp    %edi,0x38(%ecx)
4058e9:	0f 44 d0             	cmove  %eax,%edx
4058ec:	52                   	push   %edx
4058ed:	e8 58 e8 ff ff       	call   0x40414a
4058f2:	51                   	push   %ecx
4058f3:	56                   	push   %esi
4058f4:	8d 4d f4             	lea    -0xc(%ebp),%ecx
4058f7:	e8 a3 04 00 00       	call   0x405d9f
4058fc:	8b 06                	mov    (%esi),%eax
4058fe:	8b 48 04             	mov    0x4(%eax),%ecx
405901:	f6 44 31 0c 06       	testb  $0x6,0xc(%ecx,%esi,1)
405906:	75 3f                	jne    0x405947
405908:	8b 4c 31 38          	mov    0x38(%ecx,%esi,1),%ecx
40590c:	8d 55 dc             	lea    -0x24(%ebp),%edx
40590f:	6a 01                	push   $0x1
405911:	ff 75 10             	push   0x10(%ebp)
405914:	8b 01                	mov    (%ecx),%eax
405916:	57                   	push   %edi
405917:	57                   	push   %edi
405918:	52                   	push   %edx
405919:	ff 50 28             	call   *0x28(%eax)
40591c:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40591f:	03 45 dc             	add    -0x24(%ebp),%eax
405922:	8b 4d e8             	mov    -0x18(%ebp),%ecx
405925:	13 4d e0             	adc    -0x20(%ebp),%ecx
405928:	3b 05 b0 84 43 00    	cmp    0x4384b0,%eax
40592e:	75 17                	jne    0x405947
405930:	3b 0d b4 84 43 00    	cmp    0x4384b4,%ecx
405936:	75 0f                	jne    0x405947
405938:	8b 06                	mov    (%esi),%eax
40593a:	51                   	push   %ecx
40593b:	6a 02                	push   $0x2
40593d:	8b 48 04             	mov    0x4(%eax),%ecx
405940:	03 ce                	add    %esi,%ecx
405942:	e8 6d 09 00 00       	call   0x4062b4
405947:	8b 4d f4             	mov    -0xc(%ebp),%ecx
40594a:	8b 01                	mov    (%ecx),%eax
40594c:	8b 40 04             	mov    0x4(%eax),%eax
40594f:	8b 4c 08 38          	mov    0x38(%eax,%ecx,1),%ecx
405953:	85 c9                	test   %ecx,%ecx
405955:	74 05                	je     0x40595c
405957:	8b 01                	mov    (%ecx),%eax
405959:	ff 50 08             	call   *0x8(%eax)
40595c:	5f                   	pop    %edi
40595d:	8b c6                	mov    %esi,%eax
40595f:	5e                   	pop    %esi
405960:	c9                   	leave
405961:	c2 0c 00             	ret    $0xc
405964:	55                   	push   %ebp
405965:	8b ec                	mov    %esp,%ebp
405967:	83 ec 0c             	sub    $0xc,%esp
40596a:	56                   	push   %esi
40596b:	8b f1                	mov    %ecx,%esi
40596d:	57                   	push   %edi
40596e:	51                   	push   %ecx
40596f:	33 ff                	xor    %edi,%edi
405971:	8d 4d f4             	lea    -0xc(%ebp),%ecx
405974:	56                   	push   %esi
405975:	89 7e 08             	mov    %edi,0x8(%esi)
405978:	89 7e 0c             	mov    %edi,0xc(%esi)
40597b:	e8 1f 04 00 00       	call   0x405d9f
405980:	80 7d f8 00          	cmpb   $0x0,-0x8(%ebp)
405984:	74 36                	je     0x4059bc
405986:	39 7d 10             	cmp    %edi,0x10(%ebp)
405989:	7c 31                	jl     0x4059bc
40598b:	7f 05                	jg     0x405992
40598d:	39 7d 0c             	cmp    %edi,0xc(%ebp)
405990:	76 2a                	jbe    0x4059bc
405992:	8b 06                	mov    (%esi),%eax
405994:	ff 75 10             	push   0x10(%ebp)
405997:	ff 75 0c             	push   0xc(%ebp)
40599a:	8b 40 04             	mov    0x4(%eax),%eax
40599d:	ff 75 08             	push   0x8(%ebp)
4059a0:	8b 4c 30 38          	mov    0x38(%eax,%esi,1),%ecx
4059a4:	8b 01                	mov    (%ecx),%eax
4059a6:	ff 50 20             	call   *0x20(%eax)
4059a9:	01 46 08             	add    %eax,0x8(%esi)
4059ac:	11 56 0c             	adc    %edx,0xc(%esi)
4059af:	3b 45 0c             	cmp    0xc(%ebp),%eax
4059b2:	75 05                	jne    0x4059b9
4059b4:	3b 55 10             	cmp    0x10(%ebp),%edx
4059b7:	74 03                	je     0x4059bc
4059b9:	6a 03                	push   $0x3
4059bb:	5f                   	pop    %edi
4059bc:	8b 06                	mov    (%esi),%eax
4059be:	51                   	push   %ecx
4059bf:	57                   	push   %edi
4059c0:	8b 48 04             	mov    0x4(%eax),%ecx
4059c3:	03 ce                	add    %esi,%ecx
4059c5:	e8 ea 08 00 00       	call   0x4062b4
4059ca:	8b 4d f4             	mov    -0xc(%ebp),%ecx
4059cd:	8b 01                	mov    (%ecx),%eax
4059cf:	8b 40 04             	mov    0x4(%eax),%eax
4059d2:	8b 4c 08 38          	mov    0x38(%eax,%ecx,1),%ecx
4059d6:	85 c9                	test   %ecx,%ecx
4059d8:	74 05                	je     0x4059df
4059da:	8b 01                	mov    (%ecx),%eax
4059dc:	ff 50 08             	call   *0x8(%eax)
4059df:	5f                   	pop    %edi
4059e0:	8b c6                	mov    %esi,%eax
4059e2:	5e                   	pop    %esi
4059e3:	c9                   	leave
4059e4:	c2 0c 00             	ret    $0xc
4059e7:	c2 04 00             	ret    $0x4
4059ea:	33 c0                	xor    %eax,%eax
4059ec:	c3                   	ret
4059ed:	8b c1                	mov    %ecx,%eax
4059ef:	c2 0c 00             	ret    $0xc
4059f2:	51                   	push   %ecx
4059f3:	51                   	push   %ecx
4059f4:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
4059f8:	e8 de 08 00 00       	call   0x4062db
4059fd:	8b c1                	mov    %ecx,%eax
4059ff:	c2 20 00             	ret    $0x20
405a02:	51                   	push   %ecx
405a03:	51                   	push   %ecx
405a04:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
405a08:	e8 ce 08 00 00       	call   0x4062db
405a0d:	8b c1                	mov    %ecx,%eax
405a0f:	c2 14 00             	ret    $0x14
405a12:	55                   	push   %ebp
405a13:	8b ec                	mov    %esp,%ebp
405a15:	83 e4 f8             	and    $0xfffffff8,%esp
405a18:	83 ec 1c             	sub    $0x1c,%esp
405a1b:	53                   	push   %ebx
405a1c:	56                   	push   %esi
405a1d:	57                   	push   %edi
405a1e:	8b 7d 10             	mov    0x10(%ebp),%edi
405a21:	33 d2                	xor    %edx,%edx
405a23:	33 db                	xor    %ebx,%ebx
405a25:	89 4c 24 20          	mov    %ecx,0x20(%esp)
405a29:	89 54 24 14          	mov    %edx,0x14(%esp)
405a2d:	89 5c 24 18          	mov    %ebx,0x18(%esp)
405a31:	85 ff                	test   %edi,%edi
405a33:	0f 8c db 00 00 00    	jl     0x405b14
405a39:	8b 75 0c             	mov    0xc(%ebp),%esi
405a3c:	0f 8e c0 00 00 00    	jle    0x405b02
405a42:	8b 41 20             	mov    0x20(%ecx),%eax
405a45:	8d 51 30             	lea    0x30(%ecx),%edx
405a48:	8b 00                	mov    (%eax),%eax
405a4a:	89 44 24 24          	mov    %eax,0x24(%esp)