406fab:	83 e0 01             	and    $0x1,%eax
406fae:	5e                   	pop    %esi
406faf:	c3                   	ret
406fb0:	81 ec 10 04 00 00    	sub    $0x410,%esp
406fb6:	53                   	push   %ebx
406fb7:	8b 9c 24 1c 04 00 00 	mov    0x41c(%esp),%ebx
406fbe:	68 04 01 00 00       	push   $0x104
406fc3:	8d 44 24 08          	lea    0x8(%esp),%eax
406fc7:	50                   	push   %eax
406fc8:	53                   	push   %ebx
406fc9:	e8 d2 ab ff ff       	call   0x401ba0
406fce:	83 c4 0c             	add    $0xc,%esp
406fd1:	85 c0                	test   %eax,%eax
406fd3:	74 0a                	je     0x406fdf
406fd5:	33 c0                	xor    %eax,%eax
406fd7:	5b                   	pop    %ebx
406fd8:	81 c4 10 04 00 00    	add    $0x410,%esp
406fde:	c3                   	ret
406fdf:	56                   	push   %esi
406fe0:	8d 4c 24 08          	lea    0x8(%esp),%ecx
406fe4:	57                   	push   %edi
406fe5:	51                   	push   %ecx
406fe6:	e8 75 b6 ff ff       	call   0x402660
406feb:	8b b4 24 24 04 00 00 	mov    0x424(%esp),%esi
406ff2:	8d 54 24 10          	lea    0x10(%esp),%edx
406ff6:	56                   	push   %esi
406ff7:	52                   	push   %edx
406ff8:	e8 a3 ef ff ff       	call   0x405fa0
406ffd:	8b f8                	mov    %eax,%edi
406fff:	83 c4 0c             	add    $0xc,%esp
407002:	85 ff                	test   %edi,%edi
407004:	74 0d                	je     0x407013
407006:	57                   	push   %edi
407007:	e8 54 ff ff ff       	call   0x406f60
40700c:	83 c4 04             	add    $0x4,%esp
40700f:	85 c0                	test   %eax,%eax
407011:	74 2d                	je     0x407040
407013:	68 04 01 00 00       	push   $0x104
407018:	8d 84 24 18 02 00 00 	lea    0x218(%esp),%eax
40701f:	50                   	push   %eax
407020:	53                   	push   %ebx
407021:	e8 5a ab ff ff       	call   0x401b80
407026:	8d 8c 24 20 02 00 00 	lea    0x220(%esp),%ecx
40702d:	51                   	push   %ecx
40702e:	8d 54 24 1c          	lea    0x1c(%esp),%edx
407032:	52                   	push   %edx
407033:	56                   	push   %esi
407034:	e8 37 fe ff ff       	call   0x406e70
407039:	83 c4 18             	add    $0x18,%esp
40703c:	85 c0                	test   %eax,%eax
40703e:	75 02                	jne    0x407042
407040:	8b c7                	mov    %edi,%eax
407042:	5f                   	pop    %edi
407043:	5e                   	pop    %esi
407044:	5b                   	pop    %ebx
407045:	81 c4 10 04 00 00    	add    $0x410,%esp
40704b:	c3                   	ret
40704c:	cc                   	int3
40704d:	cc                   	int3
40704e:	cc                   	int3
40704f:	cc                   	int3
407050:	51                   	push   %ecx
407051:	8b 44 24 08          	mov    0x8(%esp),%eax
407055:	55                   	push   %ebp
407056:	56                   	push   %esi
407057:	57                   	push   %edi
407058:	50                   	push   %eax
407059:	e8 3a 12 04 00       	call   0x448298
40705e:	8b e8                	mov    %eax,%ebp
407060:	55                   	push   %ebp
407061:	e8 fa b5 ff ff       	call   0x402660
407066:	8b 4c 24 20          	mov    0x20(%esp),%ecx
40706a:	51                   	push   %ecx
40706b:	e8 50 b6 ff ff       	call   0x4026c0
407070:	50                   	push   %eax
407071:	e8 22 12 04 00       	call   0x448298
407076:	8b f0                	mov    %eax,%esi
407078:	56                   	push   %esi
407079:	89 74 24 20          	mov    %esi,0x20(%esp)
40707d:	e8 de b5 ff ff       	call   0x402660
407082:	56                   	push   %esi
407083:	55                   	push   %ebp
407084:	e8 da 9c 02 00       	call   0x430d63
407089:	8b f8                	mov    %eax,%edi
40708b:	83 c4 1c             	add    $0x1c,%esp
40708e:	85 ff                	test   %edi,%edi
407090:	0f 84 a0 00 00 00    	je     0x407136
407096:	53                   	push   %ebx
407097:	8b 5c 24 20          	mov    0x20(%esp),%ebx
40709b:	eb 03                	jmp    0x4070a0
40709d:	8d 49 00             	lea    0x0(%ecx),%ecx
4070a0:	8b c6                	mov    %esi,%eax
4070a2:	8d 50 02             	lea    0x2(%eax),%edx
4070a5:	66 8b 08             	mov    (%eax),%cx
4070a8:	83 c0 02             	add    $0x2,%eax
4070ab:	66 85 c9             	test   %cx,%cx
4070ae:	75 f5                	jne    0x4070a5
4070b0:	2b c2                	sub    %edx,%eax
4070b2:	d1 f8                	sar    $1,%eax
4070b4:	0f b7 04 47          	movzwl (%edi,%eax,2),%eax
4070b8:	66 3b c3             	cmp    %bx,%ax
4070bb:	74 05                	je     0x4070c2
4070bd:	66 85 c0             	test   %ax,%ax
4070c0:	75 17                	jne    0x4070d9
4070c2:	3b fd                	cmp    %ebp,%edi
4070c4:	74 28                	je     0x4070ee
4070c6:	0f b7 47 fe          	movzwl -0x2(%edi),%eax
4070ca:	66 3b c3             	cmp    %bx,%ax
4070cd:	74 1f                	je     0x4070ee
4070cf:	83 f8 5c             	cmp    $0x5c,%eax
4070d2:	74 1a                	je     0x4070ee
4070d4:	83 f8 2f             	cmp    $0x2f,%eax
4070d7:	74 15                	je     0x4070ee
4070d9:	56                   	push   %esi
4070da:	83 c7 02             	add    $0x2,%edi
4070dd:	57                   	push   %edi
4070de:	e8 80 9c 02 00       	call   0x430d63
4070e3:	8b f8                	mov    %eax,%edi
4070e5:	83 c4 08             	add    $0x8,%esp
4070e8:	85 ff                	test   %edi,%edi
4070ea:	75 b4                	jne    0x4070a0
4070ec:	eb 47                	jmp    0x407135
4070ee:	53                   	push   %ebx
4070ef:	55                   	push   %ebp
4070f0:	8b f5                	mov    %ebp,%esi
4070f2:	e8 c4 9d 02 00       	call   0x430ebb
4070f7:	83 c4 08             	add    $0x8,%esp
4070fa:	85 c0                	test   %eax,%eax
4070fc:	74 28                	je     0x407126
4070fe:	8b ff                	mov    %edi,%edi
407100:	53                   	push   %ebx
407101:	56                   	push   %esi
407102:	e8 b4 9d 02 00       	call   0x430ebb
407107:	83 c4 08             	add    $0x8,%esp
40710a:	3b c7                	cmp    %edi,%eax
40710c:	73 18                	jae    0x407126
40710e:	53                   	push   %ebx
40710f:	56                   	push   %esi
407110:	e8 a6 9d 02 00       	call   0x430ebb
407115:	8d 70 02             	lea    0x2(%eax),%esi
407118:	53                   	push   %ebx
407119:	56                   	push   %esi
40711a:	e8 9c 9d 02 00       	call   0x430ebb
40711f:	83 c4 10             	add    $0x10,%esp
407122:	85 c0                	test   %eax,%eax
407124:	75 da                	jne    0x407100
407126:	8b 54 24 18          	mov    0x18(%esp),%edx
40712a:	2b f5                	sub    %ebp,%esi
40712c:	d1 fe                	sar    $1,%esi
40712e:	8d 3c 72             	lea    (%edx,%esi,2),%edi
407131:	8b 74 24 10          	mov    0x10(%esp),%esi
407135:	5b                   	pop    %ebx
407136:	56                   	push   %esi
407137:	e8 61 98 02 00       	call   0x43099d
40713c:	55                   	push   %ebp
40713d:	e8 5b 98 02 00       	call   0x43099d
407142:	83 c4 08             	add    $0x8,%esp
407145:	8b c7                	mov    %edi,%eax
407147:	5f                   	pop    %edi
407148:	5e                   	pop    %esi
407149:	5d                   	pop    %ebp
40714a:	59                   	pop    %ecx
40714b:	c3                   	ret
40714c:	cc                   	int3
40714d:	cc                   	int3
40714e:	cc                   	int3
40714f:	cc                   	int3
407150:	8b 44 24 0c          	mov    0xc(%esp),%eax
407154:	8b 4c 24 08          	mov    0x8(%esp),%ecx
407158:	8b 54 24 04          	mov    0x4(%esp),%edx
40715c:	50                   	push   %eax
40715d:	51                   	push   %ecx
40715e:	52                   	push   %edx
40715f:	e8 ec fe ff ff       	call   0x407050
407164:	83 c4 0c             	add    $0xc,%esp
407167:	f7 d8                	neg    %eax
407169:	1b c0                	sbb    %eax,%eax
40716b:	f7 d8                	neg    %eax
40716d:	c3                   	ret
40716e:	cc                   	int3
40716f:	cc                   	int3
407170:	8b 44 24 04          	mov    0x4(%esp),%eax
407174:	8d 4c 00 02          	lea    0x2(%eax,%eax,1),%ecx
407178:	51                   	push   %ecx
407179:	e8 98 98 02 00       	call   0x430a16
40717e:	33 d2                	xor    %edx,%edx
407180:	83 c4 04             	add    $0x4,%esp
407183:	66 89 10             	mov    %dx,(%eax)
407186:	c3                   	ret
407187:	cc                   	int3
407188:	cc                   	int3
407189:	cc                   	int3
40718a:	cc                   	int3
40718b:	cc                   	int3
40718c:	cc                   	int3
40718d:	cc                   	int3
40718e:	cc                   	int3
40718f:	cc                   	int3
407190:	e9 08 98 02 00       	jmp    0x43099d
407195:	cc                   	int3
407196:	cc                   	int3
407197:	cc                   	int3
407198:	cc                   	int3
407199:	cc                   	int3
40719a:	cc                   	int3
40719b:	cc                   	int3
40719c:	cc                   	int3
40719d:	cc                   	int3
40719e:	cc                   	int3
40719f:	cc                   	int3
4071a0:	8b 44 24 08          	mov    0x8(%esp),%eax
4071a4:	53                   	push   %ebx
4071a5:	8b 5c 24 10          	mov    0x10(%esp),%ebx
4071a9:	55                   	push   %ebp
4071aa:	8b 6c 24 0c          	mov    0xc(%esp),%ebp
4071ae:	56                   	push   %esi
4071af:	53                   	push   %ebx
4071b0:	50                   	push   %eax
4071b1:	55                   	push   %ebp
4071b2:	e8 99 fe ff ff       	call   0x407050
4071b7:	8b f0                	mov    %eax,%esi
4071b9:	83 c4 0c             	add    $0xc,%esp
4071bc:	85 f6                	test   %esi,%esi
4071be:	74 5c                	je     0x40721c
4071c0:	57                   	push   %edi
4071c1:	53                   	push   %ebx
4071c2:	56                   	push   %esi
4071c3:	e8 f3 9c 02 00       	call   0x430ebb
4071c8:	83 c4 08             	add    $0x8,%esp
4071cb:	85 c0                	test   %eax,%eax
4071cd:	75 13                	jne    0x4071e2
4071cf:	3b f5                	cmp    %ebp,%esi
4071d1:	75 07                	jne    0x4071da
4071d3:	33 c9                	xor    %ecx,%ecx
4071d5:	66 89 0e             	mov    %cx,(%esi)
4071d8:	eb 2c                	jmp    0x407206
4071da:	33 d2                	xor    %edx,%edx
4071dc:	66 89 56 fe          	mov    %dx,-0x2(%esi)
4071e0:	eb 24                	jmp    0x407206
4071e2:	8b c8                	mov    %eax,%ecx
4071e4:	8d 79 02             	lea    0x2(%ecx),%edi
4071e7:	66 8b 11             	mov    (%ecx),%dx
4071ea:	83 c1 02             	add    $0x2,%ecx
4071ed:	66 85 d2             	test   %dx,%dx
4071f0:	75 f5                	jne    0x4071e7
4071f2:	2b cf                	sub    %edi,%ecx
4071f4:	d1 f9                	sar    $1,%ecx
4071f6:	03 c9                	add    %ecx,%ecx
4071f8:	51                   	push   %ecx
4071f9:	83 c0 02             	add    $0x2,%eax
4071fc:	50                   	push   %eax
4071fd:	56                   	push   %esi
4071fe:	e8 5d b6 02 00       	call   0x432860
407203:	83 c4 0c             	add    $0xc,%esp
407206:	8b 54 24 18          	mov    0x18(%esp),%edx
40720a:	53                   	push   %ebx
40720b:	52                   	push   %edx
40720c:	55                   	push   %ebp
40720d:	e8 3e fe ff ff       	call   0x407050
407212:	8b f0                	mov    %eax,%esi
407214:	83 c4 0c             	add    $0xc,%esp
407217:	85 f6                	test   %esi,%esi
407219:	75 a6                	jne    0x4071c1
40721b:	5f                   	pop    %edi
40721c:	5e                   	pop    %esi
40721d:	5d                   	pop    %ebp
40721e:	5b                   	pop    %ebx
40721f:	c3                   	ret
407220:	83 ec 08             	sub    $0x8,%esp
407223:	55                   	push   %ebp
407224:	8b 6c 24 10          	mov    0x10(%esp),%ebp
407228:	c7 44 24 04 01 00 00 	movl   $0x1,0x4(%esp)
40722f:	00
407230:	85 ed                	test   %ebp,%ebp
407232:	0f 84 c1 00 00 00    	je     0x4072f9
407238:	8b c5                	mov    %ebp,%eax
40723a:	8d 50 02             	lea    0x2(%eax),%edx
40723d:	8d 49 00             	lea    0x0(%ecx),%ecx
407240:	66 8b 08             	mov    (%eax),%cx
407243:	83 c0 02             	add    $0x2,%eax
407246:	66 85 c9             	test   %cx,%cx
407249:	75 f5                	jne    0x407240
40724b:	2b c2                	sub    %edx,%eax
40724d:	d1 f8                	sar    $1,%eax
40724f:	0f 84 a4 00 00 00    	je     0x4072f9
407255:	53                   	push   %ebx
407256:	56                   	push   %esi
407257:	57                   	push   %edi
407258:	55                   	push   %ebp
407259:	e8 3a 10 04 00       	call   0x448298
40725e:	8b 5c 24 30          	mov    0x30(%esp),%ebx
407262:	8b f8                	mov    %eax,%edi
407264:	89 44 24 18          	mov    %eax,0x18(%esp)
407268:	8b f0                	mov    %eax,%esi
40726a:	33 c0                	xor    %eax,%eax
40726c:	83 c4 04             	add    $0x4,%esp
40726f:	39 44 24 24          	cmp    %eax,0x24(%esp)
407273:	0f 94 c0             	sete   %al
407276:	89 44 24 1c          	mov    %eax,0x1c(%esp)
40727a:	85 ff                	test   %edi,%edi
40727c:	74 15                	je     0x407293
40727e:	53                   	push   %ebx
40727f:	56                   	push   %esi
407280:	e8 36 9c 02 00       	call   0x430ebb
407285:	8b f8                	mov    %eax,%edi
407287:	83 c4 08             	add    $0x8,%esp
40728a:	85 ff                	test   %edi,%edi
40728c:	74 05                	je     0x407293
40728e:	33 c9                	xor    %ecx,%ecx
407290:	66 89 0f             	mov    %cx,(%edi)
407293:	56                   	push   %esi
407294:	e8 27 b4 ff ff       	call   0x4026c0
407299:	8b 54 24 24          	mov    0x24(%esp),%edx
40729d:	8b f0                	mov    %eax,%esi
40729f:	53                   	push   %ebx
4072a0:	56                   	push   %esi
4072a1:	52                   	push   %edx
4072a2:	e8 a9 fd ff ff       	call   0x407050
4072a7:	83 c4 10             	add    $0x10,%esp
4072aa:	f7 d8                	neg    %eax
4072ac:	1b c0                	sbb    %eax,%eax
4072ae:	f7 d8                	neg    %eax
4072b0:	33 44 24 1c          	xor    0x1c(%esp),%eax
4072b4:	75 19                	jne    0x4072cf
4072b6:	39 44 24 28          	cmp    %eax,0x28(%esp)
4072ba:	75 33                	jne    0x4072ef
4072bc:	53                   	push   %ebx
4072bd:	56                   	push   %esi
4072be:	55                   	push   %ebp
4072bf:	e8 dc fe ff ff       	call   0x4071a0
4072c4:	83 c4 0c             	add    $0xc,%esp
4072c7:	c7 44 24 10 00 00 00 	movl   $0x0,0x10(%esp)
4072ce:	00
4072cf:	8d 77 02             	lea    0x2(%edi),%esi
4072d2:	85 ff                	test   %edi,%edi
4072d4:	75 a8                	jne    0x40727e
4072d6:	8b 44 24 14          	mov    0x14(%esp),%eax
4072da:	50                   	push   %eax
4072db:	e8 bd 96 02 00       	call   0x43099d
4072e0:	8b 44 24 14          	mov    0x14(%esp),%eax
4072e4:	83 c4 04             	add    $0x4,%esp
4072e7:	5f                   	pop    %edi
4072e8:	5e                   	pop    %esi
4072e9:	5b                   	pop    %ebx
4072ea:	5d                   	pop    %ebp
4072eb:	83 c4 08             	add    $0x8,%esp
4072ee:	c3                   	ret
4072ef:	5f                   	pop    %edi
4072f0:	5e                   	pop    %esi
4072f1:	5b                   	pop    %ebx