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
40dc82:	83 c1 d0             	add    $0xffffffd0,%ecx
40dc85:	eb 23                	jmp    0x40dcaa
40dc87:	8a c3                	mov    %bl,%al
40dc89:	2c 61                	sub    $0x61,%al
40dc8b:	3c 19                	cmp    $0x19,%al
40dc8d:	77 08                	ja     0x40dc97
40dc8f:	0f be cb             	movsbl %bl,%ecx
40dc92:	83 c1 a9             	add    $0xffffffa9,%ecx
40dc95:	eb 13                	jmp    0x40dcaa
40dc97:	8a c3                	mov    %bl,%al
40dc99:	2c 41                	sub    $0x41,%al
40dc9b:	3c 19                	cmp    $0x19,%al
40dc9d:	77 08                	ja     0x40dca7
40dc9f:	0f be cb             	movsbl %bl,%ecx
40dca2:	83 c1 c9             	add    $0xffffffc9,%ecx
40dca5:	eb 03                	jmp    0x40dcaa
40dca7:	83 c9 ff             	or     $0xffffffff,%ecx
40dcaa:	83 f9 ff             	cmp    $0xffffffff,%ecx
40dcad:	74 2f                	je     0x40dcde
40dcaf:	3b ce                	cmp    %esi,%ecx
40dcb1:	73 2b                	jae    0x40dcde
40dcb3:	8b 45 f4             	mov    -0xc(%ebp),%eax
40dcb6:	3b 45 f0             	cmp    -0x10(%ebp),%eax
40dcb9:	72 0b                	jb     0x40dcc6
40dcbb:	75 05                	jne    0x40dcc2
40dcbd:	3b 4d ec             	cmp    -0x14(%ebp),%ecx
40dcc0:	76 04                	jbe    0x40dcc6
40dcc2:	6a 0c                	push   $0xc
40dcc4:	eb 0a                	jmp    0x40dcd0
40dcc6:	0f af c6             	imul   %esi,%eax
40dcc9:	6a 08                	push   $0x8
40dccb:	03 c1                	add    %ecx,%eax
40dccd:	89 45 f4             	mov    %eax,-0xc(%ebp)
40dcd0:	8a 1f                	mov    (%edi),%bl
40dcd2:	47                   	inc    %edi
40dcd3:	58                   	pop    %eax
40dcd4:	88 5d fc             	mov    %bl,-0x4(%ebp)
40dcd7:	0b d0                	or     %eax,%edx
40dcd9:	89 7d 0c             	mov    %edi,0xc(%ebp)
40dcdc:	eb 99                	jmp    0x40dc77
40dcde:	ff 75 fc             	push   -0x4(%ebp)
40dce1:	8d 4d 0c             	lea    0xc(%ebp),%ecx
40dce4:	89 55 f8             	mov    %edx,-0x8(%ebp)
40dce7:	e8 75 06 00 00       	call   0x40e361
40dcec:	8b 5d f8             	mov    -0x8(%ebp),%ebx
40dcef:	f6 c3 08             	test   $0x8,%bl
40dcf2:	75 0a                	jne    0x40dcfe
40dcf4:	8b 45 e8             	mov    -0x18(%ebp),%eax
40dcf7:	33 db                	xor    %ebx,%ebx
40dcf9:	89 45 0c             	mov    %eax,0xc(%ebp)
40dcfc:	eb 41                	jmp    0x40dd3f
40dcfe:	8b 7d f4             	mov    -0xc(%ebp),%edi
40dd01:	57                   	push   %edi
40dd02:	53                   	push   %ebx
40dd03:	e8 fd fd ff ff       	call   0x40db05
40dd08:	59                   	pop    %ecx
40dd09:	59                   	pop    %ecx
40dd0a:	84 c0                	test   %al,%al
40dd0c:	74 28                	je     0x40dd36
40dd0e:	e8 c0 0f 00 00       	call   0x40ecd3
40dd13:	c7 00 22 00 00 00    	movl   $0x22,(%eax)
40dd19:	f6 c3 01             	test   $0x1,%bl
40dd1c:	75 05                	jne    0x40dd23
40dd1e:	83 cf ff             	or     $0xffffffff,%edi
40dd21:	eb 1a                	jmp    0x40dd3d
40dd23:	f6 c3 02             	test   $0x2,%bl
40dd26:	74 07                	je     0x40dd2f
40dd28:	bb 00 00 00 80       	mov    $0x80000000,%ebx
40dd2d:	eb 10                	jmp    0x40dd3f
40dd2f:	bb ff ff ff 7f       	mov    $0x7fffffff,%ebx
40dd34:	eb 09                	jmp    0x40dd3f
40dd36:	f6 c3 02             	test   $0x2,%bl
40dd39:	74 02                	je     0x40dd3d
40dd3b:	f7 df                	neg    %edi
40dd3d:	8b df                	mov    %edi,%ebx
40dd3f:	80 7d e4 00          	cmpb   $0x0,-0x1c(%ebp)
40dd43:	5f                   	pop    %edi
40dd44:	0f 84 25 fe ff ff    	je     0x40db6f
40dd4a:	8b 45 d8             	mov    -0x28(%ebp),%eax
40dd4d:	83 a0 50 03 00 00 fd 	andl   $0xfffffffd,0x350(%eax)
40dd54:	e9 16 fe ff ff       	jmp    0x40db6f
40dd59:	8b ff                	mov    %edi,%edi
40dd5b:	55                   	push   %ebp
40dd5c:	8b ec                	mov    %esp,%ebp
40dd5e:	81 ec a0 00 00 00    	sub    $0xa0,%esp
40dd64:	8d 4d 0c             	lea    0xc(%ebp),%ecx
40dd67:	53                   	push   %ebx
40dd68:	57                   	push   %edi
40dd69:	e8 cf fb ff ff       	call   0x40d93d
40dd6e:	84 c0                	test   %al,%al
40dd70:	74 21                	je     0x40dd93
40dd72:	8b 7d 14             	mov    0x14(%ebp),%edi
40dd75:	85 ff                	test   %edi,%edi
40dd77:	74 2e                	je     0x40dda7
40dd79:	83 ff 02             	cmp    $0x2,%edi
40dd7c:	7c 05                	jl     0x40dd83
40dd7e:	83 ff 24             	cmp    $0x24,%edi
40dd81:	7e 24                	jle    0x40dda7
40dd83:	e8 4b 0f 00 00       	call   0x40ecd3
40dd88:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40dd8e:	e8 83 0e 00 00       	call   0x40ec16
40dd93:	33 db                	xor    %ebx,%ebx
40dd95:	8b 55 10             	mov    0x10(%ebp),%edx
40dd98:	85 d2                	test   %edx,%edx
40dd9a:	74 05                	je     0x40dda1
40dd9c:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40dd9f:	89 0a                	mov    %ecx,(%edx)
40dda1:	5f                   	pop    %edi
40dda2:	8b c3                	mov    %ebx,%eax
40dda4:	5b                   	pop    %ebx
40dda5:	c9                   	leave
40dda6:	c3                   	ret
40dda7:	56                   	push   %esi
40dda8:	ff 75 08             	push   0x8(%ebp)
40ddab:	8d 8d 60 ff ff ff    	lea    -0xa0(%ebp),%ecx
40ddb1:	e8 94 ec ff ff       	call   0x40ca4a
40ddb6:	8b 45 0c             	mov    0xc(%ebp),%eax
40ddb9:	33 f6                	xor    %esi,%esi
40ddbb:	89 75 fc             	mov    %esi,-0x4(%ebp)
40ddbe:	89 85 70 ff ff ff    	mov    %eax,-0x90(%ebp)
40ddc4:	eb 03                	jmp    0x40ddc9
40ddc6:	8b 45 0c             	mov    0xc(%ebp),%eax
40ddc9:	0f b7 30             	movzwl (%eax),%esi
40ddcc:	83 c0 02             	add    $0x2,%eax
40ddcf:	6a 08                	push   $0x8
40ddd1:	56                   	push   %esi
40ddd2:	89 45 0c             	mov    %eax,0xc(%ebp)
40ddd5:	e8 7e 53 00 00       	call   0x413158
40ddda:	59                   	pop    %ecx
40dddb:	59                   	pop    %ecx
40dddc:	85 c0                	test   %eax,%eax
40ddde:	75 e6                	jne    0x40ddc6
40dde0:	0f b6 5d 18          	movzbl 0x18(%ebp),%ebx
40dde4:	66 83 fe 2d          	cmp    $0x2d,%si
40dde8:	75 05                	jne    0x40ddef
40ddea:	83 cb 02             	or     $0x2,%ebx
40dded:	eb 06                	jmp    0x40ddf5
40ddef:	66 83 fe 2b          	cmp    $0x2b,%si
40ddf3:	75 0e                	jne    0x40de03
40ddf5:	8b 55 0c             	mov    0xc(%ebp),%edx
40ddf8:	0f b7 32             	movzwl (%edx),%esi
40ddfb:	83 c2 02             	add    $0x2,%edx
40ddfe:	89 55 0c             	mov    %edx,0xc(%ebp)
40de01:	eb 03                	jmp    0x40de06
40de03:	8b 55 0c             	mov    0xc(%ebp),%edx
40de06:	c7 85 74 ff ff ff 3a 	movl   $0x3a,-0x8c(%ebp)
40de0d:	00 00 00
40de10:	b8 10 ff 00 00       	mov    $0xff10,%eax
40de15:	c7 45 f8 60 06 00 00 	movl   $0x660,-0x8(%ebp)
40de1c:	c7 45 f4 6a 06 00 00 	movl   $0x66a,-0xc(%ebp)
40de23:	c7 45 f0 f0 06 00 00 	movl   $0x6f0,-0x10(%ebp)
40de2a:	c7 45 ec fa 06 00 00 	movl   $0x6fa,-0x14(%ebp)
40de31:	c7 45 e8 66 09 00 00 	movl   $0x966,-0x18(%ebp)
40de38:	c7 45 e4 70 09 00 00 	movl   $0x970,-0x1c(%ebp)
40de3f:	c7 45 e0 e6 09 00 00 	movl   $0x9e6,-0x20(%ebp)
40de46:	c7 45 dc f0 09 00 00 	movl   $0x9f0,-0x24(%ebp)
40de4d:	c7 45 d8 66 0a 00 00 	movl   $0xa66,-0x28(%ebp)
40de54:	c7 45 d4 70 0a 00 00 	movl   $0xa70,-0x2c(%ebp)
40de5b:	c7 45 d0 e6 0a 00 00 	movl   $0xae6,-0x30(%ebp)
40de62:	c7 45 cc f0 0a 00 00 	movl   $0xaf0,-0x34(%ebp)
40de69:	c7 45 c8 66 0b 00 00 	movl   $0xb66,-0x38(%ebp)
40de70:	c7 45 c4 70 0b 00 00 	movl   $0xb70,-0x3c(%ebp)
40de77:	c7 45 c0 66 0c 00 00 	movl   $0xc66,-0x40(%ebp)
40de7e:	c7 45 bc 70 0c 00 00 	movl   $0xc70,-0x44(%ebp)
40de85:	c7 45 b8 e6 0c 00 00 	movl   $0xce6,-0x48(%ebp)
40de8c:	c7 45 b4 f0 0c 00 00 	movl   $0xcf0,-0x4c(%ebp)
40de93:	c7 45 b0 66 0d 00 00 	movl   $0xd66,-0x50(%ebp)
40de9a:	c7 45 ac 70 0d 00 00 	movl   $0xd70,-0x54(%ebp)
40dea1:	c7 45 a8 50 0e 00 00 	movl   $0xe50,-0x58(%ebp)
40dea8:	c7 45 a4 5a 0e 00 00 	movl   $0xe5a,-0x5c(%ebp)
40deaf:	c7 45 a0 d0 0e 00 00 	movl   $0xed0,-0x60(%ebp)
40deb6:	c7 45 9c da 0e 00 00 	movl   $0xeda,-0x64(%ebp)
40debd:	c7 45 98 20 0f 00 00 	movl   $0xf20,-0x68(%ebp)
40dec4:	c7 45 94 2a 0f 00 00 	movl   $0xf2a,-0x6c(%ebp)
40decb:	c7 45 90 40 10 00 00 	movl   $0x1040,-0x70(%ebp)