407dd5:	e8 36 36 00 00       	call   0x40b410
407dda:	59                   	pop    %ecx
407ddb:	59                   	pop    %ecx
407ddc:	8b c8                	mov    %eax,%ecx
407dde:	3b cf                	cmp    %edi,%ecx
407de0:	75 e3                	jne    0x407dc5
407de2:	8b 95 a4 fd ff ff    	mov    -0x25c(%ebp),%edx
407de8:	8a 01                	mov    (%ecx),%al
407dea:	88 85 ab fd ff ff    	mov    %al,-0x255(%ebp)
407df0:	3c 3a                	cmp    $0x3a,%al
407df2:	75 20                	jne    0x407e14
407df4:	8d 47 01             	lea    0x1(%edi),%eax
407df7:	3b c8                	cmp    %eax,%ecx
407df9:	74 13                	je     0x407e0e
407dfb:	52                   	push   %edx
407dfc:	33 db                	xor    %ebx,%ebx
407dfe:	53                   	push   %ebx
407dff:	53                   	push   %ebx
407e00:	57                   	push   %edi
407e01:	e8 e4 fe ff ff       	call   0x407cea
407e06:	83 c4 10             	add    $0x10,%esp
407e09:	e9 04 02 00 00       	jmp    0x408012
407e0e:	8a 85 ab fd ff ff    	mov    -0x255(%ebp),%al
407e14:	33 db                	xor    %ebx,%ebx
407e16:	3c 2f                	cmp    $0x2f,%al
407e18:	74 0a                	je     0x407e24
407e1a:	3c 5c                	cmp    $0x5c,%al
407e1c:	74 06                	je     0x407e24
407e1e:	3c 3a                	cmp    $0x3a,%al
407e20:	8a c3                	mov    %bl,%al
407e22:	75 02                	jne    0x407e26
407e24:	b0 01                	mov    $0x1,%al
407e26:	2b cf                	sub    %edi,%ecx
407e28:	0f b6 c0             	movzbl %al,%eax
407e2b:	41                   	inc    %ecx
407e2c:	89 9d 74 fd ff ff    	mov    %ebx,-0x28c(%ebp)
407e32:	f7 d8                	neg    %eax
407e34:	89 9d 78 fd ff ff    	mov    %ebx,-0x288(%ebp)
407e3a:	56                   	push   %esi
407e3b:	1b c0                	sbb    %eax,%eax
407e3d:	89 9d 7c fd ff ff    	mov    %ebx,-0x284(%ebp)
407e43:	23 c1                	and    %ecx,%eax
407e45:	89 9d 80 fd ff ff    	mov    %ebx,-0x280(%ebp)
407e4b:	89 85 70 fd ff ff    	mov    %eax,-0x290(%ebp)
407e51:	89 9d 84 fd ff ff    	mov    %ebx,-0x27c(%ebp)
407e57:	88 9d 88 fd ff ff    	mov    %bl,-0x278(%ebp)
407e5d:	e8 89 02 00 00       	call   0x4080eb
407e62:	50                   	push   %eax
407e63:	8d 85 74 fd ff ff    	lea    -0x28c(%ebp),%eax
407e69:	50                   	push   %eax
407e6a:	57                   	push   %edi
407e6b:	e8 e0 fc ff ff       	call   0x407b50
407e70:	83 c4 0c             	add    $0xc,%esp
407e73:	8d 8d ac fd ff ff    	lea    -0x254(%ebp),%ecx
407e79:	f7 d8                	neg    %eax
407e7b:	1b c0                	sbb    %eax,%eax
407e7d:	53                   	push   %ebx
407e7e:	53                   	push   %ebx
407e7f:	53                   	push   %ebx
407e80:	51                   	push   %ecx
407e81:	f7 d0                	not    %eax
407e83:	23 85 7c fd ff ff    	and    -0x284(%ebp),%eax
407e89:	53                   	push   %ebx
407e8a:	50                   	push   %eax
407e8b:	ff 15 ac f0 40 00    	call   *0x40f0ac
407e91:	8b f0                	mov    %eax,%esi
407e93:	83 fe ff             	cmp    $0xffffffff,%esi
407e96:	75 2e                	jne    0x407ec6
407e98:	ff b5 a4 fd ff ff    	push   -0x25c(%ebp)
407e9e:	53                   	push   %ebx
407e9f:	53                   	push   %ebx
407ea0:	57                   	push   %edi
407ea1:	e8 44 fe ff ff       	call   0x407cea
407ea6:	83 c4 10             	add    $0x10,%esp
407ea9:	8b f0                	mov    %eax,%esi
407eab:	38 9d 88 fd ff ff    	cmp    %bl,-0x278(%ebp)
407eb1:	74 0c                	je     0x407ebf
407eb3:	ff b5 7c fd ff ff    	push   -0x284(%ebp)
407eb9:	e8 bb f9 ff ff       	call   0x407879
407ebe:	59                   	pop    %ecx
407ebf:	8b c6                	mov    %esi,%eax
407ec1:	e9 4b 01 00 00       	jmp    0x408011
407ec6:	8b 85 a4 fd ff ff    	mov    -0x25c(%ebp),%eax
407ecc:	8b 48 04             	mov    0x4(%eax),%ecx
407ecf:	2b 08                	sub    (%eax),%ecx
407ed1:	c1 f9 02             	sar    $0x2,%ecx
407ed4:	89 8d 6c fd ff ff    	mov    %ecx,-0x294(%ebp)
407eda:	89 9d 8c fd ff ff    	mov    %ebx,-0x274(%ebp)
407ee0:	89 9d 90 fd ff ff    	mov    %ebx,-0x270(%ebp)
407ee6:	89 9d 94 fd ff ff    	mov    %ebx,-0x26c(%ebp)
407eec:	89 9d 98 fd ff ff    	mov    %ebx,-0x268(%ebp)
407ef2:	89 9d 9c fd ff ff    	mov    %ebx,-0x264(%ebp)
407ef8:	88 9d a0 fd ff ff    	mov    %bl,-0x260(%ebp)
407efe:	e8 e8 01 00 00       	call   0x4080eb
407f03:	50                   	push   %eax
407f04:	8d 85 ab fd ff ff    	lea    -0x255(%ebp),%eax
407f0a:	50                   	push   %eax
407f0b:	8d 85 8c fd ff ff    	lea    -0x274(%ebp),%eax
407f11:	50                   	push   %eax
407f12:	8d 85 d8 fd ff ff    	lea    -0x228(%ebp),%eax
407f18:	50                   	push   %eax
407f19:	e8 6c fb ff ff       	call   0x407a8a
407f1e:	83 c4 10             	add    $0x10,%esp
407f21:	f7 d8                	neg    %eax
407f23:	1b c0                	sbb    %eax,%eax
407f25:	f7 d0                	not    %eax
407f27:	23 85 94 fd ff ff    	and    -0x26c(%ebp),%eax
407f2d:	80 38 2e             	cmpb   $0x2e,(%eax)
407f30:	75 11                	jne    0x407f43
407f32:	8a 48 01             	mov    0x1(%eax),%cl
407f35:	84 c9                	test   %cl,%cl
407f37:	74 2a                	je     0x407f63
407f39:	80 f9 2e             	cmp    $0x2e,%cl
407f3c:	75 05                	jne    0x407f43
407f3e:	38 58 02             	cmp    %bl,0x2(%eax)
407f41:	74 20                	je     0x407f63
407f43:	ff b5 a4 fd ff ff    	push   -0x25c(%ebp)
407f49:	ff b5 70 fd ff ff    	push   -0x290(%ebp)
407f4f:	57                   	push   %edi
407f50:	50                   	push   %eax
407f51:	e8 94 fd ff ff       	call   0x407cea
407f56:	83 c4 10             	add    $0x10,%esp
407f59:	89 85 68 fd ff ff    	mov    %eax,-0x298(%ebp)
407f5f:	85 c0                	test   %eax,%eax
407f61:	75 79                	jne    0x407fdc
407f63:	38 9d a0 fd ff ff    	cmp    %bl,-0x260(%ebp)
407f69:	74 0c                	je     0x407f77
407f6b:	ff b5 94 fd ff ff    	push   -0x26c(%ebp)
407f71:	e8 03 f9 ff ff       	call   0x407879
407f76:	59                   	pop    %ecx
407f77:	8d 85 ac fd ff ff    	lea    -0x254(%ebp),%eax
407f7d:	50                   	push   %eax
407f7e:	56                   	push   %esi
407f7f:	ff 15 b0 f0 40 00    	call   *0x40f0b0
407f85:	85 c0                	test   %eax,%eax
407f87:	0f 85 4d ff ff ff    	jne    0x407eda
407f8d:	8b 85 a4 fd ff ff    	mov    -0x25c(%ebp),%eax
407f93:	8b 8d 6c fd ff ff    	mov    -0x294(%ebp),%ecx
407f99:	8b 10                	mov    (%eax),%edx
407f9b:	8b 40 04             	mov    0x4(%eax),%eax
407f9e:	2b c2                	sub    %edx,%eax
407fa0:	c1 f8 02             	sar    $0x2,%eax
407fa3:	3b c8                	cmp    %eax,%ecx
407fa5:	74 16                	je     0x407fbd
407fa7:	68 c0 79 40 00       	push   $0x4079c0
407fac:	2b c1                	sub    %ecx,%eax
407fae:	6a 04                	push   $0x4
407fb0:	50                   	push   %eax
407fb1:	8d 04 8a             	lea    (%edx,%ecx,4),%eax
407fb4:	50                   	push   %eax
407fb5:	e8 66 2e 00 00       	call   0x40ae20
407fba:	83 c4 10             	add    $0x10,%esp
407fbd:	56                   	push   %esi
407fbe:	ff 15 a8 f0 40 00    	call   *0x40f0a8
407fc4:	38 9d 88 fd ff ff    	cmp    %bl,-0x278(%ebp)
407fca:	74 0c                	je     0x407fd8
407fcc:	ff b5 7c fd ff ff    	push   -0x284(%ebp)
407fd2:	e8 a2 f8 ff ff       	call   0x407879
407fd7:	59                   	pop    %ecx
407fd8:	33 c0                	xor    %eax,%eax
407fda:	eb 35                	jmp    0x408011
407fdc:	38 9d a0 fd ff ff    	cmp    %bl,-0x260(%ebp)
407fe2:	74 0c                	je     0x407ff0
407fe4:	ff b5 94 fd ff ff    	push   -0x26c(%ebp)
407fea:	e8 8a f8 ff ff       	call   0x407879
407fef:	59                   	pop    %ecx
407ff0:	56                   	push   %esi
407ff1:	ff 15 a8 f0 40 00    	call   *0x40f0a8
407ff7:	38 9d 88 fd ff ff    	cmp    %bl,-0x278(%ebp)
407ffd:	74 0c                	je     0x40800b
407fff:	ff b5 7c fd ff ff    	push   -0x284(%ebp)
408005:	e8 6f f8 ff ff       	call   0x407879
40800a:	59                   	pop    %ecx
40800b:	8b 85 68 fd ff ff    	mov    -0x298(%ebp),%eax
408011:	5e                   	pop    %esi
408012:	8b 4d fc             	mov    -0x4(%ebp),%ecx
408015:	5f                   	pop    %edi
408016:	33 cd                	xor    %ebp,%ecx
408018:	5b                   	pop    %ebx
408019:	e8 17 b6 ff ff       	call   0x403635
40801e:	c9                   	leave
40801f:	c3                   	ret
408020:	8b ff                	mov    %edi,%edi
408022:	55                   	push   %ebp
408023:	8b ec                	mov    %esp,%ebp
408025:	53                   	push   %ebx
408026:	57                   	push   %edi
408027:	8b f9                	mov    %ecx,%edi
408029:	8b 4d 08             	mov    0x8(%ebp),%ecx
40802c:	c6 47 0c 00          	movb   $0x0,0xc(%edi)
408030:	8d 5f 04             	lea    0x4(%edi),%ebx
408033:	85 c9                	test   %ecx,%ecx
408035:	74 07                	je     0x40803e
408037:	8b 01                	mov    (%ecx),%eax
408039:	8b 49 04             	mov    0x4(%ecx),%ecx
40803c:	eb 14                	jmp    0x408052
40803e:	83 3d c8 6e 41 00 00 	cmpl   $0x0,0x416ec8
408045:	75 12                	jne    0x408059
408047:	a1 10 61 41 00       	mov    0x416110,%eax
40804c:	8b 0d 14 61 41 00    	mov    0x416114,%ecx
408052:	89 03                	mov    %eax,(%ebx)
408054:	89 4b 04             	mov    %ecx,0x4(%ebx)
408057:	eb 41                	jmp    0x40809a
408059:	56                   	push   %esi
40805a:	e8 41 f4 ff ff       	call   0x4074a0
40805f:	89 07                	mov    %eax,(%edi)
408061:	8d 77 08             	lea    0x8(%edi),%esi
408064:	53                   	push   %ebx
408065:	50                   	push   %eax
408066:	8b 48 4c             	mov    0x4c(%eax),%ecx
408069:	89 0b                	mov    %ecx,(%ebx)
40806b:	8b 48 48             	mov    0x48(%eax),%ecx
40806e:	89 0e                	mov    %ecx,(%esi)
408070:	e8 95 2b 00 00       	call   0x40ac0a
408075:	56                   	push   %esi
408076:	ff 37                	push   (%edi)
408078:	e8 eb 2b 00 00       	call   0x40ac68
40807d:	8b 0f                	mov    (%edi),%ecx
40807f:	83 c4 10             	add    $0x10,%esp
408082:	8b 81 50 03 00 00    	mov    0x350(%ecx),%eax
408088:	5e                   	pop    %esi
408089:	a8 02                	test   $0x2,%al
40808b:	75 0d                	jne    0x40809a
40808d:	83 c8 02             	or     $0x2,%eax
408090:	89 81 50 03 00 00    	mov    %eax,0x350(%ecx)
408096:	c6 47 0c 01          	movb   $0x1,0xc(%edi)
40809a:	8b c7                	mov    %edi,%eax
40809c:	5f                   	pop    %edi
40809d:	5b                   	pop    %ebx
40809e:	5d                   	pop    %ebp
40809f:	c2 04 00             	ret    $0x4
4080a2:	8b ff                	mov    %edi,%edi
4080a4:	56                   	push   %esi
4080a5:	57                   	push   %edi
4080a6:	8b f9                	mov    %ecx,%edi
4080a8:	8b 37                	mov    (%edi),%esi
4080aa:	eb 0b                	jmp    0x4080b7
4080ac:	ff 36                	push   (%esi)
4080ae:	e8 c6 f7 ff ff       	call   0x407879
4080b3:	59                   	pop    %ecx
4080b4:	83 c6 04             	add    $0x4,%esi
4080b7:	3b 77 04             	cmp    0x4(%edi),%esi
4080ba:	75 f0                	jne    0x4080ac
4080bc:	ff 37                	push   (%edi)
4080be:	e8 b6 f7 ff ff       	call   0x407879
4080c3:	59                   	pop    %ecx
4080c4:	5f                   	pop    %edi
4080c5:	5e                   	pop    %esi
4080c6:	c3                   	ret
4080c7:	8b ff                	mov    %edi,%edi
4080c9:	55                   	push   %ebp
4080ca:	8b ec                	mov    %esp,%ebp
4080cc:	33 c0                	xor    %eax,%eax
4080ce:	50                   	push   %eax
4080cf:	50                   	push   %eax
4080d0:	ff 75 14             	push   0x14(%ebp)
4080d3:	ff 75 10             	push   0x10(%ebp)
4080d6:	6a ff                	push   $0xffffffff
4080d8:	ff 75 0c             	push   0xc(%ebp)
4080db:	50                   	push   %eax
4080dc:	ff 75 08             	push   0x8(%ebp)
4080df:	e8 5a 0d 00 00       	call   0x408e3e
4080e4:	83 c4 20             	add    $0x20,%esp
4080e7:	5d                   	pop    %ebp
4080e8:	c2 10 00             	ret    $0x10
4080eb:	8b ff                	mov    %edi,%edi
4080ed:	55                   	push   %ebp
4080ee:	8b ec                	mov    %esp,%ebp
4080f0:	83 ec 10             	sub    $0x10,%esp
4080f3:	6a 00                	push   $0x0
4080f5:	8d 4d f0             	lea    -0x10(%ebp),%ecx
4080f8:	e8 23 ff ff ff       	call   0x408020
4080fd:	8b 45 f4             	mov    -0xc(%ebp),%eax
408100:	ba e9 fd 00 00       	mov    $0xfde9,%edx
408105:	39 50 08             	cmp    %edx,0x8(%eax)
408108:	74 0c                	je     0x408116
40810a:	e8 5e 1c 00 00       	call   0x409d6d
40810f:	33 d2                	xor    %edx,%edx
408111:	85 c0                	test   %eax,%eax
408113:	75 01                	jne    0x408116
408115:	42                   	inc    %edx
408116:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
40811a:	74 0a                	je     0x408126
40811c:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40811f:	83 a1 50 03 00 00 fd 	andl   $0xfffffffd,0x350(%ecx)
408126:	8b c2                	mov    %edx,%eax
408128:	c9                   	leave
408129:	c3                   	ret
40812a:	8b ff                	mov    %edi,%edi
40812c:	56                   	push   %esi
40812d:	8b f1                	mov    %ecx,%esi
40812f:	80 7e 14 00          	cmpb   $0x0,0x14(%esi)
408133:	74 0d                	je     0x408142
408135:	ff 76 08             	push   0x8(%esi)
408138:	e8 3c f7 ff ff       	call   0x407879
40813d:	59                   	pop    %ecx
40813e:	c6 46 14 00          	movb   $0x0,0x14(%esi)
408142:	5e                   	pop    %esi
408143:	c3                   	ret
408144:	8b ff                	mov    %edi,%edi
408146:	55                   	push   %ebp
408147:	8b ec                	mov    %esp,%ebp
408149:	56                   	push   %esi
40814a:	57                   	push   %edi
40814b:	8b f1                	mov    %ecx,%esi
40814d:	e8 d8 ff ff ff       	call   0x40812a
408152:	8b 7d 08             	mov    0x8(%ebp),%edi
408155:	8d 46 08             	lea    0x8(%esi),%eax
408158:	56                   	push   %esi
408159:	57                   	push   %edi
40815a:	50                   	push   %eax
40815b:	e8 5f 00 00 00       	call   0x4081bf
408160:	83 c4 0c             	add    $0xc,%esp
408163:	85 c0                	test   %eax,%eax
408165:	74 0a                	je     0x408171
408167:	83 66 0c 00          	andl   $0x0,0xc(%esi)
40816b:	c6 46 14 00          	movb   $0x0,0x14(%esi)
40816f:	eb 09                	jmp    0x40817a
408171:	c6 46 14 01          	movb   $0x1,0x14(%esi)
408175:	33 c0                	xor    %eax,%eax
408177:	89 7e 0c             	mov    %edi,0xc(%esi)
40817a:	5f                   	pop    %edi
40817b:	5e                   	pop    %esi
40817c:	5d                   	pop    %ebp
40817d:	c2 04 00             	ret    $0x4
408180:	8b ff                	mov    %edi,%edi
408182:	55                   	push   %ebp
408183:	8b ec                	mov    %esp,%ebp
408185:	56                   	push   %esi
408186:	57                   	push   %edi
408187:	8b f1                	mov    %ecx,%esi
408189:	e8 9c ff ff ff       	call   0x40812a
40818e:	8b 7d 08             	mov    0x8(%ebp),%edi
408191:	56                   	push   %esi
408192:	8d 04 3f             	lea    (%edi,%edi,1),%eax
408195:	50                   	push   %eax
408196:	8d 46 08             	lea    0x8(%esi),%eax
408199:	50                   	push   %eax
40819a:	e8 20 00 00 00       	call   0x4081bf
40819f:	83 c4 0c             	add    $0xc,%esp
4081a2:	85 c0                	test   %eax,%eax
4081a4:	74 0a                	je     0x4081b0
4081a6:	83 66 0c 00          	andl   $0x0,0xc(%esi)
4081aa:	c6 46 14 00          	movb   $0x0,0x14(%esi)
4081ae:	eb 09                	jmp    0x4081b9
4081b0:	c6 46 14 01          	movb   $0x1,0x14(%esi)
4081b4:	33 c0                	xor    %eax,%eax
4081b6:	89 7e 0c             	mov    %edi,0xc(%esi)
4081b9:	5f                   	pop    %edi
4081ba:	5e                   	pop    %esi