40d92f:	3b 7d 08             	cmp    0x8(%ebp),%edi
40d932:	7c d6                	jl     0x40d90a
40d934:	8b c7                	mov    %edi,%eax
40d936:	5f                   	pop    %edi
40d937:	5e                   	pop    %esi
40d938:	5b                   	pop    %ebx
40d939:	5d                   	pop    %ebp
40d93a:	c2 08 00             	ret    $0x8
40d93d:	83 39 00             	cmpl   $0x0,(%ecx)
40d940:	75 13                	jne    0x40d955
40d942:	e8 8c 13 00 00       	call   0x40ecd3
40d947:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40d94d:	e8 c4 12 00 00       	call   0x40ec16
40d952:	32 c0                	xor    %al,%al
40d954:	c3                   	ret
40d955:	b0 01                	mov    $0x1,%al
40d957:	c3                   	ret
40d958:	83 79 1c 00          	cmpl   $0x0,0x1c(%ecx)
40d95c:	74 19                	je     0x40d977
40d95e:	83 79 1c 07          	cmpl   $0x7,0x1c(%ecx)
40d962:	74 13                	je     0x40d977
40d964:	e8 6a 13 00 00       	call   0x40ecd3
40d969:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40d96f:	e8 a2 12 00 00       	call   0x40ec16
40d974:	32 c0                	xor    %al,%al
40d976:	c3                   	ret
40d977:	b0 01                	mov    $0x1,%al
40d979:	c3                   	ret
40d97a:	8b ff                	mov    %edi,%edi
40d97c:	55                   	push   %ebp
40d97d:	8b ec                	mov    %esp,%ebp
40d97f:	8b d1                	mov    %ecx,%edx
40d981:	8b 0a                	mov    (%edx),%ecx
40d983:	8b 41 08             	mov    0x8(%ecx),%eax
40d986:	3b 41 04             	cmp    0x4(%ecx),%eax
40d989:	8b 45 0c             	mov    0xc(%ebp),%eax
40d98c:	75 14                	jne    0x40d9a2
40d98e:	80 79 0c 00          	cmpb   $0x0,0xc(%ecx)
40d992:	74 04                	je     0x40d998
40d994:	ff 00                	incl   (%eax)
40d996:	eb 03                	jmp    0x40d99b
40d998:	83 08 ff             	orl    $0xffffffff,(%eax)
40d99b:	8b 02                	mov    (%edx),%eax
40d99d:	8a 40 0c             	mov    0xc(%eax),%al
40d9a0:	eb 19                	jmp    0x40d9bb
40d9a2:	ff 00                	incl   (%eax)
40d9a4:	8b 02                	mov    (%edx),%eax
40d9a6:	ff 40 08             	incl   0x8(%eax)
40d9a9:	8b 02                	mov    (%edx),%eax
40d9ab:	8b 08                	mov    (%eax),%ecx
40d9ad:	66 8b 45 08          	mov    0x8(%ebp),%ax
40d9b1:	66 89 01             	mov    %ax,(%ecx)
40d9b4:	8b 02                	mov    (%edx),%eax
40d9b6:	83 00 02             	addl   $0x2,(%eax)
40d9b9:	b0 01                	mov    $0x1,%al
40d9bb:	5d                   	pop    %ebp
40d9bc:	c2 08 00             	ret    $0x8
40d9bf:	8b ff                	mov    %edi,%edi
40d9c1:	55                   	push   %ebp
40d9c2:	8b ec                	mov    %esp,%ebp
40d9c4:	83 ec 0c             	sub    $0xc,%esp
40d9c7:	53                   	push   %ebx
40d9c8:	56                   	push   %esi
40d9c9:	8b f1                	mov    %ecx,%esi
40d9cb:	57                   	push   %edi
40d9cc:	80 7e 3c 00          	cmpb   $0x0,0x3c(%esi)
40d9d0:	75 58                	jne    0x40da2a
40d9d2:	33 ff                	xor    %edi,%edi
40d9d4:	39 7e 38             	cmp    %edi,0x38(%esi)
40d9d7:	7e 51                	jle    0x40da2a
40d9d9:	8b 4e 34             	mov    0x34(%esi),%ecx
40d9dc:	8d 5e 18             	lea    0x18(%esi),%ebx
40d9df:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40d9e2:	33 c0                	xor    %eax,%eax
40d9e4:	66 89 45 fc          	mov    %ax,-0x4(%ebp)
40d9e8:	8b 46 08             	mov    0x8(%esi),%eax
40d9eb:	50                   	push   %eax
40d9ec:	8b 00                	mov    (%eax),%eax
40d9ee:	ff 70 04             	push   0x4(%eax)
40d9f1:	8d 45 fc             	lea    -0x4(%ebp),%eax
40d9f4:	51                   	push   %ecx
40d9f5:	50                   	push   %eax
40d9f6:	e8 5c 4a 00 00       	call   0x412457
40d9fb:	83 c4 10             	add    $0x10,%esp
40d9fe:	89 45 f4             	mov    %eax,-0xc(%ebp)
40da01:	85 c0                	test   %eax,%eax
40da03:	7e 20                	jle    0x40da25
40da05:	53                   	push   %ebx
40da06:	ff 75 fc             	push   -0x4(%ebp)
40da09:	8d 8e 48 04 00 00    	lea    0x448(%esi),%ecx
40da0f:	e8 66 ff ff ff       	call   0x40d97a
40da14:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40da17:	03 4d f4             	add    -0xc(%ebp),%ecx
40da1a:	47                   	inc    %edi
40da1b:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40da1e:	3b 7e 38             	cmp    0x38(%esi),%edi
40da21:	75 bf                	jne    0x40d9e2
40da23:	eb 1e                	jmp    0x40da43
40da25:	83 0b ff             	orl    $0xffffffff,(%ebx)
40da28:	eb 19                	jmp    0x40da43
40da2a:	8d 46 0c             	lea    0xc(%esi),%eax
40da2d:	50                   	push   %eax
40da2e:	8d 46 18             	lea    0x18(%esi),%eax
40da31:	50                   	push   %eax
40da32:	ff 76 38             	push   0x38(%esi)
40da35:	8d 8e 48 04 00 00    	lea    0x448(%esi),%ecx
40da3b:	ff 76 34             	push   0x34(%esi)
40da3e:	e8 09 00 00 00       	call   0x40da4c
40da43:	5f                   	pop    %edi
40da44:	5e                   	pop    %esi
40da45:	b0 01                	mov    $0x1,%al
40da47:	5b                   	pop    %ebx
40da48:	c9                   	leave
40da49:	c2 04 00             	ret    $0x4
40da4c:	8b ff                	mov    %edi,%edi
40da4e:	55                   	push   %ebp
40da4f:	8b ec                	mov    %esp,%ebp
40da51:	51                   	push   %ecx
40da52:	53                   	push   %ebx
40da53:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40da56:	8b c1                	mov    %ecx,%eax
40da58:	89 45 fc             	mov    %eax,-0x4(%ebp)
40da5b:	85 db                	test   %ebx,%ebx
40da5d:	74 59                	je     0x40dab8
40da5f:	8b 00                	mov    (%eax),%eax
40da61:	57                   	push   %edi
40da62:	8b 78 04             	mov    0x4(%eax),%edi
40da65:	39 78 08             	cmp    %edi,0x8(%eax)
40da68:	75 0b                	jne    0x40da75
40da6a:	80 78 0c 00          	cmpb   $0x0,0xc(%eax)
40da6e:	8b 45 10             	mov    0x10(%ebp),%eax
40da71:	74 3d                	je     0x40dab0
40da73:	eb 33                	jmp    0x40daa8
40da75:	2b 78 08             	sub    0x8(%eax),%edi
40da78:	3b fb                	cmp    %ebx,%edi
40da7a:	72 02                	jb     0x40da7e
40da7c:	8b fb                	mov    %ebx,%edi
40da7e:	56                   	push   %esi
40da7f:	8d 34 3f             	lea    (%edi,%edi,1),%esi
40da82:	56                   	push   %esi
40da83:	ff 75 08             	push   0x8(%ebp)
40da86:	ff 30                	push   (%eax)
40da88:	e8 43 c1 ff ff       	call   0x409bd0
40da8d:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40da90:	83 c4 0c             	add    $0xc,%esp
40da93:	8b 01                	mov    (%ecx),%eax
40da95:	01 30                	add    %esi,(%eax)
40da97:	8b 01                	mov    (%ecx),%eax
40da99:	5e                   	pop    %esi
40da9a:	01 78 08             	add    %edi,0x8(%eax)
40da9d:	8b 01                	mov    (%ecx),%eax
40da9f:	80 78 0c 00          	cmpb   $0x0,0xc(%eax)
40daa3:	8b 45 10             	mov    0x10(%ebp),%eax
40daa6:	74 04                	je     0x40daac
40daa8:	01 18                	add    %ebx,(%eax)
40daaa:	eb 0b                	jmp    0x40dab7
40daac:	3b fb                	cmp    %ebx,%edi
40daae:	74 05                	je     0x40dab5
40dab0:	83 08 ff             	orl    $0xffffffff,(%eax)
40dab3:	eb 02                	jmp    0x40dab7
40dab5:	01 38                	add    %edi,(%eax)
40dab7:	5f                   	pop    %edi
40dab8:	5b                   	pop    %ebx
40dab9:	c9                   	leave
40daba:	c2 10 00             	ret    $0x10
40dabd:	8b ff                	mov    %edi,%edi
40dabf:	55                   	push   %ebp
40dac0:	8b ec                	mov    %esp,%ebp
40dac2:	ff 75 20             	push   0x20(%ebp)
40dac5:	ff 75 1c             	push   0x1c(%ebp)
40dac8:	ff 75 18             	push   0x18(%ebp)
40dacb:	ff 75 14             	push   0x14(%ebp)
40dace:	ff 75 10             	push   0x10(%ebp)
40dad1:	ff 75 0c             	push   0xc(%ebp)
40dad4:	ff 75 08             	push   0x8(%ebp)
40dad7:	e8 f5 e9 ff ff       	call   0x40c4d1
40dadc:	83 c4 1c             	add    $0x1c,%esp
40dadf:	5d                   	pop    %ebp
40dae0:	c3                   	ret
40dae1:	8b ff                	mov    %edi,%edi
40dae3:	55                   	push   %ebp
40dae4:	8b ec                	mov    %esp,%ebp
40dae6:	ff 75 20             	push   0x20(%ebp)
40dae9:	ff 75 1c             	push   0x1c(%ebp)
40daec:	ff 75 18             	push   0x18(%ebp)
40daef:	ff 75 14             	push   0x14(%ebp)
40daf2:	ff 75 10             	push   0x10(%ebp)
40daf5:	ff 75 0c             	push   0xc(%ebp)
40daf8:	ff 75 08             	push   0x8(%ebp)
40dafb:	e8 58 eb ff ff       	call   0x40c658
40db00:	83 c4 1c             	add    $0x1c,%esp
40db03:	5d                   	pop    %ebp
40db04:	c3                   	ret
40db05:	8b ff                	mov    %edi,%edi
40db07:	55                   	push   %ebp
40db08:	8b ec                	mov    %esp,%ebp
40db0a:	f6 45 08 04          	testb  $0x4,0x8(%ebp)
40db0e:	75 15                	jne    0x40db25
40db10:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
40db14:	74 1c                	je     0x40db32
40db16:	f6 45 08 02          	testb  $0x2,0x8(%ebp)
40db1a:	74 0d                	je     0x40db29
40db1c:	81 7d 0c 00 00 00 80 	cmpl   $0x80000000,0xc(%ebp)
40db23:	76 0d                	jbe    0x40db32
40db25:	b0 01                	mov    $0x1,%al
40db27:	5d                   	pop    %ebp
40db28:	c3                   	ret
40db29:	81 7d 0c ff ff ff 7f 	cmpl   $0x7fffffff,0xc(%ebp)
40db30:	77 f3                	ja     0x40db25
40db32:	32 c0                	xor    %al,%al
40db34:	5d                   	pop    %ebp
40db35:	c3                   	ret
40db36:	8b ff                	mov    %edi,%edi
40db38:	55                   	push   %ebp
40db39:	8b ec                	mov    %esp,%ebp
40db3b:	83 ec 28             	sub    $0x28,%esp
40db3e:	8d 4d 0c             	lea    0xc(%ebp),%ecx
40db41:	53                   	push   %ebx
40db42:	56                   	push   %esi
40db43:	e8 f5 fd ff ff       	call   0x40d93d
40db48:	84 c0                	test   %al,%al
40db4a:	74 21                	je     0x40db6d
40db4c:	8b 75 14             	mov    0x14(%ebp),%esi
40db4f:	85 f6                	test   %esi,%esi
40db51:	74 2e                	je     0x40db81
40db53:	83 fe 02             	cmp    $0x2,%esi
40db56:	7c 05                	jl     0x40db5d
40db58:	83 fe 24             	cmp    $0x24,%esi
40db5b:	7e 24                	jle    0x40db81
40db5d:	e8 71 11 00 00       	call   0x40ecd3
40db62:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40db68:	e8 a9 10 00 00       	call   0x40ec16
40db6d:	33 db                	xor    %ebx,%ebx
40db6f:	8b 55 10             	mov    0x10(%ebp),%edx
40db72:	85 d2                	test   %edx,%edx
40db74:	74 05                	je     0x40db7b
40db76:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40db79:	89 0a                	mov    %ecx,(%edx)
40db7b:	5e                   	pop    %esi
40db7c:	8b c3                	mov    %ebx,%eax
40db7e:	5b                   	pop    %ebx
40db7f:	c9                   	leave
40db80:	c3                   	ret
40db81:	57                   	push   %edi
40db82:	ff 75 08             	push   0x8(%ebp)
40db85:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40db88:	e8 bd ee ff ff       	call   0x40ca4a
40db8d:	8b 45 0c             	mov    0xc(%ebp),%eax
40db90:	33 ff                	xor    %edi,%edi
40db92:	89 7d f4             	mov    %edi,-0xc(%ebp)
40db95:	89 45 e8             	mov    %eax,-0x18(%ebp)
40db98:	eb 03                	jmp    0x40db9d
40db9a:	8b 45 0c             	mov    0xc(%ebp),%eax
40db9d:	8a 18                	mov    (%eax),%bl
40db9f:	40                   	inc    %eax
40dba0:	89 45 0c             	mov    %eax,0xc(%ebp)
40dba3:	8d 45 dc             	lea    -0x24(%ebp),%eax
40dba6:	50                   	push   %eax
40dba7:	0f b6 c3             	movzbl %bl,%eax
40dbaa:	6a 08                	push   $0x8
40dbac:	50                   	push   %eax
40dbad:	88 5d fc             	mov    %bl,-0x4(%ebp)
40dbb0:	e8 03 08 00 00       	call   0x40e3b8
40dbb5:	83 c4 0c             	add    $0xc,%esp
40dbb8:	85 c0                	test   %eax,%eax
40dbba:	75 de                	jne    0x40db9a
40dbbc:	0f b6 45 18          	movzbl 0x18(%ebp),%eax
40dbc0:	89 45 f8             	mov    %eax,-0x8(%ebp)
40dbc3:	80 fb 2d             	cmp    $0x2d,%bl
40dbc6:	75 08                	jne    0x40dbd0
40dbc8:	83 c8 02             	or     $0x2,%eax
40dbcb:	89 45 f8             	mov    %eax,-0x8(%ebp)
40dbce:	eb 05                	jmp    0x40dbd5
40dbd0:	80 fb 2b             	cmp    $0x2b,%bl
40dbd3:	75 0e                	jne    0x40dbe3
40dbd5:	8b 7d 0c             	mov    0xc(%ebp),%edi
40dbd8:	8a 1f                	mov    (%edi),%bl
40dbda:	47                   	inc    %edi
40dbdb:	88 5d fc             	mov    %bl,-0x4(%ebp)
40dbde:	89 7d 0c             	mov    %edi,0xc(%ebp)
40dbe1:	eb 03                	jmp    0x40dbe6
40dbe3:	8b 7d 0c             	mov    0xc(%ebp),%edi
40dbe6:	85 f6                	test   %esi,%esi
40dbe8:	74 05                	je     0x40dbef
40dbea:	83 fe 10             	cmp    $0x10,%esi
40dbed:	75 78                	jne    0x40dc67
40dbef:	8a c3                	mov    %bl,%al
40dbf1:	2c 30                	sub    $0x30,%al
40dbf3:	3c 09                	cmp    $0x9,%al
40dbf5:	77 08                	ja     0x40dbff
40dbf7:	0f be c3             	movsbl %bl,%eax
40dbfa:	83 c0 d0             	add    $0xffffffd0,%eax
40dbfd:	eb 23                	jmp    0x40dc22
40dbff:	8a c3                	mov    %bl,%al
40dc01:	2c 61                	sub    $0x61,%al
40dc03:	3c 19                	cmp    $0x19,%al
40dc05:	77 08                	ja     0x40dc0f
40dc07:	0f be c3             	movsbl %bl,%eax
40dc0a:	83 c0 a9             	add    $0xffffffa9,%eax
40dc0d:	eb 13                	jmp    0x40dc22
40dc0f:	8a c3                	mov    %bl,%al
40dc11:	2c 41                	sub    $0x41,%al
40dc13:	3c 19                	cmp    $0x19,%al
40dc15:	77 08                	ja     0x40dc1f
40dc17:	0f be c3             	movsbl %bl,%eax
40dc1a:	83 c0 c9             	add    $0xffffffc9,%eax
40dc1d:	eb 03                	jmp    0x40dc22
40dc1f:	83 c8 ff             	or     $0xffffffff,%eax
40dc22:	85 c0                	test   %eax,%eax
40dc24:	74 09                	je     0x40dc2f
40dc26:	85 f6                	test   %esi,%esi
40dc28:	75 3d                	jne    0x40dc67
40dc2a:	6a 0a                	push   $0xa
40dc2c:	5e                   	pop    %esi
40dc2d:	eb 38                	jmp    0x40dc67
40dc2f:	8a 07                	mov    (%edi),%al
40dc31:	47                   	inc    %edi
40dc32:	88 45 f0             	mov    %al,-0x10(%ebp)
40dc35:	89 7d 0c             	mov    %edi,0xc(%ebp)
40dc38:	3c 78                	cmp    $0x78,%al
40dc3a:	74 1b                	je     0x40dc57
40dc3c:	3c 58                	cmp    $0x58,%al
40dc3e:	74 17                	je     0x40dc57
40dc40:	85 f6                	test   %esi,%esi
40dc42:	75 03                	jne    0x40dc47
40dc44:	6a 08                	push   $0x8
40dc46:	5e                   	pop    %esi
40dc47:	ff 75 f0             	push   -0x10(%ebp)
40dc4a:	8d 4d 0c             	lea    0xc(%ebp),%ecx
40dc4d:	e8 0f 07 00 00       	call   0x40e361
40dc52:	8b 7d 0c             	mov    0xc(%ebp),%edi
40dc55:	eb 10                	jmp    0x40dc67
40dc57:	85 f6                	test   %esi,%esi
40dc59:	75 03                	jne    0x40dc5e
40dc5b:	6a 10                	push   $0x10
40dc5d:	5e                   	pop    %esi
40dc5e:	8a 1f                	mov    (%edi),%bl
40dc60:	47                   	inc    %edi
40dc61:	88 5d fc             	mov    %bl,-0x4(%ebp)
40dc64:	89 7d 0c             	mov    %edi,0xc(%ebp)
40dc67:	33 d2                	xor    %edx,%edx
40dc69:	83 c8 ff             	or     $0xffffffff,%eax
40dc6c:	f7 f6                	div    %esi
40dc6e:	89 55 ec             	mov    %edx,-0x14(%ebp)
40dc71:	8b 55 f8             	mov    -0x8(%ebp),%edx
40dc74:	89 45 f0             	mov    %eax,-0x10(%ebp)
40dc77:	8d 4b d0             	lea    -0x30(%ebx),%ecx
40dc7a:	80 f9 09             	cmp    $0x9,%cl
40dc7d:	77 08                	ja     0x40dc87
40dc7f:	0f be cb             	movsbl %bl,%ecx