40d8ce:	48                   	dec    %eax
40d8cf:	89 45 f8             	mov    %eax,-0x8(%ebp)
40d8d2:	83 c8 ff             	or     $0xffffffff,%eax
40d8d5:	8d 34 1a             	lea    (%edx,%ebx,1),%esi
40d8d8:	39 45 10             	cmp    %eax,0x10(%ebp)
40d8db:	74 05                	je     0x40d8e2
40d8dd:	8b 45 10             	mov    0x10(%ebp),%eax
40d8e0:	2b c2                	sub    %edx,%eax
40d8e2:	ff 75 2c             	push   0x2c(%ebp)
40d8e5:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40d8e8:	ff 75 28             	push   0x28(%ebp)
40d8eb:	ff 75 fc             	push   -0x4(%ebp)
40d8ee:	51                   	push   %ecx
40d8ef:	57                   	push   %edi
40d8f0:	50                   	push   %eax
40d8f1:	56                   	push   %esi
40d8f2:	e8 98 51 00 00       	call   0x412a8f
40d8f7:	83 c4 1c             	add    $0x1c,%esp
40d8fa:	85 c0                	test   %eax,%eax
40d8fc:	74 05                	je     0x40d903
40d8fe:	c6 03 00             	movb   $0x0,(%ebx)
40d901:	eb 50                	jmp    0x40d953
40d903:	8b 45 f0             	mov    -0x10(%ebp),%eax
40d906:	48                   	dec    %eax
40d907:	83 f8 fc             	cmp    $0xfffffffc,%eax
40d90a:	7c 2b                	jl     0x40d937
40d90c:	3b c7                	cmp    %edi,%eax
40d90e:	7d 27                	jge    0x40d937
40d910:	39 45 f8             	cmp    %eax,-0x8(%ebp)
40d913:	7d 0a                	jge    0x40d91f
40d915:	8a 06                	mov    (%esi),%al
40d917:	46                   	inc    %esi
40d918:	84 c0                	test   %al,%al
40d91a:	75 f9                	jne    0x40d915
40d91c:	88 46 fe             	mov    %al,-0x2(%esi)
40d91f:	ff 75 2c             	push   0x2c(%ebp)
40d922:	8d 45 ec             	lea    -0x14(%ebp),%eax
40d925:	6a 01                	push   $0x1
40d927:	50                   	push   %eax
40d928:	57                   	push   %edi
40d929:	ff 75 10             	push   0x10(%ebp)
40d92c:	53                   	push   %ebx
40d92d:	e8 69 fe ff ff       	call   0x40d79b
40d932:	83 c4 18             	add    $0x18,%esp
40d935:	eb 1c                	jmp    0x40d953
40d937:	ff 75 2c             	push   0x2c(%ebp)
40d93a:	8d 45 ec             	lea    -0x14(%ebp),%eax
40d93d:	6a 01                	push   $0x1
40d93f:	50                   	push   %eax
40d940:	ff 75 24             	push   0x24(%ebp)
40d943:	ff 75 20             	push   0x20(%ebp)
40d946:	57                   	push   %edi
40d947:	ff 75 10             	push   0x10(%ebp)
40d94a:	53                   	push   %ebx
40d94b:	e8 62 fc ff ff       	call   0x40d5b2
40d950:	83 c4 20             	add    $0x20,%esp
40d953:	5f                   	pop    %edi
40d954:	5e                   	pop    %esi
40d955:	5b                   	pop    %ebx
40d956:	c9                   	leave
40d957:	c3                   	ret
40d958:	8b ff                	mov    %edi,%edi
40d95a:	55                   	push   %ebp
40d95b:	8b ec                	mov    %esp,%ebp
40d95d:	51                   	push   %ecx
40d95e:	8a 4d 0c             	mov    0xc(%ebp),%cl
40d961:	8b 55 14             	mov    0x14(%ebp),%edx
40d964:	0f b6 c1             	movzbl %cl,%eax
40d967:	83 c0 04             	add    $0x4,%eax
40d96a:	3b d0                	cmp    %eax,%edx
40d96c:	73 0b                	jae    0x40d979
40d96e:	8b 45 10             	mov    0x10(%ebp),%eax
40d971:	6a 0c                	push   $0xc
40d973:	c6 00 00             	movb   $0x0,(%eax)
40d976:	58                   	pop    %eax
40d977:	c9                   	leave
40d978:	c3                   	ret
40d979:	84 c9                	test   %cl,%cl
40d97b:	8b 4d 10             	mov    0x10(%ebp),%ecx
40d97e:	74 0d                	je     0x40d98d
40d980:	c6 01 2d             	movb   $0x2d,(%ecx)
40d983:	41                   	inc    %ecx
40d984:	c6 01 00             	movb   $0x0,(%ecx)
40d987:	83 fa ff             	cmp    $0xffffffff,%edx
40d98a:	74 01                	je     0x40d98d
40d98c:	4a                   	dec    %edx
40d98d:	8b 45 08             	mov    0x8(%ebp),%eax
40d990:	53                   	push   %ebx
40d991:	56                   	push   %esi
40d992:	57                   	push   %edi
40d993:	0f b6 7d 18          	movzbl 0x18(%ebp),%edi
40d997:	8d 1c 85 fc ff ff ff 	lea    -0x4(,%eax,4),%ebx
40d99e:	83 f7 01             	xor    $0x1,%edi
40d9a1:	03 ff                	add    %edi,%edi
40d9a3:	8d 04 3b             	lea    (%ebx,%edi,1),%eax
40d9a6:	8b 34 85 28 af 41 00 	mov    0x41af28(,%eax,4),%esi
40d9ad:	8d 46 01             	lea    0x1(%esi),%eax
40d9b0:	89 45 fc             	mov    %eax,-0x4(%ebp)
40d9b3:	8a 06                	mov    (%esi),%al
40d9b5:	46                   	inc    %esi
40d9b6:	84 c0                	test   %al,%al
40d9b8:	75 f9                	jne    0x40d9b3
40d9ba:	2b 75 fc             	sub    -0x4(%ebp),%esi
40d9bd:	3b f2                	cmp    %edx,%esi
40d9bf:	1b c0                	sbb    %eax,%eax
40d9c1:	43                   	inc    %ebx
40d9c2:	03 c3                	add    %ebx,%eax
40d9c4:	03 c7                	add    %edi,%eax
40d9c6:	ff 34 85 28 af 41 00 	push   0x41af28(,%eax,4)
40d9cd:	52                   	push   %edx
40d9ce:	51                   	push   %ecx
40d9cf:	e8 9a cb ff ff       	call   0x40a56e
40d9d4:	83 c4 0c             	add    $0xc,%esp
40d9d7:	5f                   	pop    %edi
40d9d8:	5e                   	pop    %esi
40d9d9:	5b                   	pop    %ebx
40d9da:	85 c0                	test   %eax,%eax
40d9dc:	75 02                	jne    0x40d9e0
40d9de:	c9                   	leave
40d9df:	c3                   	ret
40d9e0:	33 c0                	xor    %eax,%eax
40d9e2:	50                   	push   %eax
40d9e3:	50                   	push   %eax
40d9e4:	50                   	push   %eax
40d9e5:	50                   	push   %eax
40d9e6:	50                   	push   %eax
40d9e7:	e8 0a 9b ff ff       	call   0x4074f6
40d9ec:	cc                   	int3
40d9ed:	8b ff                	mov    %edi,%edi
40d9ef:	55                   	push   %ebp
40d9f0:	8b ec                	mov    %esp,%ebp
40d9f2:	8b 55 14             	mov    0x14(%ebp),%edx
40d9f5:	85 d2                	test   %edx,%edx
40d9f7:	74 26                	je     0x40da1f
40d9f9:	56                   	push   %esi
40d9fa:	8b 75 10             	mov    0x10(%ebp),%esi
40d9fd:	8b ce                	mov    %esi,%ecx
40d9ff:	57                   	push   %edi
40da00:	8d 79 01             	lea    0x1(%ecx),%edi
40da03:	8a 01                	mov    (%ecx),%al
40da05:	41                   	inc    %ecx
40da06:	84 c0                	test   %al,%al
40da08:	75 f9                	jne    0x40da03
40da0a:	2b cf                	sub    %edi,%ecx
40da0c:	8d 41 01             	lea    0x1(%ecx),%eax
40da0f:	50                   	push   %eax
40da10:	8d 04 16             	lea    (%esi,%edx,1),%eax
40da13:	56                   	push   %esi
40da14:	50                   	push   %eax
40da15:	e8 16 69 ff ff       	call   0x404330
40da1a:	83 c4 0c             	add    $0xc,%esp
40da1d:	5f                   	pop    %edi
40da1e:	5e                   	pop    %esi
40da1f:	5d                   	pop    %ebp
40da20:	c3                   	ret
40da21:	8b ff                	mov    %edi,%edi
40da23:	55                   	push   %ebp
40da24:	8b ec                	mov    %esp,%ebp
40da26:	8b 45 0c             	mov    0xc(%ebp),%eax
40da29:	53                   	push   %ebx
40da2a:	8b 5d 14             	mov    0x14(%ebp),%ebx
40da2d:	56                   	push   %esi
40da2e:	8b 75 08             	mov    0x8(%ebp),%esi
40da31:	57                   	push   %edi
40da32:	0f bf cb             	movswl %bx,%ecx
40da35:	8b 56 04             	mov    0x4(%esi),%edx
40da38:	23 55 10             	and    0x10(%ebp),%edx
40da3b:	23 06                	and    (%esi),%eax
40da3d:	81 e2 ff ff 0f 00    	and    $0xfffff,%edx
40da43:	e8 78 a2 00 00       	call   0x417cc0
40da48:	83 7d 18 00          	cmpl   $0x0,0x18(%ebp)
40da4c:	0f b7 f8             	movzwl %ax,%edi
40da4f:	75 09                	jne    0x40da5a
40da51:	83 ff 08             	cmp    $0x8,%edi
40da54:	1a c0                	sbb    %al,%al
40da56:	fe c0                	inc    %al
40da58:	eb 55                	jmp    0x40daaf
40da5a:	e8 c4 6b 00 00       	call   0x414623
40da5f:	85 c0                	test   %eax,%eax
40da61:	75 12                	jne    0x40da75
40da63:	53                   	push   %ebx
40da64:	ff 75 10             	push   0x10(%ebp)
40da67:	ff 75 0c             	push   0xc(%ebp)
40da6a:	56                   	push   %esi
40da6b:	e8 ce f6 ff ff       	call   0x40d13e
40da70:	83 c4 10             	add    $0x10,%esp
40da73:	eb 3a                	jmp    0x40daaf
40da75:	3d 00 02 00 00       	cmp    $0x200,%eax
40da7a:	75 16                	jne    0x40da92
40da7c:	33 c0                	xor    %eax,%eax
40da7e:	66 85 ff             	test   %di,%di
40da81:	74 2c                	je     0x40daaf
40da83:	39 46 04             	cmp    %eax,0x4(%esi)
40da86:	7c 27                	jl     0x40daaf
40da88:	7f 04                	jg     0x40da8e
40da8a:	39 06                	cmp    %eax,(%esi)
40da8c:	72 21                	jb     0x40daaf
40da8e:	b0 01                	mov    $0x1,%al
40da90:	eb 1d                	jmp    0x40daaf
40da92:	3d 00 01 00 00       	cmp    $0x100,%eax
40da97:	75 14                	jne    0x40daad
40da99:	33 c0                	xor    %eax,%eax
40da9b:	66 85 ff             	test   %di,%di
40da9e:	74 0f                	je     0x40daaf
40daa0:	39 46 04             	cmp    %eax,0x4(%esi)
40daa3:	7f 0a                	jg     0x40daaf
40daa5:	7c e7                	jl     0x40da8e
40daa7:	39 06                	cmp    %eax,(%esi)
40daa9:	73 04                	jae    0x40daaf
40daab:	eb e1                	jmp    0x40da8e
40daad:	32 c0                	xor    %al,%al
40daaf:	5f                   	pop    %edi
40dab0:	5e                   	pop    %esi
40dab1:	5b                   	pop    %ebx
40dab2:	5d                   	pop    %ebp
40dab3:	c3                   	ret
40dab4:	8b ff                	mov    %edi,%edi
40dab6:	55                   	push   %ebp
40dab7:	8b ec                	mov    %esp,%ebp
40dab9:	51                   	push   %ecx
40daba:	51                   	push   %ecx
40dabb:	53                   	push   %ebx
40dabc:	56                   	push   %esi
40dabd:	57                   	push   %edi
40dabe:	8b 7d 0c             	mov    0xc(%ebp),%edi
40dac1:	85 ff                	test   %edi,%edi
40dac3:	75 24                	jne    0x40dae9
40dac5:	8b 4d 30             	mov    0x30(%ebp),%ecx
40dac8:	6a 16                	push   $0x16
40daca:	5e                   	pop    %esi
40dacb:	51                   	push   %ecx
40dacc:	c6 41 1c 01          	movb   $0x1,0x1c(%ecx)
40dad0:	89 71 18             	mov    %esi,0x18(%ecx)
40dad3:	33 db                	xor    %ebx,%ebx
40dad5:	53                   	push   %ebx
40dad6:	53                   	push   %ebx
40dad7:	53                   	push   %ebx
40dad8:	53                   	push   %ebx
40dad9:	53                   	push   %ebx
40dada:	e8 6d 99 ff ff       	call   0x40744c
40dadf:	83 c4 18             	add    $0x18,%esp
40dae2:	8b c6                	mov    %esi,%eax
40dae4:	e9 47 01 00 00       	jmp    0x40dc30
40dae9:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
40daed:	77 10                	ja     0x40daff
40daef:	8b 45 30             	mov    0x30(%ebp),%eax
40daf2:	6a 16                	push   $0x16
40daf4:	5e                   	pop    %esi
40daf5:	50                   	push   %eax
40daf6:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40dafa:	89 70 18             	mov    %esi,0x18(%eax)
40dafd:	eb d4                	jmp    0x40dad3
40daff:	83 7d 14 00          	cmpl   $0x0,0x14(%ebp)
40db03:	74 ea                	je     0x40daef
40db05:	33 db                	xor    %ebx,%ebx
40db07:	39 5d 18             	cmp    %ebx,0x18(%ebp)
40db0a:	77 10                	ja     0x40db1c
40db0c:	8b 45 30             	mov    0x30(%ebp),%eax
40db0f:	6a 16                	push   $0x16
40db11:	5e                   	pop    %esi
40db12:	50                   	push   %eax
40db13:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40db17:	89 70 18             	mov    %esi,0x18(%eax)
40db1a:	eb b9                	jmp    0x40dad5
40db1c:	8b 75 1c             	mov    0x1c(%ebp),%esi
40db1f:	83 fe 41             	cmp    $0x41,%esi
40db22:	74 12                	je     0x40db36
40db24:	83 fe 45             	cmp    $0x45,%esi
40db27:	74 0d                	je     0x40db36
40db29:	83 fe 46             	cmp    $0x46,%esi
40db2c:	74 08                	je     0x40db36
40db2e:	88 5d fc             	mov    %bl,-0x4(%ebp)
40db31:	83 fe 47             	cmp    $0x47,%esi
40db34:	75 04                	jne    0x40db3a
40db36:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40db3a:	8b 4d 24             	mov    0x24(%ebp),%ecx
40db3d:	8b c1                	mov    %ecx,%eax
40db3f:	83 e0 08             	and    $0x8,%eax
40db42:	0b c3                	or     %ebx,%eax
40db44:	75 41                	jne    0x40db87
40db46:	ff 75 08             	push   0x8(%ebp)
40db49:	e8 8e f5 ff ff       	call   0x40d0dc
40db4e:	59                   	pop    %ecx
40db4f:	8b c8                	mov    %eax,%ecx
40db51:	85 c9                	test   %ecx,%ecx
40db53:	74 2f                	je     0x40db84
40db55:	8b 45 08             	mov    0x8(%ebp),%eax
40db58:	39 58 04             	cmp    %ebx,0x4(%eax)
40db5b:	7f 0c                	jg     0x40db69
40db5d:	7c 04                	jl     0x40db63
40db5f:	39 18                	cmp    %ebx,(%eax)
40db61:	73 06                	jae    0x40db69
40db63:	c6 45 f8 01          	movb   $0x1,-0x8(%ebp)
40db67:	eb 03                	jmp    0x40db6c
40db69:	88 5d f8             	mov    %bl,-0x8(%ebp)
40db6c:	ff 75 fc             	push   -0x4(%ebp)
40db6f:	ff 75 10             	push   0x10(%ebp)
40db72:	57                   	push   %edi
40db73:	ff 75 f8             	push   -0x8(%ebp)
40db76:	51                   	push   %ecx
40db77:	e8 dc fd ff ff       	call   0x40d958
40db7c:	83 c4 14             	add    $0x14,%esp
40db7f:	e9 ac 00 00 00       	jmp    0x40dc30
40db84:	8b 4d 24             	mov    0x24(%ebp),%ecx
40db87:	8b c1                	mov    %ecx,%eax
40db89:	83 e0 10             	and    $0x10,%eax
40db8c:	0b c3                	or     %ebx,%eax
40db8e:	74 04                	je     0x40db94
40db90:	6a 03                	push   $0x3
40db92:	eb 02                	jmp    0x40db96
40db94:	6a 02                	push   $0x2
40db96:	83 e1 20             	and    $0x20,%ecx
40db99:	0b cb                	or     %ebx,%ecx
40db9b:	58                   	pop    %eax
40db9c:	74 03                	je     0x40dba1
40db9e:	8b 5d 2c             	mov    0x2c(%ebp),%ebx
40dba1:	83 fe 61             	cmp    $0x61,%esi
40dba4:	7f 2b                	jg     0x40dbd1
40dba6:	74 0a                	je     0x40dbb2
40dba8:	83 ee 41             	sub    $0x41,%esi
40dbab:	74 05                	je     0x40dbb2
40dbad:	83 ee 04             	sub    $0x4,%esi
40dbb0:	eb 22                	jmp    0x40dbd4
40dbb2:	ff 75 30             	push   0x30(%ebp)
40dbb5:	53                   	push   %ebx
40dbb6:	50                   	push   %eax
40dbb7:	ff 75 fc             	push   -0x4(%ebp)
40dbba:	ff 75 20             	push   0x20(%ebp)
40dbbd:	ff 75 18             	push   0x18(%ebp)
40dbc0:	ff 75 14             	push   0x14(%ebp)
40dbc3:	ff 75 10             	push   0x10(%ebp)
40dbc6:	57                   	push   %edi
40dbc7:	ff 75 08             	push   0x8(%ebp)
40dbca:	e8 12 f6 ff ff       	call   0x40d1e1
40dbcf:	eb 5c                	jmp    0x40dc2d
40dbd1:	83 ee 65             	sub    $0x65,%esi
40dbd4:	ff 75 30             	push   0x30(%ebp)
40dbd7:	53                   	push   %ebx
40dbd8:	74 3a                	je     0x40dc14
40dbda:	83 ee 01             	sub    $0x1,%esi
40dbdd:	74 1b                	je     0x40dbfa
40dbdf:	50                   	push   %eax
40dbe0:	ff 75 fc             	push   -0x4(%ebp)
40dbe3:	ff 75 20             	push   0x20(%ebp)
40dbe6:	ff 75 18             	push   0x18(%ebp)
40dbe9:	ff 75 14             	push   0x14(%ebp)
40dbec:	ff 75 10             	push   0x10(%ebp)
40dbef:	57                   	push   %edi
40dbf0:	ff 75 08             	push   0x8(%ebp)
40dbf3:	e8 91 fc ff ff       	call   0x40d889