40dafd:	eb 1c                	jmp    0x40db1b
40daff:	8d 45 fc             	lea    -0x4(%ebp),%eax
40db02:	8b cb                	mov    %ebx,%ecx
40db04:	50                   	push   %eax
40db05:	e8 b3 19 00 00       	call   0x40f4bd
40db0a:	ff 75 fc             	push   -0x4(%ebp)
40db0d:	89 b7 00 04 00 00    	mov    %esi,0x400(%edi)
40db13:	e8 f8 90 ff ff       	call   0x406c10
40db18:	59                   	pop    %ecx
40db19:	b0 01                	mov    $0x1,%al
40db1b:	5b                   	pop    %ebx
40db1c:	5f                   	pop    %edi
40db1d:	5e                   	pop    %esi
40db1e:	c9                   	leave
40db1f:	c2 08 00             	ret    $0x8
40db22:	8b ff                	mov    %edi,%edi
40db24:	55                   	push   %ebp
40db25:	8b ec                	mov    %esp,%ebp
40db27:	f6 45 08 04          	testb  $0x4,0x8(%ebp)
40db2b:	75 25                	jne    0x40db52
40db2d:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
40db31:	74 0f                	je     0x40db42
40db33:	f6 45 08 02          	testb  $0x2,0x8(%ebp)
40db37:	74 0d                	je     0x40db46
40db39:	81 7d 0c 00 00 00 80 	cmpl   $0x80000000,0xc(%ebp)
40db40:	77 10                	ja     0x40db52
40db42:	32 c0                	xor    %al,%al
40db44:	5d                   	pop    %ebp
40db45:	c3                   	ret
40db46:	81 7d 0c ff ff ff 7f 	cmpl   $0x7fffffff,0xc(%ebp)
40db4d:	0f 97 c0             	seta   %al
40db50:	5d                   	pop    %ebp
40db51:	c3                   	ret
40db52:	b0 01                	mov    $0x1,%al
40db54:	5d                   	pop    %ebp
40db55:	c3                   	ret
40db56:	8b ff                	mov    %edi,%edi
40db58:	55                   	push   %ebp
40db59:	8b ec                	mov    %esp,%ebp
40db5b:	8b 45 14             	mov    0x14(%ebp),%eax
40db5e:	48                   	dec    %eax
40db5f:	83 e8 01             	sub    $0x1,%eax
40db62:	74 1f                	je     0x40db83
40db64:	83 e8 01             	sub    $0x1,%eax
40db67:	74 16                	je     0x40db7f
40db69:	83 e8 09             	sub    $0x9,%eax
40db6c:	74 11                	je     0x40db7f
40db6e:	83 7d 14 0d          	cmpl   $0xd,0x14(%ebp)
40db72:	74 0f                	je     0x40db83
40db74:	8a 45 10             	mov    0x10(%ebp),%al
40db77:	3c 63                	cmp    $0x63,%al
40db79:	74 08                	je     0x40db83
40db7b:	3c 73                	cmp    $0x73,%al
40db7d:	74 04                	je     0x40db83
40db7f:	b0 01                	mov    $0x1,%al
40db81:	5d                   	pop    %ebp
40db82:	c3                   	ret
40db83:	32 c0                	xor    %al,%al
40db85:	5d                   	pop    %ebp
40db86:	c3                   	ret
40db87:	8b ff                	mov    %edi,%edi
40db89:	55                   	push   %ebp
40db8a:	8b ec                	mov    %esp,%ebp
40db8c:	8b 45 14             	mov    0x14(%ebp),%eax
40db8f:	48                   	dec    %eax
40db90:	83 e8 01             	sub    $0x1,%eax
40db93:	74 3c                	je     0x40dbd1
40db95:	83 e8 01             	sub    $0x1,%eax
40db98:	74 33                	je     0x40dbcd
40db9a:	83 e8 09             	sub    $0x9,%eax
40db9d:	74 2e                	je     0x40dbcd
40db9f:	83 7d 14 0d          	cmpl   $0xd,0x14(%ebp)
40dba3:	74 28                	je     0x40dbcd
40dba5:	8b 45 08             	mov    0x8(%ebp),%eax
40dba8:	83 e0 04             	and    $0x4,%eax
40dbab:	83 c8 00             	or     $0x0,%eax
40dbae:	6a 01                	push   $0x1
40dbb0:	58                   	pop    %eax
40dbb1:	74 04                	je     0x40dbb7
40dbb3:	8a c8                	mov    %al,%cl
40dbb5:	eb 02                	jmp    0x40dbb9
40dbb7:	32 c9                	xor    %cl,%cl
40dbb9:	66 83 7d 10 63       	cmpw   $0x63,0x10(%ebp)
40dbbe:	74 07                	je     0x40dbc7
40dbc0:	66 83 7d 10 73       	cmpw   $0x73,0x10(%ebp)
40dbc5:	75 02                	jne    0x40dbc9
40dbc7:	32 c0                	xor    %al,%al
40dbc9:	32 c1                	xor    %cl,%al
40dbcb:	5d                   	pop    %ebp
40dbcc:	c3                   	ret
40dbcd:	b0 01                	mov    $0x1,%al
40dbcf:	5d                   	pop    %ebp
40dbd0:	c3                   	ret
40dbd1:	32 c0                	xor    %al,%al
40dbd3:	5d                   	pop    %ebp
40dbd4:	c3                   	ret
40dbd5:	8b ff                	mov    %edi,%edi
40dbd7:	55                   	push   %ebp
40dbd8:	8b ec                	mov    %esp,%ebp
40dbda:	8b 45 08             	mov    0x8(%ebp),%eax
40dbdd:	8b 4d 10             	mov    0x10(%ebp),%ecx
40dbe0:	8b 55 0c             	mov    0xc(%ebp),%edx
40dbe3:	89 10                	mov    %edx,(%eax)
40dbe5:	89 48 04             	mov    %ecx,0x4(%eax)
40dbe8:	85 c9                	test   %ecx,%ecx
40dbea:	74 02                	je     0x40dbee
40dbec:	89 11                	mov    %edx,(%ecx)
40dbee:	5d                   	pop    %ebp
40dbef:	c3                   	ret
40dbf0:	8b ff                	mov    %edi,%edi
40dbf2:	55                   	push   %ebp
40dbf3:	8b ec                	mov    %esp,%ebp
40dbf5:	83 ec 14             	sub    $0x14,%esp
40dbf8:	8d 4d 0c             	lea    0xc(%ebp),%ecx
40dbfb:	53                   	push   %ebx
40dbfc:	56                   	push   %esi
40dbfd:	e8 19 3d 00 00       	call   0x41191b
40dc02:	84 c0                	test   %al,%al
40dc04:	74 2f                	je     0x40dc35
40dc06:	8b 75 14             	mov    0x14(%ebp),%esi
40dc09:	85 f6                	test   %esi,%esi
40dc0b:	74 3d                	je     0x40dc4a
40dc0d:	83 fe 02             	cmp    $0x2,%esi
40dc10:	7c 05                	jl     0x40dc17
40dc12:	83 fe 24             	cmp    $0x24,%esi
40dc15:	7e 33                	jle    0x40dc4a
40dc17:	8b 45 08             	mov    0x8(%ebp),%eax
40dc1a:	50                   	push   %eax
40dc1b:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40dc1f:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
40dc26:	33 c0                	xor    %eax,%eax
40dc28:	50                   	push   %eax
40dc29:	50                   	push   %eax
40dc2a:	50                   	push   %eax
40dc2b:	50                   	push   %eax
40dc2c:	50                   	push   %eax
40dc2d:	e8 3f f7 ff ff       	call   0x40d371
40dc32:	83 c4 18             	add    $0x18,%esp
40dc35:	8b 4d 10             	mov    0x10(%ebp),%ecx
40dc38:	85 c9                	test   %ecx,%ecx
40dc3a:	0f 84 52 01 00 00    	je     0x40dd92
40dc40:	8b 45 0c             	mov    0xc(%ebp),%eax
40dc43:	89 01                	mov    %eax,(%ecx)
40dc45:	e9 48 01 00 00       	jmp    0x40dd92
40dc4a:	8b 45 0c             	mov    0xc(%ebp),%eax
40dc4d:	33 c9                	xor    %ecx,%ecx
40dc4f:	57                   	push   %edi
40dc50:	89 45 ec             	mov    %eax,-0x14(%ebp)
40dc53:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40dc56:	8a 18                	mov    (%eax),%bl
40dc58:	8d 78 01             	lea    0x1(%eax),%edi
40dc5b:	0f b6 45 18          	movzbl 0x18(%ebp),%eax
40dc5f:	88 5d fc             	mov    %bl,-0x4(%ebp)
40dc62:	89 7d 0c             	mov    %edi,0xc(%ebp)
40dc65:	89 45 f8             	mov    %eax,-0x8(%ebp)
40dc68:	80 fb 2d             	cmp    $0x2d,%bl
40dc6b:	75 08                	jne    0x40dc75
40dc6d:	83 c8 02             	or     $0x2,%eax
40dc70:	89 45 f8             	mov    %eax,-0x8(%ebp)
40dc73:	eb 05                	jmp    0x40dc7a
40dc75:	80 fb 2b             	cmp    $0x2b,%bl
40dc78:	75 09                	jne    0x40dc83
40dc7a:	8a 1f                	mov    (%edi),%bl
40dc7c:	47                   	inc    %edi
40dc7d:	88 5d fc             	mov    %bl,-0x4(%ebp)
40dc80:	89 7d 0c             	mov    %edi,0xc(%ebp)
40dc83:	85 f6                	test   %esi,%esi
40dc85:	74 05                	je     0x40dc8c
40dc87:	83 fe 10             	cmp    $0x10,%esi
40dc8a:	75 75                	jne    0x40dd01
40dc8c:	8a c3                	mov    %bl,%al
40dc8e:	2c 30                	sub    $0x30,%al
40dc90:	3c 09                	cmp    $0x9,%al
40dc92:	77 08                	ja     0x40dc9c
40dc94:	0f be c3             	movsbl %bl,%eax
40dc97:	83 c0 d0             	add    $0xffffffd0,%eax
40dc9a:	eb 1e                	jmp    0x40dcba
40dc9c:	8a c3                	mov    %bl,%al
40dc9e:	2c 61                	sub    $0x61,%al
40dca0:	3c 19                	cmp    $0x19,%al
40dca2:	77 08                	ja     0x40dcac
40dca4:	0f be c3             	movsbl %bl,%eax
40dca7:	83 c0 a9             	add    $0xffffffa9,%eax
40dcaa:	eb 0e                	jmp    0x40dcba
40dcac:	8a c3                	mov    %bl,%al
40dcae:	2c 41                	sub    $0x41,%al
40dcb0:	3c 19                	cmp    $0x19,%al
40dcb2:	77 46                	ja     0x40dcfa
40dcb4:	0f be c3             	movsbl %bl,%eax
40dcb7:	83 c0 c9             	add    $0xffffffc9,%eax
40dcba:	85 c0                	test   %eax,%eax
40dcbc:	75 3c                	jne    0x40dcfa
40dcbe:	8a 07                	mov    (%edi),%al
40dcc0:	47                   	inc    %edi
40dcc1:	88 45 f0             	mov    %al,-0x10(%ebp)
40dcc4:	89 7d 0c             	mov    %edi,0xc(%ebp)
40dcc7:	3c 78                	cmp    $0x78,%al
40dcc9:	74 1d                	je     0x40dce8
40dccb:	3c 58                	cmp    $0x58,%al
40dccd:	74 19                	je     0x40dce8
40dccf:	85 f6                	test   %esi,%esi
40dcd1:	75 03                	jne    0x40dcd6
40dcd3:	6a 08                	push   $0x8
40dcd5:	5e                   	pop    %esi
40dcd6:	ff 75 f0             	push   -0x10(%ebp)
40dcd9:	8d 4d 0c             	lea    0xc(%ebp),%ecx
40dcdc:	e8 81 3b 00 00       	call   0x411862
40dce1:	8b 7d 0c             	mov    0xc(%ebp),%edi
40dce4:	33 c9                	xor    %ecx,%ecx
40dce6:	eb 19                	jmp    0x40dd01
40dce8:	85 f6                	test   %esi,%esi
40dcea:	75 03                	jne    0x40dcef
40dcec:	6a 10                	push   $0x10
40dcee:	5e                   	pop    %esi
40dcef:	8a 1f                	mov    (%edi),%bl
40dcf1:	47                   	inc    %edi
40dcf2:	88 5d fc             	mov    %bl,-0x4(%ebp)
40dcf5:	89 7d 0c             	mov    %edi,0xc(%ebp)
40dcf8:	eb 07                	jmp    0x40dd01
40dcfa:	85 f6                	test   %esi,%esi
40dcfc:	75 03                	jne    0x40dd01
40dcfe:	6a 0a                	push   $0xa
40dd00:	5e                   	pop    %esi
40dd01:	83 c8 ff             	or     $0xffffffff,%eax
40dd04:	33 d2                	xor    %edx,%edx
40dd06:	f7 f6                	div    %esi
40dd08:	89 45 f0             	mov    %eax,-0x10(%ebp)
40dd0b:	8a c3                	mov    %bl,%al
40dd0d:	2c 30                	sub    $0x30,%al
40dd0f:	3c 09                	cmp    $0x9,%al
40dd11:	77 08                	ja     0x40dd1b
40dd13:	0f be d3             	movsbl %bl,%edx
40dd16:	83 c2 d0             	add    $0xffffffd0,%edx
40dd19:	eb 23                	jmp    0x40dd3e
40dd1b:	8a c3                	mov    %bl,%al
40dd1d:	2c 61                	sub    $0x61,%al
40dd1f:	3c 19                	cmp    $0x19,%al
40dd21:	77 08                	ja     0x40dd2b
40dd23:	0f be d3             	movsbl %bl,%edx
40dd26:	83 c2 a9             	add    $0xffffffa9,%edx
40dd29:	eb 13                	jmp    0x40dd3e
40dd2b:	8a c3                	mov    %bl,%al
40dd2d:	2c 41                	sub    $0x41,%al
40dd2f:	3c 19                	cmp    $0x19,%al
40dd31:	77 08                	ja     0x40dd3b
40dd33:	0f be d3             	movsbl %bl,%edx
40dd36:	83 c2 c9             	add    $0xffffffc9,%edx
40dd39:	eb 03                	jmp    0x40dd3e
40dd3b:	83 ca ff             	or     $0xffffffff,%edx
40dd3e:	3b d6                	cmp    %esi,%edx
40dd40:	73 30                	jae    0x40dd72
40dd42:	8b 45 f0             	mov    -0x10(%ebp),%eax
40dd45:	0f af ce             	imul   %esi,%ecx
40dd48:	8a 1f                	mov    (%edi),%bl
40dd4a:	88 5d fc             	mov    %bl,-0x4(%ebp)
40dd4d:	03 d1                	add    %ecx,%edx
40dd4f:	3b d1                	cmp    %ecx,%edx
40dd51:	1b c9                	sbb    %ecx,%ecx
40dd53:	f7 d9                	neg    %ecx
40dd55:	3b 45 f4             	cmp    -0xc(%ebp),%eax
40dd58:	89 55 f4             	mov    %edx,-0xc(%ebp)
40dd5b:	1b c0                	sbb    %eax,%eax
40dd5d:	f7 d8                	neg    %eax
40dd5f:	0b c8                	or     %eax,%ecx
40dd61:	c1 e1 02             	shl    $0x2,%ecx
40dd64:	83 c9 08             	or     $0x8,%ecx
40dd67:	09 4d f8             	or     %ecx,-0x8(%ebp)
40dd6a:	47                   	inc    %edi
40dd6b:	8b ca                	mov    %edx,%ecx
40dd6d:	89 7d 0c             	mov    %edi,0xc(%ebp)
40dd70:	eb 99                	jmp    0x40dd0b
40dd72:	ff 75 fc             	push   -0x4(%ebp)
40dd75:	8d 4d 0c             	lea    0xc(%ebp),%ecx
40dd78:	e8 e5 3a 00 00       	call   0x411862
40dd7d:	8b 5d f8             	mov    -0x8(%ebp),%ebx
40dd80:	5f                   	pop    %edi
40dd81:	f6 c3 08             	test   $0x8,%bl
40dd84:	75 10                	jne    0x40dd96
40dd86:	8b 45 10             	mov    0x10(%ebp),%eax
40dd89:	85 c0                	test   %eax,%eax
40dd8b:	74 05                	je     0x40dd92
40dd8d:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40dd90:	89 08                	mov    %ecx,(%eax)
40dd92:	33 c0                	xor    %eax,%eax
40dd94:	eb 65                	jmp    0x40ddfb
40dd96:	8b 75 f4             	mov    -0xc(%ebp),%esi
40dd99:	56                   	push   %esi
40dd9a:	53                   	push   %ebx
40dd9b:	e8 82 fd ff ff       	call   0x40db22
40dda0:	59                   	pop    %ecx
40dda1:	59                   	pop    %ecx
40dda2:	84 c0                	test   %al,%al
40dda4:	74 40                	je     0x40dde6
40dda6:	8b 45 08             	mov    0x8(%ebp),%eax
40dda9:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40ddad:	c7 40 18 22 00 00 00 	movl   $0x22,0x18(%eax)
40ddb4:	f6 c3 01             	test   $0x1,%bl
40ddb7:	75 05                	jne    0x40ddbe
40ddb9:	83 ce ff             	or     $0xffffffff,%esi
40ddbc:	eb 2f                	jmp    0x40dded
40ddbe:	8b 4d 10             	mov    0x10(%ebp),%ecx
40ddc1:	f6 c3 02             	test   $0x2,%bl
40ddc4:	74 10                	je     0x40ddd6
40ddc6:	85 c9                	test   %ecx,%ecx
40ddc8:	74 05                	je     0x40ddcf
40ddca:	8b 45 0c             	mov    0xc(%ebp),%eax
40ddcd:	89 01                	mov    %eax,(%ecx)
40ddcf:	b8 00 00 00 80       	mov    $0x80000000,%eax
40ddd4:	eb 25                	jmp    0x40ddfb
40ddd6:	85 c9                	test   %ecx,%ecx
40ddd8:	74 05                	je     0x40dddf
40ddda:	8b 45 0c             	mov    0xc(%ebp),%eax
40dddd:	89 01                	mov    %eax,(%ecx)
40dddf:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
40dde4:	eb 15                	jmp    0x40ddfb
40dde6:	f6 c3 02             	test   $0x2,%bl
40dde9:	74 02                	je     0x40dded
40ddeb:	f7 de                	neg    %esi
40dded:	8b 55 10             	mov    0x10(%ebp),%edx
40ddf0:	85 d2                	test   %edx,%edx
40ddf2:	74 05                	je     0x40ddf9
40ddf4:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40ddf7:	89 0a                	mov    %ecx,(%edx)
40ddf9:	8b c6                	mov    %esi,%eax
40ddfb:	5e                   	pop    %esi
40ddfc:	5b                   	pop    %ebx
40ddfd:	c9                   	leave
40ddfe:	c3                   	ret
40ddff:	8b ff                	mov    %edi,%edi
40de01:	55                   	push   %ebp
40de02:	8b ec                	mov    %esp,%ebp
40de04:	81 ec 90 00 00 00    	sub    $0x90,%esp
40de0a:	8d 4d 0c             	lea    0xc(%ebp),%ecx
40de0d:	53                   	push   %ebx
40de0e:	56                   	push   %esi
40de0f:	57                   	push   %edi
40de10:	e8 06 3b 00 00       	call   0x41191b
40de15:	84 c0                	test   %al,%al
40de17:	74 2f                	je     0x40de48
40de19:	8b 7d 14             	mov    0x14(%ebp),%edi
40de1c:	85 ff                	test   %edi,%edi
40de1e:	74 3d                	je     0x40de5d
40de20:	83 ff 02             	cmp    $0x2,%edi
40de23:	7c 05                	jl     0x40de2a
40de25:	83 ff 24             	cmp    $0x24,%edi
40de28:	7e 33                	jle    0x40de5d
40de2a:	8b 45 08             	mov    0x8(%ebp),%eax
40de2d:	50                   	push   %eax
40de2e:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40de32:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)