401e4f:	75 2a                	jne    0x401e7b
401e51:	ff 36                	push   (%esi)
401e53:	ff 15 0c 70 40 00    	call   *0x40700c
401e59:	ff 76 04             	push   0x4(%esi)
401e5c:	ff 15 0c 70 40 00    	call   *0x40700c
401e62:	56                   	push   %esi
401e63:	e8 d1 2d 00 00       	call   0x404c39
401e68:	8b 47 08             	mov    0x8(%edi),%eax
401e6b:	bb 0e 00 07 80       	mov    $0x8007000e,%ebx
401e70:	99                   	cltd
401e71:	2b c2                	sub    %edx,%eax
401e73:	d1 f8                	sar    $1,%eax
401e75:	59                   	pop    %ecx
401e76:	89 47 08             	mov    %eax,0x8(%edi)
401e79:	eb 0d                	jmp    0x401e88
401e7b:	89 07                	mov    %eax,(%edi)
401e7d:	8b 47 04             	mov    0x4(%edi),%eax
401e80:	8b 0f                	mov    (%edi),%ecx
401e82:	89 34 81             	mov    %esi,(%ecx,%eax,4)
401e85:	ff 47 04             	incl   0x4(%edi)
401e88:	8b c3                	mov    %ebx,%eax
401e8a:	eb 1d                	jmp    0x401ea9
401e8c:	ff 36                	push   (%esi)
401e8e:	ff 15 0c 70 40 00    	call   *0x40700c
401e94:	ff 76 04             	push   0x4(%esi)
401e97:	ff 15 0c 70 40 00    	call   *0x40700c
401e9d:	56                   	push   %esi
401e9e:	e8 96 2d 00 00       	call   0x404c39
401ea3:	59                   	pop    %ecx
401ea4:	b8 0e 00 07 80       	mov    $0x8007000e,%eax
401ea9:	5f                   	pop    %edi
401eaa:	5e                   	pop    %esi
401eab:	5b                   	pop    %ebx
401eac:	c9                   	leave
401ead:	c2 08 00             	ret    $0x8
401eb0:	8b ff                	mov    %edi,%edi
401eb2:	55                   	push   %ebp
401eb3:	8b ec                	mov    %esp,%ebp
401eb5:	56                   	push   %esi
401eb6:	8b f1                	mov    %ecx,%esi
401eb8:	8b 16                	mov    (%esi),%edx
401eba:	8b 4e 04             	mov    0x4(%esi),%ecx
401ebd:	8d 42 01             	lea    0x1(%edx),%eax
401ec0:	3b c1                	cmp    %ecx,%eax
401ec2:	7e 1b                	jle    0x401edf
401ec4:	8b c1                	mov    %ecx,%eax
401ec6:	c1 e0 02             	shl    $0x2,%eax
401ec9:	50                   	push   %eax
401eca:	ff 76 08             	push   0x8(%esi)
401ecd:	ff 15 28 70 40 00    	call   *0x407028
401ed3:	85 c0                	test   %eax,%eax
401ed5:	74 1a                	je     0x401ef1
401ed7:	d1 66 04             	shll   $1,0x4(%esi)
401eda:	8b 16                	mov    (%esi),%edx
401edc:	89 46 08             	mov    %eax,0x8(%esi)
401edf:	8b 45 08             	mov    0x8(%ebp),%eax
401ee2:	8b 4e 08             	mov    0x8(%esi),%ecx
401ee5:	66 8b 00             	mov    (%eax),%ax
401ee8:	66 89 04 51          	mov    %ax,(%ecx,%edx,2)
401eec:	33 c0                	xor    %eax,%eax
401eee:	ff 06                	incl   (%esi)
401ef0:	40                   	inc    %eax
401ef1:	5e                   	pop    %esi
401ef2:	5d                   	pop    %ebp
401ef3:	c2 04 00             	ret    $0x4
401ef6:	8b ff                	mov    %edi,%edi
401ef8:	55                   	push   %ebp
401ef9:	8b ec                	mov    %esp,%ebp
401efb:	83 ec 1c             	sub    $0x1c,%esp
401efe:	a1 54 60 40 00       	mov    0x406054,%eax
401f03:	33 c5                	xor    %ebp,%eax
401f05:	89 45 fc             	mov    %eax,-0x4(%ebp)
401f08:	53                   	push   %ebx
401f09:	56                   	push   %esi
401f0a:	57                   	push   %edi
401f0b:	33 db                	xor    %ebx,%ebx
401f0d:	89 4d e8             	mov    %ecx,-0x18(%ebp)
401f10:	6a 02                	push   $0x2
401f12:	53                   	push   %ebx
401f13:	ff 75 08             	push   0x8(%ebp)
401f16:	8b f3                	mov    %ebx,%esi
401f18:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
401f1b:	89 75 ec             	mov    %esi,-0x14(%ebp)
401f1e:	ff 15 80 70 40 00    	call   *0x407080
401f24:	89 45 f0             	mov    %eax,-0x10(%ebp)
401f27:	85 c0                	test   %eax,%eax
401f29:	75 1e                	jne    0x401f49
401f2b:	ff 15 40 70 40 00    	call   *0x407040
401f31:	8b f0                	mov    %eax,%esi
401f33:	85 f6                	test   %esi,%esi
401f35:	0f 8e 5d 01 00 00    	jle    0x402098
401f3b:	0f b7 f6             	movzwl %si,%esi
401f3e:	81 ce 00 00 07 80    	or     $0x80070000,%esi
401f44:	e9 4f 01 00 00       	jmp    0x402098
401f49:	53                   	push   %ebx
401f4a:	6a 64                	push   $0x64
401f4c:	ff 75 10             	push   0x10(%ebp)
401f4f:	50                   	push   %eax
401f50:	ff 15 88 70 40 00    	call   *0x407088
401f56:	8b f8                	mov    %eax,%edi
401f58:	85 ff                	test   %edi,%edi
401f5a:	75 1e                	jne    0x401f7a
401f5c:	ff 15 40 70 40 00    	call   *0x407040
401f62:	8b f0                	mov    %eax,%esi
401f64:	85 f6                	test   %esi,%esi
401f66:	0f 8e 23 01 00 00    	jle    0x40208f
401f6c:	0f b7 f6             	movzwl %si,%esi
401f6f:	81 ce 00 00 07 80    	or     $0x80070000,%esi
401f75:	e9 15 01 00 00       	jmp    0x40208f
401f7a:	57                   	push   %edi
401f7b:	ff 75 f0             	push   -0x10(%ebp)
401f7e:	ff 15 84 70 40 00    	call   *0x407084
401f84:	89 45 f4             	mov    %eax,-0xc(%ebp)
401f87:	85 c0                	test   %eax,%eax
401f89:	74 d1                	je     0x401f5c
401f8b:	57                   	push   %edi
401f8c:	ff 75 f0             	push   -0x10(%ebp)
401f8f:	ff 15 7c 70 40 00    	call   *0x40707c
401f95:	8b c8                	mov    %eax,%ecx
401f97:	8b 45 f4             	mov    -0xc(%ebp),%eax
401f9a:	89 4d f8             	mov    %ecx,-0x8(%ebp)
401f9d:	8b f8                	mov    %eax,%edi
401f9f:	38 1c 01             	cmp    %bl,(%ecx,%eax,1)
401fa2:	74 67                	je     0x40200b
401fa4:	8d 79 01             	lea    0x1(%ecx),%edi
401fa7:	81 ff 00 04 00 00    	cmp    $0x400,%edi
401fad:	77 16                	ja     0x401fc5
401faf:	8b cf                	mov    %edi,%ecx
401fb1:	e8 b5 fa ff ff       	call   0x401a6b
401fb6:	84 c0                	test   %al,%al
401fb8:	74 0b                	je     0x401fc5
401fba:	8b c7                	mov    %edi,%eax
401fbc:	e8 9f 36 00 00       	call   0x405660
401fc1:	8b fc                	mov    %esp,%edi
401fc3:	eb 21                	jmp    0x401fe6
401fc5:	8d 47 08             	lea    0x8(%edi),%eax
401fc8:	3b c7                	cmp    %edi,%eax
401fca:	73 04                	jae    0x401fd0
401fcc:	8b fb                	mov    %ebx,%edi
401fce:	eb 16                	jmp    0x401fe6
401fd0:	50                   	push   %eax
401fd1:	ff 15 84 71 40 00    	call   *0x407184
401fd7:	59                   	pop    %ecx
401fd8:	85 c0                	test   %eax,%eax
401fda:	74 f0                	je     0x401fcc
401fdc:	8b f0                	mov    %eax,%esi
401fde:	89 18                	mov    %ebx,(%eax)
401fe0:	89 75 ec             	mov    %esi,-0x14(%ebp)
401fe3:	8d 78 08             	lea    0x8(%eax),%edi
401fe6:	85 ff                	test   %edi,%edi
401fe8:	75 0a                	jne    0x401ff4
401fea:	be 0e 00 07 80       	mov    $0x8007000e,%esi
401fef:	e9 9b 00 00 00       	jmp    0x40208f
401ff4:	8b 45 f8             	mov    -0x8(%ebp),%eax
401ff7:	40                   	inc    %eax
401ff8:	50                   	push   %eax
401ff9:	ff 75 f4             	push   -0xc(%ebp)
401ffc:	57                   	push   %edi
401ffd:	e8 8a 36 00 00       	call   0x40568c
402002:	8b 45 f8             	mov    -0x8(%ebp),%eax
402005:	83 c4 0c             	add    $0xc,%esp
402008:	88 1c 07             	mov    %bl,(%edi,%eax,1)
40200b:	85 ff                	test   %edi,%edi
40200d:	74 72                	je     0x402081
40200f:	8b cf                	mov    %edi,%ecx
402011:	8d 51 01             	lea    0x1(%ecx),%edx
402014:	8a 01                	mov    (%ecx),%al
402016:	41                   	inc    %ecx
402017:	84 c0                	test   %al,%al
402019:	75 f9                	jne    0x402014
40201b:	2b ca                	sub    %edx,%ecx
40201d:	8d 41 01             	lea    0x1(%ecx),%eax
402020:	89 45 f4             	mov    %eax,-0xc(%ebp)
402023:	03 c0                	add    %eax,%eax
402025:	89 45 f8             	mov    %eax,-0x8(%ebp)
402028:	3d 00 04 00 00       	cmp    $0x400,%eax
40202d:	77 17                	ja     0x402046
40202f:	8b c8                	mov    %eax,%ecx
402031:	e8 35 fa ff ff       	call   0x401a6b
402036:	84 c0                	test   %al,%al
402038:	8b 45 f8             	mov    -0x8(%ebp),%eax
40203b:	74 09                	je     0x402046
40203d:	e8 1e 36 00 00       	call   0x405660
402042:	8b f4                	mov    %esp,%esi
402044:	eb 1b                	jmp    0x402061
402046:	8d 48 08             	lea    0x8(%eax),%ecx
402049:	3b c8                	cmp    %eax,%ecx
40204b:	72 34                	jb     0x402081
40204d:	51                   	push   %ecx
40204e:	ff 15 84 71 40 00    	call   *0x407184
402054:	59                   	pop    %ecx
402055:	85 c0                	test   %eax,%eax
402057:	74 28                	je     0x402081
402059:	89 30                	mov    %esi,(%eax)
40205b:	8d 70 08             	lea    0x8(%eax),%esi
40205e:	89 45 ec             	mov    %eax,-0x14(%ebp)
402061:	85 f6                	test   %esi,%esi
402063:	74 1c                	je     0x402081
402065:	ff 75 f4             	push   -0xc(%ebp)
402068:	33 c0                	xor    %eax,%eax
40206a:	56                   	push   %esi
40206b:	6a ff                	push   $0xffffffff
40206d:	57                   	push   %edi
40206e:	53                   	push   %ebx
40206f:	53                   	push   %ebx
402070:	66 89 06             	mov    %ax,(%esi)
402073:	ff 15 08 71 40 00    	call   *0x407108
402079:	8b d8                	mov    %eax,%ebx
40207b:	f7 db                	neg    %ebx
40207d:	1b db                	sbb    %ebx,%ebx
40207f:	23 de                	and    %esi,%ebx
402081:	ff 75 14             	push   0x14(%ebp)
402084:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
402087:	53                   	push   %ebx
402088:	e8 bb 09 00 00       	call   0x402a48
40208d:	8b f0                	mov    %eax,%esi
40208f:	ff 75 f0             	push   -0x10(%ebp)
402092:	ff 15 78 70 40 00    	call   *0x407078
402098:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40209b:	e8 f6 26 00 00       	call   0x404796
4020a0:	8b c6                	mov    %esi,%eax
4020a2:	8d 65 d8             	lea    -0x28(%ebp),%esp
4020a5:	5f                   	pop    %edi
4020a6:	5e                   	pop    %esi
4020a7:	5b                   	pop    %ebx
4020a8:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4020ab:	33 cd                	xor    %ebp,%ecx
4020ad:	e8 ee 2e 00 00       	call   0x404fa0
4020b2:	c9                   	leave
4020b3:	c2 10 00             	ret    $0x10
4020b6:	8b ff                	mov    %edi,%edi
4020b8:	55                   	push   %ebp
4020b9:	8b ec                	mov    %esp,%ebp
4020bb:	51                   	push   %ecx
4020bc:	51                   	push   %ecx
4020bd:	53                   	push   %ebx
4020be:	56                   	push   %esi
4020bf:	57                   	push   %edi
4020c0:	8b f9                	mov    %ecx,%edi
4020c2:	8d 47 0c             	lea    0xc(%edi),%eax
4020c5:	50                   	push   %eax
4020c6:	89 45 f8             	mov    %eax,-0x8(%ebp)
4020c9:	ff 15 38 71 40 00    	call   *0x407138
4020cf:	33 f6                	xor    %esi,%esi
4020d1:	8b de                	mov    %esi,%ebx
4020d3:	89 75 fc             	mov    %esi,-0x4(%ebp)
4020d6:	39 77 04             	cmp    %esi,0x4(%edi)
4020d9:	7e 24                	jle    0x4020ff
4020db:	8b 07                	mov    (%edi),%eax
4020dd:	ff 75 08             	push   0x8(%ebp)
4020e0:	8b 04 98             	mov    (%eax,%ebx,4),%eax
4020e3:	ff 30                	push   (%eax)
4020e5:	ff 15 1c 71 40 00    	call   *0x40711c
4020eb:	85 c0                	test   %eax,%eax
4020ed:	74 08                	je     0x4020f7
4020ef:	43                   	inc    %ebx
4020f0:	3b 5f 04             	cmp    0x4(%edi),%ebx
4020f3:	7c e6                	jl     0x4020db
4020f5:	eb 08                	jmp    0x4020ff
4020f7:	8b 07                	mov    (%edi),%eax
4020f9:	8b 04 98             	mov    (%eax,%ebx,4),%eax
4020fc:	8b 70 04             	mov    0x4(%eax),%esi
4020ff:	8d 4d fc             	lea    -0x4(%ebp),%ecx
402102:	e8 8f 26 00 00       	call   0x404796
402107:	ff 75 f8             	push   -0x8(%ebp)
40210a:	ff 15 2c 71 40 00    	call   *0x40712c
402110:	5f                   	pop    %edi
402111:	8b c6                	mov    %esi,%eax
402113:	5e                   	pop    %esi
402114:	5b                   	pop    %ebx
402115:	c9                   	leave
402116:	c2 04 00             	ret    $0x4
402119:	8b ff                	mov    %edi,%edi
40211b:	56                   	push   %esi
40211c:	33 f6                	xor    %esi,%esi
40211e:	57                   	push   %edi
40211f:	66 8b fa             	mov    %dx,%di
402122:	85 c9                	test   %ecx,%ecx
402124:	75 04                	jne    0x40212a
402126:	33 c0                	xor    %eax,%eax
402128:	eb 28                	jmp    0x402152
40212a:	0f b7 01             	movzwl (%ecx),%eax
40212d:	66 85 c0             	test   %ax,%ax
402130:	74 1e                	je     0x402150
402132:	8b d0                	mov    %eax,%edx
402134:	66 3b d7             	cmp    %di,%dx
402137:	74 15                	je     0x40214e
402139:	51                   	push   %ecx
40213a:	ff 15 14 71 40 00    	call   *0x407114
402140:	8b c8                	mov    %eax,%ecx
402142:	0f b7 01             	movzwl (%ecx),%eax
402145:	8b d0                	mov    %eax,%edx
402147:	66 85 c0             	test   %ax,%ax
40214a:	75 e8                	jne    0x402134
40214c:	eb 02                	jmp    0x402150
40214e:	8b f1                	mov    %ecx,%esi
402150:	8b c6                	mov    %esi,%eax
402152:	5f                   	pop    %edi
402153:	5e                   	pop    %esi
402154:	c3                   	ret
402155:	8b ff                	mov    %edi,%edi
402157:	55                   	push   %ebp
402158:	8b ec                	mov    %esp,%ebp
40215a:	51                   	push   %ecx
40215b:	51                   	push   %ecx
40215c:	33 c0                	xor    %eax,%eax
40215e:	89 55 f8             	mov    %edx,-0x8(%ebp)
402161:	57                   	push   %edi
402162:	8b f9                	mov    %ecx,%edi
402164:	66 39 02             	cmp    %ax,(%edx)
402167:	75 07                	jne    0x402170
402169:	8b c7                	mov    %edi,%eax
40216b:	e9 86 00 00 00       	jmp    0x4021f6
402170:	0f b7 07             	movzwl (%edi),%eax
402173:	53                   	push   %ebx
402174:	56                   	push   %esi
402175:	66 85 c0             	test   %ax,%ax
402178:	74 78                	je     0x4021f2
40217a:	8b f7                	mov    %edi,%esi
40217c:	8b da                	mov    %edx,%ebx
40217e:	66 85 c0             	test   %ax,%ax
402181:	74 52                	je     0x4021d5
402183:	0f b7 03             	movzwl (%ebx),%eax
402186:	66 85 c0             	test   %ax,%ax
402189:	74 6e                	je     0x4021f9
40218b:	0f b7 0e             	movzwl (%esi),%ecx
40218e:	2b c8                	sub    %eax,%ecx
402190:	75 43                	jne    0x4021d5
402192:	56                   	push   %esi
402193:	ff 15 14 71 40 00    	call   *0x407114
402199:	53                   	push   %ebx
40219a:	89 45 fc             	mov    %eax,-0x4(%ebp)
40219d:	ff 15 14 71 40 00    	call   *0x407114
4021a3:	8b 55 fc             	mov    -0x4(%ebp),%edx
4021a6:	8b c8                	mov    %eax,%ecx
4021a8:	8b c2                	mov    %edx,%eax
4021aa:	2b cb                	sub    %ebx,%ecx
4021ac:	2b c6                	sub    %esi,%eax
4021ae:	33 c8                	xor    %eax,%ecx
4021b0:	f7 c1 fe ff ff ff    	test   $0xfffffffe,%ecx
4021b6:	75 1d                	jne    0x4021d5
4021b8:	eb 10                	jmp    0x4021ca
4021ba:	83 c6 02             	add    $0x2,%esi
4021bd:	83 c3 02             	add    $0x2,%ebx
4021c0:	0f b7 03             	movzwl (%ebx),%eax
4021c3:	0f b7 0e             	movzwl (%esi),%ecx
4021c6:	2b c8                	sub    %eax,%ecx
4021c8:	74 04                	je     0x4021ce
4021ca:	3b f2                	cmp    %edx,%esi
4021cc:	72 ec                	jb     0x4021ba