407eb8:	5e                   	pop    %esi
407eb9:	5b                   	pop    %ebx
407eba:	c9                   	leave
407ebb:	c2 08 00             	ret    $0x8
407ebe:	8b ff                	mov    %edi,%edi
407ec0:	55                   	push   %ebp
407ec1:	8b ec                	mov    %esp,%ebp
407ec3:	51                   	push   %ecx
407ec4:	51                   	push   %ecx
407ec5:	53                   	push   %ebx
407ec6:	56                   	push   %esi
407ec7:	8b f1                	mov    %ecx,%esi
407ec9:	57                   	push   %edi
407eca:	8d 4e 3c             	lea    0x3c(%esi),%ecx
407ecd:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
407ed3:	85 ff                	test   %edi,%edi
407ed5:	75 02                	jne    0x407ed9
407ed7:	8b f9                	mov    %ecx,%edi
407ed9:	e8 a7 f6 ff ff       	call   0x407585
407ede:	8b 5d 08             	mov    0x8(%ebp),%ebx
407ee1:	8d 48 ff             	lea    -0x1(%eax),%ecx
407ee4:	03 cf                	add    %edi,%ecx
407ee6:	8b 7d 0c             	mov    0xc(%ebp),%edi
407ee9:	89 4d f8             	mov    %ecx,-0x8(%ebp)
407eec:	8b d1                	mov    %ecx,%edx
407eee:	89 4e 30             	mov    %ecx,0x30(%esi)
407ef1:	89 4d fc             	mov    %ecx,-0x4(%ebp)
407ef4:	8b 46 24             	mov    0x24(%esi),%eax
407ef7:	85 c0                	test   %eax,%eax
407ef9:	7f 09                	jg     0x407f04
407efb:	8b c3                	mov    %ebx,%eax
407efd:	0b c7                	or     %edi,%eax
407eff:	74 20                	je     0x407f21
407f01:	8b 46 24             	mov    0x24(%esi),%eax
407f04:	48                   	dec    %eax
407f05:	89 46 24             	mov    %eax,0x24(%esi)
407f08:	8a c3                	mov    %bl,%al
407f0a:	24 07                	and    $0x7,%al
407f0c:	0f ac fb 03          	shrd   $0x3,%edi,%ebx
407f10:	04 30                	add    $0x30,%al
407f12:	88 01                	mov    %al,(%ecx)
407f14:	c1 ef 03             	shr    $0x3,%edi
407f17:	ff 4e 30             	decl   0x30(%esi)
407f1a:	8b 56 30             	mov    0x30(%esi),%edx
407f1d:	8b ca                	mov    %edx,%ecx
407f1f:	eb d3                	jmp    0x407ef4
407f21:	8b 4d f8             	mov    -0x8(%ebp),%ecx
407f24:	8d 42 01             	lea    0x1(%edx),%eax
407f27:	2b ca                	sub    %edx,%ecx
407f29:	89 4e 34             	mov    %ecx,0x34(%esi)
407f2c:	5f                   	pop    %edi
407f2d:	89 46 30             	mov    %eax,0x30(%esi)
407f30:	5e                   	pop    %esi
407f31:	5b                   	pop    %ebx
407f32:	c9                   	leave
407f33:	c2 0c 00             	ret    $0xc
407f36:	8b ff                	mov    %edi,%edi
407f38:	55                   	push   %ebp
407f39:	8b ec                	mov    %esp,%ebp
407f3b:	83 ec 0c             	sub    $0xc,%esp
407f3e:	53                   	push   %ebx
407f3f:	56                   	push   %esi
407f40:	8b f1                	mov    %ecx,%esi
407f42:	57                   	push   %edi
407f43:	8d 4e 3c             	lea    0x3c(%esi),%ecx
407f46:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
407f4c:	85 ff                	test   %edi,%edi
407f4e:	75 02                	jne    0x407f52
407f50:	8b f9                	mov    %ecx,%edi
407f52:	e8 2e f6 ff ff       	call   0x407585
407f57:	48                   	dec    %eax
407f58:	03 f8                	add    %eax,%edi
407f5a:	8b 45 08             	mov    0x8(%ebp),%eax
407f5d:	89 7d f4             	mov    %edi,-0xc(%ebp)
407f60:	8b cf                	mov    %edi,%ecx
407f62:	89 7e 30             	mov    %edi,0x30(%esi)
407f65:	89 7d f8             	mov    %edi,-0x8(%ebp)
407f68:	8b 7d 0c             	mov    0xc(%ebp),%edi
407f6b:	89 45 fc             	mov    %eax,-0x4(%ebp)
407f6e:	8b 56 24             	mov    0x24(%esi),%edx
407f71:	85 d2                	test   %edx,%edx
407f73:	7f 04                	jg     0x407f79
407f75:	0b c7                	or     %edi,%eax
407f77:	74 4f                	je     0x407fc8
407f79:	6a 00                	push   $0x0
407f7b:	6a 0a                	push   $0xa
407f7d:	57                   	push   %edi
407f7e:	ff 75 fc             	push   -0x4(%ebp)
407f81:	8d 42 ff             	lea    -0x1(%edx),%eax
407f84:	89 46 24             	mov    %eax,0x24(%esi)
407f87:	e8 e4 fa 00 00       	call   0x417a70
407f8c:	6a 00                	push   $0x0
407f8e:	6a 0a                	push   $0xa
407f90:	8a d8                	mov    %al,%bl
407f92:	57                   	push   %edi
407f93:	ff 75 fc             	push   -0x4(%ebp)
407f96:	80 c3 30             	add    $0x30,%bl
407f99:	8a fb                	mov    %bl,%bh
407f9b:	e8 60 fa 00 00       	call   0x417a00
407fa0:	89 45 fc             	mov    %eax,-0x4(%ebp)
407fa3:	8b fa                	mov    %edx,%edi
407fa5:	80 fb 39             	cmp    $0x39,%bl
407fa8:	7e 0e                	jle    0x407fb8
407faa:	8a 5d 10             	mov    0x10(%ebp),%bl
407fad:	80 f3 01             	xor    $0x1,%bl
407fb0:	c0 e3 05             	shl    $0x5,%bl
407fb3:	80 c3 07             	add    $0x7,%bl
407fb6:	02 df                	add    %bh,%bl
407fb8:	8b 4d f8             	mov    -0x8(%ebp),%ecx
407fbb:	88 19                	mov    %bl,(%ecx)
407fbd:	ff 4e 30             	decl   0x30(%esi)
407fc0:	8b 4e 30             	mov    0x30(%esi),%ecx
407fc3:	89 4d f8             	mov    %ecx,-0x8(%ebp)
407fc6:	eb a6                	jmp    0x407f6e
407fc8:	8b 7d f4             	mov    -0xc(%ebp),%edi
407fcb:	8d 41 01             	lea    0x1(%ecx),%eax
407fce:	2b f9                	sub    %ecx,%edi
407fd0:	89 7e 34             	mov    %edi,0x34(%esi)
407fd3:	5f                   	pop    %edi
407fd4:	89 46 30             	mov    %eax,0x30(%esi)
407fd7:	5e                   	pop    %esi
407fd8:	5b                   	pop    %ebx
407fd9:	c9                   	leave
407fda:	c2 0c 00             	ret    $0xc
407fdd:	8b ff                	mov    %edi,%edi
407fdf:	55                   	push   %ebp
407fe0:	8b ec                	mov    %esp,%ebp
407fe2:	51                   	push   %ecx
407fe3:	51                   	push   %ecx
407fe4:	53                   	push   %ebx
407fe5:	56                   	push   %esi
407fe6:	8b f1                	mov    %ecx,%esi
407fe8:	57                   	push   %edi
407fe9:	8d 4e 3c             	lea    0x3c(%esi),%ecx
407fec:	8b b9 04 04 00 00    	mov    0x404(%ecx),%edi
407ff2:	85 ff                	test   %edi,%edi
407ff4:	75 02                	jne    0x407ff8
407ff6:	8b f9                	mov    %ecx,%edi
407ff8:	e8 88 f5 ff ff       	call   0x407585
407ffd:	8b 5d 08             	mov    0x8(%ebp),%ebx
408000:	8d 48 ff             	lea    -0x1(%eax),%ecx
408003:	03 cf                	add    %edi,%ecx
408005:	8b 7d 0c             	mov    0xc(%ebp),%edi
408008:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40800b:	8b d1                	mov    %ecx,%edx
40800d:	89 4e 30             	mov    %ecx,0x30(%esi)
408010:	89 4d fc             	mov    %ecx,-0x4(%ebp)
408013:	8b 46 24             	mov    0x24(%esi),%eax
408016:	85 c0                	test   %eax,%eax
408018:	7f 09                	jg     0x408023
40801a:	8b c3                	mov    %ebx,%eax
40801c:	0b c7                	or     %edi,%eax
40801e:	74 32                	je     0x408052
408020:	8b 46 24             	mov    0x24(%esi),%eax
408023:	48                   	dec    %eax
408024:	89 46 24             	mov    %eax,0x24(%esi)
408027:	8a c3                	mov    %bl,%al
408029:	24 0f                	and    $0xf,%al
40802b:	0f ac fb 04          	shrd   $0x4,%edi,%ebx
40802f:	04 30                	add    $0x30,%al
408031:	c1 ef 04             	shr    $0x4,%edi
408034:	8a d0                	mov    %al,%dl
408036:	3c 39                	cmp    $0x39,%al
408038:	76 0c                	jbe    0x408046
40803a:	8a 45 10             	mov    0x10(%ebp),%al
40803d:	34 01                	xor    $0x1,%al
40803f:	c0 e0 05             	shl    $0x5,%al
408042:	04 07                	add    $0x7,%al
408044:	02 c2                	add    %dl,%al
408046:	88 01                	mov    %al,(%ecx)
408048:	ff 4e 30             	decl   0x30(%esi)
40804b:	8b 56 30             	mov    0x30(%esi),%edx
40804e:	8b ca                	mov    %edx,%ecx
408050:	eb c1                	jmp    0x408013
408052:	8b 4d f8             	mov    -0x8(%ebp),%ecx
408055:	8d 42 01             	lea    0x1(%edx),%eax
408058:	2b ca                	sub    %edx,%ecx
40805a:	89 4e 34             	mov    %ecx,0x34(%esi)
40805d:	5f                   	pop    %edi
40805e:	89 46 30             	mov    %eax,0x30(%esi)
408061:	5e                   	pop    %esi
408062:	5b                   	pop    %ebx
408063:	c9                   	leave
408064:	c2 0c 00             	ret    $0xc
408067:	8b ff                	mov    %edi,%edi
408069:	55                   	push   %ebp
40806a:	8b ec                	mov    %esp,%ebp
40806c:	8b 45 18             	mov    0x18(%ebp),%eax
40806f:	8b d1                	mov    %ecx,%edx
408071:	33 c9                	xor    %ecx,%ecx
408073:	89 42 08             	mov    %eax,0x8(%edx)
408076:	8b 45 08             	mov    0x8(%ebp),%eax
408079:	89 0a                	mov    %ecx,(%edx)
40807b:	89 4a 04             	mov    %ecx,0x4(%edx)
40807e:	89 4a 0c             	mov    %ecx,0xc(%edx)
408081:	89 4a 10             	mov    %ecx,0x10(%edx)
408084:	89 8a 3c 04 00 00    	mov    %ecx,0x43c(%edx)
40808a:	89 8a 40 04 00 00    	mov    %ecx,0x440(%edx)
408090:	89 4a 14             	mov    %ecx,0x14(%edx)
408093:	88 4a 18             	mov    %cl,0x18(%edx)
408096:	89 4a 1c             	mov    %ecx,0x1c(%edx)
408099:	89 4a 20             	mov    %ecx,0x20(%edx)
40809c:	89 4a 24             	mov    %ecx,0x24(%edx)
40809f:	66 89 4a 2c          	mov    %cx,0x2c(%edx)
4080a3:	89 4a 34             	mov    %ecx,0x34(%edx)
4080a6:	88 4a 38             	mov    %cl,0x38(%edx)
4080a9:	8b 00                	mov    (%eax),%eax
4080ab:	8b 4d 10             	mov    0x10(%ebp),%ecx
4080ae:	89 82 48 04 00 00    	mov    %eax,0x448(%edx)
4080b4:	8b 45 0c             	mov    0xc(%ebp),%eax
4080b7:	89 02                	mov    %eax,(%edx)
4080b9:	8b 45 14             	mov    0x14(%ebp),%eax
4080bc:	89 42 0c             	mov    %eax,0xc(%edx)
4080bf:	8b 45 1c             	mov    0x1c(%ebp),%eax
4080c2:	89 42 10             	mov    %eax,0x10(%edx)
4080c5:	8b c2                	mov    %edx,%eax
4080c7:	89 4a 04             	mov    %ecx,0x4(%edx)
4080ca:	5d                   	pop    %ebp
4080cb:	c2 18 00             	ret    $0x18
4080ce:	8b ff                	mov    %edi,%edi
4080d0:	56                   	push   %esi
4080d1:	8b f1                	mov    %ecx,%esi
4080d3:	ff b6 04 04 00 00    	push   0x404(%esi)
4080d9:	e8 c1 26 00 00       	call   0x40a79f
4080de:	83 a6 04 04 00 00 00 	andl   $0x0,0x404(%esi)
4080e5:	59                   	pop    %ecx
4080e6:	5e                   	pop    %esi
4080e7:	c3                   	ret
4080e8:	8b ff                	mov    %edi,%edi
4080ea:	55                   	push   %ebp
4080eb:	8b ec                	mov    %esp,%ebp
4080ed:	56                   	push   %esi
4080ee:	8b f1                	mov    %ecx,%esi
4080f0:	ff 36                	push   (%esi)
4080f2:	e8 a8 26 00 00       	call   0x40a79f
4080f7:	8b 55 08             	mov    0x8(%ebp),%edx
4080fa:	83 26 00             	andl   $0x0,(%esi)
4080fd:	59                   	pop    %ecx
4080fe:	8b 02                	mov    (%edx),%eax
408100:	89 06                	mov    %eax,(%esi)
408102:	8b c6                	mov    %esi,%eax
408104:	83 22 00             	andl   $0x0,(%edx)
408107:	5e                   	pop    %esi
408108:	5d                   	pop    %ebp
408109:	c2 04 00             	ret    $0x4
40810c:	8b ff                	mov    %edi,%edi
40810e:	55                   	push   %ebp
40810f:	8b ec                	mov    %esp,%ebp
408111:	81 ec 64 04 00 00    	sub    $0x464,%esp
408117:	a1 c0 10 42 00       	mov    0x4210c0,%eax
40811c:	33 c5                	xor    %ebp,%eax
40811e:	89 45 fc             	mov    %eax,-0x4(%ebp)
408121:	53                   	push   %ebx
408122:	56                   	push   %esi
408123:	8b f1                	mov    %ecx,%esi
408125:	57                   	push   %edi
408126:	8b 06                	mov    (%esi),%eax
408128:	8b 7e 04             	mov    0x4(%esi),%edi
40812b:	8b 18                	mov    (%eax),%ebx
40812d:	53                   	push   %ebx
40812e:	e8 53 3e 00 00       	call   0x40bf86
408133:	88 85 9c fb ff ff    	mov    %al,-0x464(%ebp)
408139:	8b 06                	mov    (%esi),%eax
40813b:	59                   	pop    %ecx
40813c:	8d 8d a4 fb ff ff    	lea    -0x45c(%ebp),%ecx
408142:	8b 00                	mov    (%eax),%eax
408144:	89 85 a0 fb ff ff    	mov    %eax,-0x460(%ebp)
40814a:	8b 46 10             	mov    0x10(%esi),%eax
40814d:	ff 30                	push   (%eax)
40814f:	8b 46 0c             	mov    0xc(%esi),%eax
408152:	ff 76 04             	push   0x4(%esi)
408155:	ff 30                	push   (%eax)
408157:	8b 46 08             	mov    0x8(%esi),%eax
40815a:	ff 70 04             	push   0x4(%eax)
40815d:	ff 30                	push   (%eax)
40815f:	8d 85 a0 fb ff ff    	lea    -0x460(%ebp),%eax
408165:	50                   	push   %eax
408166:	e8 fc fe ff ff       	call   0x408067
40816b:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
40816f:	8d 8d a4 fb ff ff    	lea    -0x45c(%ebp),%ecx
408175:	e8 9d 01 00 00       	call   0x408317
40817a:	8d 8d e0 fb ff ff    	lea    -0x420(%ebp),%ecx
408180:	8b f0                	mov    %eax,%esi
408182:	e8 47 ff ff ff       	call   0x4080ce
408187:	57                   	push   %edi
408188:	53                   	push   %ebx
408189:	ff b5 9c fb ff ff    	push   -0x464(%ebp)
40818f:	e8 9d 3e 00 00       	call   0x40c031
408194:	8b 4d fc             	mov    -0x4(%ebp),%ecx
408197:	83 c4 0c             	add    $0xc,%esp
40819a:	8b c6                	mov    %esi,%eax
40819c:	33 cd                	xor    %ebp,%ecx
40819e:	5f                   	pop    %edi
40819f:	5e                   	pop    %esi
4081a0:	5b                   	pop    %ebx
4081a1:	e8 22 bf ff ff       	call   0x4040c8
4081a6:	c9                   	leave
4081a7:	c3                   	ret
4081a8:	8b ff                	mov    %edi,%edi
4081aa:	55                   	push   %ebp
4081ab:	8b ec                	mov    %esp,%ebp
4081ad:	8b 45 0c             	mov    0xc(%ebp),%eax
4081b0:	8b 4d 08             	mov    0x8(%ebp),%ecx
4081b3:	53                   	push   %ebx
4081b4:	8b 00                	mov    (%eax),%eax
4081b6:	8b 80 88 00 00 00    	mov    0x88(%eax),%eax
4081bc:	8b 00                	mov    (%eax),%eax
4081be:	8a 18                	mov    (%eax),%bl
4081c0:	8a 01                	mov    (%ecx),%al
4081c2:	84 c0                	test   %al,%al
4081c4:	74 11                	je     0x4081d7
4081c6:	8a d0                	mov    %al,%dl
4081c8:	8a c2                	mov    %dl,%al
4081ca:	3a d3                	cmp    %bl,%dl
4081cc:	74 09                	je     0x4081d7
4081ce:	41                   	inc    %ecx
4081cf:	8a 01                	mov    (%ecx),%al
4081d1:	8a d0                	mov    %al,%dl
4081d3:	84 c0                	test   %al,%al
4081d5:	75 f1                	jne    0x4081c8
4081d7:	41                   	inc    %ecx
4081d8:	84 c0                	test   %al,%al
4081da:	74 29                	je     0x408205
4081dc:	eb 09                	jmp    0x4081e7
4081de:	3c 65                	cmp    $0x65,%al
4081e0:	74 0b                	je     0x4081ed
4081e2:	3c 45                	cmp    $0x45,%al
4081e4:	74 07                	je     0x4081ed
4081e6:	41                   	inc    %ecx
4081e7:	8a 01                	mov    (%ecx),%al
4081e9:	84 c0                	test   %al,%al
4081eb:	75 f1                	jne    0x4081de
4081ed:	8b d1                	mov    %ecx,%edx
4081ef:	49                   	dec    %ecx
4081f0:	8a 01                	mov    (%ecx),%al
4081f2:	3c 30                	cmp    $0x30,%al
4081f4:	74 f9                	je     0x4081ef
4081f6:	3a c3                	cmp    %bl,%al
4081f8:	75 01                	jne    0x4081fb
4081fa:	49                   	dec    %ecx
4081fb:	8a 02                	mov    (%edx),%al
4081fd:	42                   	inc    %edx
4081fe:	41                   	inc    %ecx
4081ff:	88 01                	mov    %al,(%ecx)
408201:	84 c0                	test   %al,%al
408203:	75 f6                	jne    0x4081fb
408205:	5b                   	pop    %ebx
408206:	5d                   	pop    %ebp
408207:	c3                   	ret
408208:	8b ff                	mov    %edi,%edi