409e47:	89 45 f8             	mov    %eax,-0x8(%ebp)
409e4a:	41                   	inc    %ecx
409e4b:	e8 53 f7 ff ff       	call   0x4095a3
409e50:	89 45 f4             	mov    %eax,-0xc(%ebp)
409e53:	85 c0                	test   %eax,%eax
409e55:	74 cd                	je     0x409e24
409e57:	56                   	push   %esi
409e58:	8b 75 fc             	mov    -0x4(%ebp),%esi
409e5b:	68 54 18 40 00       	push   $0x401854
409e60:	53                   	push   %ebx
409e61:	56                   	push   %esi
409e62:	e8 bd f5 ff ff       	call   0x409424
409e67:	83 c4 10             	add    $0x10,%esp
409e6a:	85 c0                	test   %eax,%eax
409e6c:	79 06                	jns    0x409e74
409e6e:	0f b7 c0             	movzwl %ax,%eax
409e71:	50                   	push   %eax
409e72:	eb 3f                	jmp    0x409eb3
409e74:	57                   	push   %edi
409e75:	8b 7d f4             	mov    -0xc(%ebp),%edi
409e78:	68 54 18 40 00       	push   $0x401854
409e7d:	ff 75 f8             	push   -0x8(%ebp)
409e80:	57                   	push   %edi
409e81:	e8 9e f5 ff ff       	call   0x409424
409e86:	83 c4 10             	add    $0x10,%esp
409e89:	85 c0                	test   %eax,%eax
409e8b:	78 e1                	js     0x409e6e
409e8d:	6a 00                	push   $0x0
409e8f:	ff 75 08             	push   0x8(%ebp)
409e92:	8b d7                	mov    %edi,%edx
409e94:	8b ce                	mov    %esi,%ecx
409e96:	e8 a5 00 00 00       	call   0x409f40
409e9b:	33 c9                	xor    %ecx,%ecx
409e9d:	83 f8 ff             	cmp    $0xffffffff,%eax
409ea0:	0f 95 c1             	setne  %cl
409ea3:	8b c1                	mov    %ecx,%eax
409ea5:	eb 14                	jmp    0x409ebb
409ea7:	ff 15 48 20 41 00    	call   *0x412048
409ead:	85 c0                	test   %eax,%eax
409eaf:	75 08                	jne    0x409eb9
409eb1:	6a 57                	push   $0x57
409eb3:	ff 15 74 20 41 00    	call   *0x412074
409eb9:	33 c0                	xor    %eax,%eax
409ebb:	5f                   	pop    %edi
409ebc:	5e                   	pop    %esi
409ebd:	5b                   	pop    %ebx
409ebe:	c9                   	leave
409ebf:	c2 04 00             	ret    $0x4
409ec2:	8b ff                	mov    %edi,%edi
409ec4:	55                   	push   %ebp
409ec5:	8b ec                	mov    %esp,%ebp
409ec7:	51                   	push   %ecx
409ec8:	53                   	push   %ebx
409ec9:	56                   	push   %esi
409eca:	57                   	push   %edi
409ecb:	8b f9                	mov    %ecx,%edi
409ecd:	8b c2                	mov    %edx,%eax
409ecf:	89 45 fc             	mov    %eax,-0x4(%ebp)
409ed2:	85 ff                	test   %edi,%edi
409ed4:	74 4e                	je     0x409f24
409ed6:	85 c0                	test   %eax,%eax
409ed8:	74 4a                	je     0x409f24
409eda:	8b c8                	mov    %eax,%ecx
409edc:	e8 aa 05 00 00       	call   0x40a48b
409ee1:	8b d8                	mov    %eax,%ebx
409ee3:	85 db                	test   %ebx,%ebx
409ee5:	74 36                	je     0x409f1d
409ee7:	8b cf                	mov    %edi,%ecx
409ee9:	e8 9d 05 00 00       	call   0x40a48b
409eee:	85 c0                	test   %eax,%eax
409ef0:	74 2b                	je     0x409f1d
409ef2:	8b cf                	mov    %edi,%ecx
409ef4:	e8 92 05 00 00       	call   0x40a48b
409ef9:	85 c0                	test   %eax,%eax
409efb:	74 20                	je     0x409f1d
409efd:	33 f6                	xor    %esi,%esi
409eff:	85 db                	test   %ebx,%ebx
409f01:	74 1a                	je     0x409f1d
409f03:	8b 45 fc             	mov    -0x4(%ebp),%eax
409f06:	51                   	push   %ecx
409f07:	51                   	push   %ecx
409f08:	8b cf                	mov    %edi,%ecx
409f0a:	66 8b 14 70          	mov    (%eax,%esi,2),%dx
409f0e:	e8 8d fe ff ff       	call   0x409da0
409f13:	83 f8 ff             	cmp    $0xffffffff,%eax
409f16:	75 21                	jne    0x409f39
409f18:	46                   	inc    %esi
409f19:	3b f3                	cmp    %ebx,%esi
409f1b:	72 e6                	jb     0x409f03
409f1d:	68 90 04 00 00       	push   $0x490
409f22:	eb 0c                	jmp    0x409f30
409f24:	ff 15 48 20 41 00    	call   *0x412048
409f2a:	85 c0                	test   %eax,%eax
409f2c:	75 08                	jne    0x409f36
409f2e:	6a 57                	push   $0x57
409f30:	ff 15 74 20 41 00    	call   *0x412074
409f36:	83 c8 ff             	or     $0xffffffff,%eax
409f39:	5f                   	pop    %edi
409f3a:	5e                   	pop    %esi
409f3b:	5b                   	pop    %ebx
409f3c:	c9                   	leave
409f3d:	c2 08 00             	ret    $0x8
409f40:	8b ff                	mov    %edi,%edi
409f42:	55                   	push   %ebp
409f43:	8b ec                	mov    %esp,%ebp
409f45:	53                   	push   %ebx
409f46:	56                   	push   %esi
409f47:	8b d9                	mov    %ecx,%ebx
409f49:	57                   	push   %edi
409f4a:	8b fa                	mov    %edx,%edi
409f4c:	85 db                	test   %ebx,%ebx
409f4e:	74 51                	je     0x409fa1
409f50:	85 ff                	test   %edi,%edi
409f52:	74 4d                	je     0x409fa1
409f54:	e8 32 05 00 00       	call   0x40a48b
409f59:	8b cf                	mov    %edi,%ecx
409f5b:	8b f0                	mov    %eax,%esi
409f5d:	e8 29 05 00 00       	call   0x40a48b
409f62:	85 c0                	test   %eax,%eax
409f64:	74 34                	je     0x409f9a
409f66:	85 f6                	test   %esi,%esi
409f68:	74 30                	je     0x409f9a
409f6a:	8b 4d 0c             	mov    0xc(%ebp),%ecx
409f6d:	3b ce                	cmp    %esi,%ecx
409f6f:	73 29                	jae    0x409f9a
409f71:	2b f1                	sub    %ecx,%esi
409f73:	3b f0                	cmp    %eax,%esi
409f75:	72 23                	jb     0x409f9a
409f77:	83 7d 08 01          	cmpl   $0x1,0x8(%ebp)
409f7b:	8d 04 4b             	lea    (%ebx,%ecx,2),%eax
409f7e:	57                   	push   %edi
409f7f:	50                   	push   %eax
409f80:	75 08                	jne    0x409f8a
409f82:	ff 15 3c 21 41 00    	call   *0x41213c
409f88:	eb 06                	jmp    0x409f90
409f8a:	ff 15 38 21 41 00    	call   *0x412138
409f90:	85 c0                	test   %eax,%eax
409f92:	74 06                	je     0x409f9a
409f94:	2b c3                	sub    %ebx,%eax
409f96:	d1 f8                	sar    $1,%eax
409f98:	eb 1c                	jmp    0x409fb6
409f9a:	68 90 04 00 00       	push   $0x490
409f9f:	eb 0c                	jmp    0x409fad
409fa1:	ff 15 48 20 41 00    	call   *0x412048
409fa7:	85 c0                	test   %eax,%eax
409fa9:	75 08                	jne    0x409fb3
409fab:	6a 57                	push   $0x57
409fad:	ff 15 74 20 41 00    	call   *0x412074
409fb3:	83 c8 ff             	or     $0xffffffff,%eax
409fb6:	5f                   	pop    %edi
409fb7:	5e                   	pop    %esi
409fb8:	5b                   	pop    %ebx
409fb9:	5d                   	pop    %ebp
409fba:	c2 08 00             	ret    $0x8
409fbd:	8b ff                	mov    %edi,%edi
409fbf:	56                   	push   %esi
409fc0:	8b f1                	mov    %ecx,%esi
409fc2:	e8 c4 04 00 00       	call   0x40a48b
409fc7:	85 c0                	test   %eax,%eax
409fc9:	75 02                	jne    0x409fcd
409fcb:	5e                   	pop    %esi
409fcc:	c3                   	ret
409fcd:	33 c0                	xor    %eax,%eax
409fcf:	50                   	push   %eax
409fd0:	50                   	push   %eax
409fd1:	50                   	push   %eax
409fd2:	50                   	push   %eax
409fd3:	6a ff                	push   $0xffffffff
409fd5:	56                   	push   %esi
409fd6:	50                   	push   %eax
409fd7:	6a 01                	push   $0x1
409fd9:	ff 15 c4 20 41 00    	call   *0x4120c4
409fdf:	48                   	dec    %eax
409fe0:	5e                   	pop    %esi
409fe1:	c3                   	ret
409fe2:	8b ff                	mov    %edi,%edi
409fe4:	55                   	push   %ebp
409fe5:	8b ec                	mov    %esp,%ebp
409fe7:	83 ec 18             	sub    $0x18,%esp
409fea:	a1 44 10 41 00       	mov    0x411044,%eax
409fef:	33 c5                	xor    %ebp,%eax
409ff1:	89 45 fc             	mov    %eax,-0x4(%ebp)
409ff4:	a1 60 18 40 00       	mov    0x401860,%eax
409ff9:	53                   	push   %ebx
409ffa:	56                   	push   %esi
409ffb:	57                   	push   %edi
409ffc:	8b f9                	mov    %ecx,%edi
409ffe:	89 45 f4             	mov    %eax,-0xc(%ebp)
40a001:	66 a1 64 18 40 00    	mov    0x401864,%ax
40a007:	33 db                	xor    %ebx,%ebx
40a009:	89 7d e8             	mov    %edi,-0x18(%ebp)
40a00c:	8b f2                	mov    %edx,%esi
40a00e:	89 75 f0             	mov    %esi,-0x10(%ebp)
40a011:	89 5d ec             	mov    %ebx,-0x14(%ebp)
40a014:	66 89 45 f8          	mov    %ax,-0x8(%ebp)
40a018:	85 ff                	test   %edi,%edi
40a01a:	0f 84 a9 00 00 00    	je     0x40a0c9
40a020:	e8 66 04 00 00       	call   0x40a48b
40a025:	85 c0                	test   %eax,%eax
40a027:	0f 84 9c 00 00 00    	je     0x40a0c9
40a02d:	85 f6                	test   %esi,%esi
40a02f:	74 0b                	je     0x40a03c
40a031:	8b ce                	mov    %esi,%ecx
40a033:	e8 53 04 00 00       	call   0x40a48b
40a038:	85 c0                	test   %eax,%eax
40a03a:	75 06                	jne    0x40a042
40a03c:	8d 45 f4             	lea    -0xc(%ebp),%eax
40a03f:	89 45 f0             	mov    %eax,-0x10(%ebp)
40a042:	0f b7 07             	movzwl (%edi),%eax
40a045:	8b f7                	mov    %edi,%esi
40a047:	66 85 c0             	test   %ax,%ax
40a04a:	74 21                	je     0x40a06d
40a04c:	8b 5d f0             	mov    -0x10(%ebp),%ebx
40a04f:	8b c8                	mov    %eax,%ecx
40a051:	51                   	push   %ecx
40a052:	53                   	push   %ebx
40a053:	ff 15 44 21 41 00    	call   *0x412144
40a059:	85 c0                	test   %eax,%eax
40a05b:	74 0d                	je     0x40a06a
40a05d:	83 c6 02             	add    $0x2,%esi
40a060:	0f b7 06             	movzwl (%esi),%eax
40a063:	8b c8                	mov    %eax,%ecx
40a065:	66 85 c0             	test   %ax,%ax
40a068:	75 e7                	jne    0x40a051
40a06a:	8b 5d ec             	mov    -0x14(%ebp),%ebx
40a06d:	0f b7 06             	movzwl (%esi),%eax
40a070:	89 75 ec             	mov    %esi,-0x14(%ebp)
40a073:	66 85 c0             	test   %ax,%ax
40a076:	74 34                	je     0x40a0ac
40a078:	8b 7d f0             	mov    -0x10(%ebp),%edi
40a07b:	8b c8                	mov    %eax,%ecx
40a07d:	51                   	push   %ecx
40a07e:	57                   	push   %edi
40a07f:	ff 15 44 21 41 00    	call   *0x412144
40a085:	85 c0                	test   %eax,%eax
40a087:	74 08                	je     0x40a091
40a089:	85 db                	test   %ebx,%ebx
40a08b:	75 06                	jne    0x40a093
40a08d:	8b de                	mov    %esi,%ebx
40a08f:	eb 02                	jmp    0x40a093
40a091:	33 db                	xor    %ebx,%ebx
40a093:	83 c6 02             	add    $0x2,%esi
40a096:	0f b7 06             	movzwl (%esi),%eax
40a099:	8b c8                	mov    %eax,%ecx
40a09b:	66 85 c0             	test   %ax,%ax
40a09e:	75 dd                	jne    0x40a07d
40a0a0:	8b 7d e8             	mov    -0x18(%ebp),%edi
40a0a3:	85 db                	test   %ebx,%ebx
40a0a5:	74 05                	je     0x40a0ac
40a0a7:	33 c0                	xor    %eax,%eax
40a0a9:	66 89 03             	mov    %ax,(%ebx)
40a0ac:	8b 5d ec             	mov    -0x14(%ebp),%ebx
40a0af:	3b df                	cmp    %edi,%ebx
40a0b1:	76 12                	jbe    0x40a0c5
40a0b3:	8b cb                	mov    %ebx,%ecx
40a0b5:	e8 d1 03 00 00       	call   0x40a48b
40a0ba:	40                   	inc    %eax
40a0bb:	8b d3                	mov    %ebx,%edx
40a0bd:	50                   	push   %eax
40a0be:	8b cf                	mov    %edi,%ecx
40a0c0:	e8 31 03 00 00       	call   0x40a3f6
40a0c5:	8b c7                	mov    %edi,%eax
40a0c7:	eb 05                	jmp    0x40a0ce
40a0c9:	b8 8c 18 40 00       	mov    $0x40188c,%eax
40a0ce:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a0d1:	5f                   	pop    %edi
40a0d2:	5e                   	pop    %esi
40a0d3:	33 cd                	xor    %ebp,%ecx
40a0d5:	5b                   	pop    %ebx
40a0d6:	e8 f5 4b 00 00       	call   0x40ecd0
40a0db:	c9                   	leave
40a0dc:	c2 04 00             	ret    $0x4
40a0df:	8b ff                	mov    %edi,%edi
40a0e1:	55                   	push   %ebp
40a0e2:	8b ec                	mov    %esp,%ebp
40a0e4:	83 ec 24             	sub    $0x24,%esp
40a0e7:	a1 44 10 41 00       	mov    0x411044,%eax
40a0ec:	33 c5                	xor    %ebp,%eax
40a0ee:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a0f1:	53                   	push   %ebx
40a0f2:	56                   	push   %esi
40a0f3:	57                   	push   %edi
40a0f4:	8b f9                	mov    %ecx,%edi
40a0f6:	33 c0                	xor    %eax,%eax
40a0f8:	89 7d e4             	mov    %edi,-0x1c(%ebp)
40a0fb:	8b f2                	mov    %edx,%esi
40a0fd:	89 75 dc             	mov    %esi,-0x24(%ebp)
40a100:	89 45 f4             	mov    %eax,-0xc(%ebp)
40a103:	66 89 45 f8          	mov    %ax,-0x8(%ebp)
40a107:	85 ff                	test   %edi,%edi
40a109:	75 0e                	jne    0x40a119
40a10b:	ff 15 48 20 41 00    	call   *0x412048
40a111:	85 c0                	test   %eax,%eax
40a113:	75 5a                	jne    0x40a16f
40a115:	6a 57                	push   $0x57
40a117:	eb 50                	jmp    0x40a169
40a119:	e8 9f fe ff ff       	call   0x409fbd
40a11e:	8b d8                	mov    %eax,%ebx
40a120:	3b de                	cmp    %esi,%ebx
40a122:	77 02                	ja     0x40a126
40a124:	8b c6                	mov    %esi,%eax
40a126:	83 c0 0a             	add    $0xa,%eax
40a129:	33 d2                	xor    %edx,%edx
40a12b:	6a 01                	push   $0x1
40a12d:	50                   	push   %eax
40a12e:	33 c9                	xor    %ecx,%ecx
40a130:	89 45 ec             	mov    %eax,-0x14(%ebp)
40a133:	e8 6b f4 ff ff       	call   0x4095a3
40a138:	8b c8                	mov    %eax,%ecx
40a13a:	89 4d e8             	mov    %ecx,-0x18(%ebp)
40a13d:	85 c9                	test   %ecx,%ecx
40a13f:	74 1c                	je     0x40a15d
40a141:	3b de                	cmp    %esi,%ebx
40a143:	73 76                	jae    0x40a1bb
40a145:	6a 01                	push   $0x1
40a147:	ff 75 ec             	push   -0x14(%ebp)
40a14a:	33 c9                	xor    %ecx,%ecx
40a14c:	33 d2                	xor    %edx,%edx
40a14e:	41                   	inc    %ecx
40a14f:	e8 4f f4 ff ff       	call   0x4095a3
40a154:	8b c8                	mov    %eax,%ecx
40a156:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
40a159:	85 c9                	test   %ecx,%ecx
40a15b:	75 1c                	jne    0x40a179
40a15d:	ff 15 48 20 41 00    	call   *0x412048
40a163:	85 c0                	test   %eax,%eax
40a165:	75 08                	jne    0x40a16f
40a167:	6a 08                	push   $0x8
40a169:	ff 15 74 20 41 00    	call   *0x412074
40a16f:	b8 8c 18 40 00       	mov    $0x40188c,%eax
40a174:	e9 e8 00 00 00       	jmp    0x40a261
40a179:	ff 75 ec             	push   -0x14(%ebp)
40a17c:	8b c6                	mov    %esi,%eax
40a17e:	ba 68 18 40 00       	mov    $0x401868,%edx
40a183:	2b c3                	sub    %ebx,%eax
40a185:	50                   	push   %eax
40a186:	e8 e7 00 00 00       	call   0x40a272
40a18b:	83 7d 08 01          	cmpl   $0x1,0x8(%ebp)
40a18f:	8b 55 e4             	mov    -0x1c(%ebp),%edx
40a192:	75 05                	jne    0x40a199
40a194:	89 7d f0             	mov    %edi,-0x10(%ebp)
40a197:	eb 05                	jmp    0x40a19e
40a199:	89 55 f0             	mov    %edx,-0x10(%ebp)
40a19c:	8b d7                	mov    %edi,%edx
40a19e:	8b 5d ec             	mov    -0x14(%ebp),%ebx
40a1a1:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40a1a4:	53                   	push   %ebx
40a1a5:	e8 4c 02 00 00       	call   0x40a3f6
40a1aa:	8b 55 f0             	mov    -0x10(%ebp),%edx
40a1ad:	8b 4d e8             	mov    -0x18(%ebp),%ecx