406e58:	8b 08                	mov    (%eax),%ecx
406e5a:	89 4d f0             	mov    %ecx,-0x10(%ebp)
406e5d:	0f 85 a2 00 00 00    	jne    0x406f05
406e63:	53                   	push   %ebx
406e64:	56                   	push   %esi
406e65:	83 c7 10             	add    $0x10,%edi
406e68:	89 45 e0             	mov    %eax,-0x20(%ebp)
406e6b:	6a 40                	push   $0x40
406e6d:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
406e74:	c7 45 e4 00 00 00 00 	movl   $0x0,-0x1c(%ebp)
406e7b:	e8 40 fb ff ff       	call   0x4069c0
406e80:	8b d8                	mov    %eax,%ebx
406e82:	83 c4 04             	add    $0x4,%esp
406e85:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
406e88:	8d 73 10             	lea    0x10(%ebx),%esi
406e8b:	57                   	push   %edi
406e8c:	8b ce                	mov    %esi,%ecx
406e8e:	89 75 e8             	mov    %esi,-0x18(%ebp)
406e91:	e8 d4 b1 ff ff       	call   0x40206a
406e96:	8d 47 18             	lea    0x18(%edi),%eax
406e99:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
406e9d:	8d 4e 18             	lea    0x18(%esi),%ecx
406ea0:	50                   	push   %eax
406ea1:	e8 c4 b1 ff ff       	call   0x40206a
406ea6:	8b 45 f0             	mov    -0x10(%ebp),%eax
406ea9:	8b 7d 08             	mov    0x8(%ebp),%edi
406eac:	8b 75 ec             	mov    -0x14(%ebp),%esi
406eaf:	89 03                	mov    %eax,(%ebx)
406eb1:	89 43 08             	mov    %eax,0x8(%ebx)
406eb4:	8b 45 0c             	mov    0xc(%ebp),%eax
406eb7:	66 c7 43 0c 00 00    	movw   $0x0,0xc(%ebx)
406ebd:	89 43 04             	mov    %eax,0x4(%ebx)
406ec0:	8a 47 0c             	mov    0xc(%edi),%al
406ec3:	88 43 0c             	mov    %al,0xc(%ebx)
406ec6:	89 75 dc             	mov    %esi,-0x24(%ebp)
406ec9:	89 75 e0             	mov    %esi,-0x20(%ebp)
406ecc:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
406ecf:	53                   	push   %ebx
406ed0:	ff 37                	push   (%edi)
406ed2:	8b ce                	mov    %esi,%ecx
406ed4:	c7 45 fc 02 00 00 00 	movl   $0x2,-0x4(%ebp)
406edb:	e8 50 ff ff ff       	call   0x406e30
406ee0:	53                   	push   %ebx
406ee1:	89 03                	mov    %eax,(%ebx)
406ee3:	8b ce                	mov    %esi,%ecx
406ee5:	ff 77 08             	push   0x8(%edi)
406ee8:	e8 43 ff ff ff       	call   0x406e30
406eed:	89 43 08             	mov    %eax,0x8(%ebx)
406ef0:	8b c3                	mov    %ebx,%eax
406ef2:	5e                   	pop    %esi
406ef3:	5b                   	pop    %ebx
406ef4:	5f                   	pop    %edi
406ef5:	8b 4d f4             	mov    -0xc(%ebp),%ecx
406ef8:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
406eff:	8b e5                	mov    %ebp,%esp
406f01:	5d                   	pop    %ebp
406f02:	c2 08 00             	ret    $0x8
406f05:	8b c1                	mov    %ecx,%eax
406f07:	8b 4d f4             	mov    -0xc(%ebp),%ecx
406f0a:	5f                   	pop    %edi
406f0b:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
406f12:	8b e5                	mov    %ebp,%esp
406f14:	5d                   	pop    %ebp
406f15:	c2 08 00             	ret    $0x8
406f18:	cc                   	int3
406f19:	cc                   	int3
406f1a:	cc                   	int3
406f1b:	cc                   	int3
406f1c:	cc                   	int3
406f1d:	cc                   	int3
406f1e:	cc                   	int3
406f1f:	cc                   	int3
406f20:	55                   	push   %ebp
406f21:	8b ec                	mov    %esp,%ebp
406f23:	56                   	push   %esi
406f24:	8b 75 08             	mov    0x8(%ebp),%esi
406f27:	57                   	push   %edi
406f28:	8b 7d 0c             	mov    0xc(%ebp),%edi
406f2b:	3b f7                	cmp    %edi,%esi
406f2d:	74 0f                	je     0x406f3e
406f2f:	90                   	nop
406f30:	8b ce                	mov    %esi,%ecx
406f32:	e8 99 0d 00 00       	call   0x407cd0
406f37:	83 c6 20             	add    $0x20,%esi
406f3a:	3b f7                	cmp    %edi,%esi
406f3c:	75 f2                	jne    0x406f30
406f3e:	5f                   	pop    %edi
406f3f:	5e                   	pop    %esi
406f40:	5d                   	pop    %ebp
406f41:	c3                   	ret
406f42:	cc                   	int3
406f43:	cc                   	int3
406f44:	cc                   	int3
406f45:	cc                   	int3
406f46:	cc                   	int3
406f47:	cc                   	int3
406f48:	cc                   	int3
406f49:	cc                   	int3
406f4a:	cc                   	int3
406f4b:	cc                   	int3
406f4c:	cc                   	int3
406f4d:	cc                   	int3
406f4e:	cc                   	int3
406f4f:	cc                   	int3
406f50:	55                   	push   %ebp
406f51:	8b ec                	mov    %esp,%ebp
406f53:	6a ff                	push   $0xffffffff
406f55:	68 7d 00 43 00       	push   $0x43007d
406f5a:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
406f60:	50                   	push   %eax
406f61:	64 89 25 00 00 00 00 	mov    %esp,%fs:0x0
406f68:	83 ec 28             	sub    $0x28,%esp
406f6b:	8b 01                	mov    (%ecx),%eax
406f6d:	53                   	push   %ebx
406f6e:	56                   	push   %esi
406f6f:	8b 75 0c             	mov    0xc(%ebp),%esi
406f72:	8b 58 04             	mov    0x4(%eax),%ebx
406f75:	57                   	push   %edi
406f76:	33 ff                	xor    %edi,%edi
406f78:	89 4d e8             	mov    %ecx,-0x18(%ebp)
406f7b:	8d 56 10             	lea    0x10(%esi),%edx
406f7e:	89 45 cc             	mov    %eax,-0x34(%ebp)
406f81:	80 7b 0d 00          	cmpb   $0x0,0xd(%ebx)
406f85:	89 45 ec             	mov    %eax,-0x14(%ebp)
406f88:	89 55 e4             	mov    %edx,-0x1c(%ebp)
406f8b:	0f 85 8d 00 00 00    	jne    0x40701e
406f91:	8b 12                	mov    (%edx),%edx
406f93:	89 55 f0             	mov    %edx,-0x10(%ebp)
406f96:	83 7e 14 07          	cmpl   $0x7,0x14(%esi)
406f9a:	8d 7b 10             	lea    0x10(%ebx),%edi
406f9d:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
406fa0:	8b c6                	mov    %esi,%eax
406fa2:	76 02                	jbe    0x406fa6
406fa4:	8b 06                	mov    (%esi),%eax
406fa6:	83 7f 14 07          	cmpl   $0x7,0x14(%edi)
406faa:	8b 4f 10             	mov    0x10(%edi),%ecx
406fad:	89 4d e0             	mov    %ecx,-0x20(%ebp)
406fb0:	76 02                	jbe    0x406fb4
406fb2:	8b 3f                	mov    (%edi),%edi
406fb4:	3b d1                	cmp    %ecx,%edx
406fb6:	8b f1                	mov    %ecx,%esi
406fb8:	0f 42 f2             	cmovb  %edx,%esi
406fbb:	85 f6                	test   %esi,%esi
406fbd:	74 28                	je     0x406fe7
406fbf:	2b f8                	sub    %eax,%edi
406fc1:	0f b7 0c 07          	movzwl (%edi,%eax,1),%ecx
406fc5:	89 4d d8             	mov    %ecx,-0x28(%ebp)
406fc8:	0f b7 08             	movzwl (%eax),%ecx
406fcb:	8b d1                	mov    %ecx,%edx
406fcd:	89 55 dc             	mov    %edx,-0x24(%ebp)
406fd0:	0f b7 14 07          	movzwl (%edi,%eax,1),%edx
406fd4:	66 3b d1             	cmp    %cx,%dx
406fd7:	75 1c                	jne    0x406ff5
406fd9:	83 c0 02             	add    $0x2,%eax
406fdc:	83 ee 01             	sub    $0x1,%esi
406fdf:	75 e0                	jne    0x406fc1
406fe1:	8b 4d e0             	mov    -0x20(%ebp),%ecx
406fe4:	8b 55 f0             	mov    -0x10(%ebp),%edx
406fe7:	3b ca                	cmp    %edx,%ecx
406fe9:	73 16                	jae    0x407001
406feb:	8b 5b 08             	mov    0x8(%ebx),%ebx
406fee:	33 ff                	xor    %edi,%edi
406ff0:	8b 45 ec             	mov    -0x14(%ebp),%eax
406ff3:	eb 18                	jmp    0x40700d
406ff5:	8b 45 dc             	mov    -0x24(%ebp),%eax
406ff8:	8b 55 f0             	mov    -0x10(%ebp),%edx
406ffb:	66 39 45 d8          	cmp    %ax,-0x28(%ebp)
406fff:	eb e8                	jmp    0x406fe9
407001:	8b c3                	mov    %ebx,%eax
407003:	bf 01 00 00 00       	mov    $0x1,%edi
407008:	8b 1b                	mov    (%ebx),%ebx
40700a:	89 45 ec             	mov    %eax,-0x14(%ebp)
40700d:	80 7b 0d 00          	cmpb   $0x0,0xd(%ebx)
407011:	8b 75 0c             	mov    0xc(%ebp),%esi
407014:	74 80                	je     0x406f96
407016:	8b 5d d4             	mov    -0x2c(%ebp),%ebx
407019:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40701c:	eb 03                	jmp    0x407021
40701e:	89 55 e4             	mov    %edx,-0x1c(%ebp)
407021:	80 78 0d 00          	cmpb   $0x0,0xd(%eax)
407025:	75 2d                	jne    0x407054
407027:	83 c0 10             	add    $0x10,%eax
40702a:	50                   	push   %eax
40702b:	56                   	push   %esi
40702c:	e8 2f 0d 00 00       	call   0x407d60
407031:	84 c0                	test   %al,%al
407033:	75 1f                	jne    0x407054
407035:	8b 45 08             	mov    0x8(%ebp),%eax
407038:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40703b:	5f                   	pop    %edi
40703c:	5e                   	pop    %esi
40703d:	89 08                	mov    %ecx,(%eax)
40703f:	c6 40 04 00          	movb   $0x0,0x4(%eax)
407043:	5b                   	pop    %ebx
407044:	8b 4d f4             	mov    -0xc(%ebp),%ecx
407047:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40704e:	8b e5                	mov    %ebp,%esp
407050:	5d                   	pop    %ebp
407051:	c2 08 00             	ret    $0x8
407054:	8b 45 e8             	mov    -0x18(%ebp),%eax
407057:	81 78 04 ff ff ff 03 	cmpl   $0x3ffffff,0x4(%eax)
40705e:	0f 84 ed 00 00 00    	je     0x407151
407064:	89 45 d0             	mov    %eax,-0x30(%ebp)
407067:	6a 40                	push   $0x40
407069:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
407070:	c7 45 d4 00 00 00 00 	movl   $0x0,-0x2c(%ebp)
407077:	e8 44 f9 ff ff       	call   0x4069c0
40707c:	8b c8                	mov    %eax,%ecx
40707e:	83 c4 04             	add    $0x4,%esp
407081:	33 c0                	xor    %eax,%eax
407083:	89 41 10             	mov    %eax,0x10(%ecx)
407086:	89 41 14             	mov    %eax,0x14(%ecx)
407089:	89 41 18             	mov    %eax,0x18(%ecx)
40708c:	89 41 1c             	mov    %eax,0x1c(%ecx)
40708f:	89 41 20             	mov    %eax,0x20(%ecx)
407092:	89 41 24             	mov    %eax,0x24(%ecx)
407095:	8b 06                	mov    (%esi),%eax
407097:	89 41 10             	mov    %eax,0x10(%ecx)
40709a:	8b 46 04             	mov    0x4(%esi),%eax
40709d:	89 41 14             	mov    %eax,0x14(%ecx)
4070a0:	8b 46 08             	mov    0x8(%esi),%eax
4070a3:	89 41 18             	mov    %eax,0x18(%ecx)
4070a6:	8b 46 0c             	mov    0xc(%esi),%eax
4070a9:	89 41 1c             	mov    %eax,0x1c(%ecx)
4070ac:	8b 46 10             	mov    0x10(%esi),%eax
4070af:	89 41 20             	mov    %eax,0x20(%ecx)
4070b2:	8b 46 14             	mov    0x14(%esi),%eax
4070b5:	89 41 24             	mov    %eax,0x24(%ecx)
4070b8:	8b 45 e4             	mov    -0x1c(%ebp),%eax
4070bb:	c7 46 14 07 00 00 00 	movl   $0x7,0x14(%esi)
4070c2:	51                   	push   %ecx
4070c3:	57                   	push   %edi
4070c4:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
4070ca:	33 c0                	xor    %eax,%eax
4070cc:	66 89 06             	mov    %ax,(%esi)
4070cf:	89 41 28             	mov    %eax,0x28(%ecx)
4070d2:	89 41 2c             	mov    %eax,0x2c(%ecx)
4070d5:	89 41 30             	mov    %eax,0x30(%ecx)
4070d8:	89 41 34             	mov    %eax,0x34(%ecx)
4070db:	89 41 38             	mov    %eax,0x38(%ecx)
4070de:	89 41 3c             	mov    %eax,0x3c(%ecx)
4070e1:	8b 46 18             	mov    0x18(%esi),%eax
4070e4:	89 41 28             	mov    %eax,0x28(%ecx)
4070e7:	8b 46 1c             	mov    0x1c(%esi),%eax
4070ea:	89 41 2c             	mov    %eax,0x2c(%ecx)
4070ed:	8b 46 20             	mov    0x20(%esi),%eax
4070f0:	89 41 30             	mov    %eax,0x30(%ecx)
4070f3:	8b 46 24             	mov    0x24(%esi),%eax
4070f6:	89 41 34             	mov    %eax,0x34(%ecx)
4070f9:	8b 46 28             	mov    0x28(%esi),%eax
4070fc:	89 41 38             	mov    %eax,0x38(%ecx)
4070ff:	8b 46 2c             	mov    0x2c(%esi),%eax
407102:	89 41 3c             	mov    %eax,0x3c(%ecx)
407105:	33 c0                	xor    %eax,%eax
407107:	66 89 46 18          	mov    %ax,0x18(%esi)
40710b:	8b 45 cc             	mov    -0x34(%ebp),%eax
40710e:	c7 46 28 00 00 00 00 	movl   $0x0,0x28(%esi)
407115:	c7 46 2c 07 00 00 00 	movl   $0x7,0x2c(%esi)
40711c:	89 01                	mov    %eax,(%ecx)
40711e:	89 41 04             	mov    %eax,0x4(%ecx)
407121:	89 41 08             	mov    %eax,0x8(%ecx)
407124:	66 c7 41 0c 00 00    	movw   $0x0,0xc(%ecx)
40712a:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40712d:	53                   	push   %ebx
40712e:	e8 fd 14 00 00       	call   0x408630
407133:	8b 4d 08             	mov    0x8(%ebp),%ecx
407136:	5f                   	pop    %edi
407137:	5e                   	pop    %esi
407138:	5b                   	pop    %ebx
407139:	89 01                	mov    %eax,(%ecx)
40713b:	8b c1                	mov    %ecx,%eax
40713d:	c6 41 04 01          	movb   $0x1,0x4(%ecx)
407141:	8b 4d f4             	mov    -0xc(%ebp),%ecx
407144:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
40714b:	8b e5                	mov    %ebp,%esp
40714d:	5d                   	pop    %ebp
40714e:	c2 08 00             	ret    $0x8
407151:	e8 ea 16 00 00       	call   0x408840
407156:	cc                   	int3
407157:	cc                   	int3
407158:	cc                   	int3
407159:	cc                   	int3
40715a:	cc                   	int3
40715b:	cc                   	int3
40715c:	cc                   	int3
40715d:	cc                   	int3
40715e:	cc                   	int3
40715f:	cc                   	int3
407160:	55                   	push   %ebp
407161:	8b ec                	mov    %esp,%ebp
407163:	6a ff                	push   $0xffffffff
407165:	68 90 00 43 00       	push   $0x430090
40716a:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
407170:	50                   	push   %eax
407171:	64 89 25 00 00 00 00 	mov    %esp,%fs:0x0
407178:	83 ec 20             	sub    $0x20,%esp
40717b:	8b 45 08             	mov    0x8(%ebp),%eax
40717e:	53                   	push   %ebx
40717f:	56                   	push   %esi
407180:	8b f1                	mov    %ecx,%esi
407182:	57                   	push   %edi
407183:	89 65 f0             	mov    %esp,-0x10(%ebp)
407186:	89 75 d8             	mov    %esi,-0x28(%ebp)
407189:	8b 16                	mov    (%esi),%edx
40718b:	2b c2                	sub    %edx,%eax
40718d:	c1 f8 05             	sar    $0x5,%eax
407190:	89 45 e8             	mov    %eax,-0x18(%ebp)
407193:	8b 46 04             	mov    0x4(%esi),%eax
407196:	2b c2                	sub    %edx,%eax
407198:	c1 f8 05             	sar    $0x5,%eax
40719b:	3d ff ff ff 07       	cmp    $0x7ffffff,%eax
4071a0:	0f 84 ef 00 00 00    	je     0x407295
4071a6:	8b 4e 08             	mov    0x8(%esi),%ecx
4071a9:	8d 58 01             	lea    0x1(%eax),%ebx
4071ac:	2b ca                	sub    %edx,%ecx
4071ae:	89 5d dc             	mov    %ebx,-0x24(%ebp)
4071b1:	c1 f9 05             	sar    $0x5,%ecx
4071b4:	b8 ff ff ff 07       	mov    $0x7ffffff,%eax
4071b9:	8b d1                	mov    %ecx,%edx
4071bb:	d1 ea                	shr    $1,%edx
4071bd:	2b c2                	sub    %edx,%eax
4071bf:	3b c8                	cmp    %eax,%ecx
4071c1:	76 07                	jbe    0x4071ca
4071c3:	bf ff ff ff 07       	mov    $0x7ffffff,%edi
4071c8:	eb 08                	jmp    0x4071d2
4071ca:	8d 3c 0a             	lea    (%edx,%ecx,1),%edi
4071cd:	3b fb                	cmp    %ebx,%edi
4071cf:	0f 42 fb             	cmovb  %ebx,%edi
4071d2:	8d 45 e4             	lea    -0x1c(%ebp),%eax
4071d5:	89 7d e0             	mov    %edi,-0x20(%ebp)
4071d8:	50                   	push   %eax
4071d9:	56                   	push   %esi
4071da:	89 7d e4             	mov    %edi,-0x1c(%ebp)
4071dd:	e8 ee fa ff ff       	call   0x406cd0
4071e2:	8b d8                	mov    %eax,%ebx
4071e4:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
4071eb:	8b 45 e8             	mov    -0x18(%ebp),%eax
4071ee:	83 c4 08             	add    $0x8,%esp
4071f1:	c1 e0 05             	shl    $0x5,%eax
4071f4:	03 c3                	add    %ebx,%eax
4071f6:	89 5d d4             	mov    %ebx,-0x2c(%ebp)
4071f9:	89 45 e8             	mov    %eax,-0x18(%ebp)
4071fc:	ff 75 0c             	push   0xc(%ebp)
4071ff:	8d 48 20             	lea    0x20(%eax),%ecx
407202:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
407205:	89 4d ec             	mov    %ecx,-0x14(%ebp)
407208:	8b c8                	mov    %eax,%ecx
40720a:	e8 31 07 00 00       	call   0x407940
40720f:	8b 45 e8             	mov    -0x18(%ebp),%eax
407212:	8b 56 04             	mov    0x4(%esi),%edx