407ddd:	8b 4f 04             	mov    0x4(%edi),%ecx
407de0:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
407de3:	50                   	push   %eax
407de4:	8b 07                	mov    (%edi),%eax
407de6:	ff 75 08             	push   0x8(%ebp)
407de9:	8d 04 48             	lea    (%eax,%ecx,2),%eax
407dec:	50                   	push   %eax
407ded:	e8 8e 92 01 00       	call   0x421080
407df2:	01 5f 04             	add    %ebx,0x4(%edi)
407df5:	83 c4 0c             	add    $0xc,%esp
407df8:	8b 07                	mov    (%edi),%eax
407dfa:	33 d2                	xor    %edx,%edx
407dfc:	8b 4f 04             	mov    0x4(%edi),%ecx
407dff:	66 89 14 48          	mov    %dx,(%eax,%ecx,2)
407e03:	8b c7                	mov    %edi,%eax
407e05:	5f                   	pop    %edi
407e06:	5b                   	pop    %ebx
407e07:	5d                   	pop    %ebp
407e08:	c2 08 00             	ret    $0x8
407e0b:	55                   	push   %ebp
407e0c:	8b ec                	mov    %esp,%ebp
407e0e:	57                   	push   %edi
407e0f:	8b f9                	mov    %ecx,%edi
407e11:	8b 4f 0c             	mov    0xc(%edi),%ecx
407e14:	8b 01                	mov    (%ecx),%eax
407e16:	83 f8 01             	cmp    $0x1,%eax
407e19:	0f 8f 54 73 03 00    	jg     0x43f173
407e1f:	51                   	push   %ecx
407e20:	ff 75 08             	push   0x8(%ebp)
407e23:	8b cf                	mov    %edi,%ecx
407e25:	e8 86 ff ff ff       	call   0x407db0
407e2a:	5f                   	pop    %edi
407e2b:	5d                   	pop    %ebp
407e2c:	c2 04 00             	ret    $0x4
407e2f:	55                   	push   %ebp
407e30:	8b ec                	mov    %esp,%ebp
407e32:	51                   	push   %ecx
407e33:	53                   	push   %ebx
407e34:	8b c1                	mov    %ecx,%eax
407e36:	56                   	push   %esi
407e37:	57                   	push   %edi
407e38:	33 f6                	xor    %esi,%esi
407e3a:	89 45 fc             	mov    %eax,-0x4(%ebp)
407e3d:	8b 78 04             	mov    0x4(%eax),%edi
407e40:	8d 57 ff             	lea    -0x1(%edi),%edx
407e43:	85 ff                	test   %edi,%edi
407e45:	74 35                	je     0x407e7c
407e47:	8b 5d 08             	mov    0x8(%ebp),%ebx
407e4a:	0f b7 03             	movzwl (%ebx),%eax
407e4d:	33 c9                	xor    %ecx,%ecx
407e4f:	66 85 c0             	test   %ax,%ax
407e52:	74 22                	je     0x407e76
407e54:	8b 45 fc             	mov    -0x4(%ebp),%eax
407e57:	8b 00                	mov    (%eax),%eax
407e59:	0f b7 04 50          	movzwl (%eax,%edx,2),%eax
407e5d:	89 45 08             	mov    %eax,0x8(%ebp)
407e60:	0f b7 03             	movzwl (%ebx),%eax
407e63:	66 39 45 08          	cmp    %ax,0x8(%ebp)
407e67:	74 18                	je     0x407e81
407e69:	41                   	inc    %ecx
407e6a:	0f b7 04 4b          	movzwl (%ebx,%ecx,2),%eax
407e6e:	66 85 c0             	test   %ax,%ax
407e71:	75 f0                	jne    0x407e63
407e73:	0f b7 03             	movzwl (%ebx),%eax
407e76:	4a                   	dec    %edx
407e77:	46                   	inc    %esi
407e78:	3b f7                	cmp    %edi,%esi
407e7a:	72 d1                	jb     0x407e4d
407e7c:	83 c8 ff             	or     $0xffffffff,%eax
407e7f:	eb 02                	jmp    0x407e83
407e81:	8b c2                	mov    %edx,%eax
407e83:	5f                   	pop    %edi
407e84:	5e                   	pop    %esi
407e85:	5b                   	pop    %ebx
407e86:	8b e5                	mov    %ebp,%esp
407e88:	5d                   	pop    %ebp
407e89:	c2 04 00             	ret    $0x4
407e8c:	55                   	push   %ebp
407e8d:	8b ec                	mov    %esp,%ebp
407e8f:	53                   	push   %ebx
407e90:	56                   	push   %esi
407e91:	8b 75 0c             	mov    0xc(%ebp),%esi
407e94:	8b d9                	mov    %ecx,%ebx
407e96:	85 f6                	test   %esi,%esi
407e98:	74 0a                	je     0x407ea4
407e9a:	57                   	push   %edi
407e9b:	8b 7d 08             	mov    0x8(%ebp),%edi
407e9e:	3b 7b 04             	cmp    0x4(%ebx),%edi
407ea1:	72 07                	jb     0x407eaa
407ea3:	5f                   	pop    %edi
407ea4:	5e                   	pop    %esi
407ea5:	5b                   	pop    %ebx
407ea6:	5d                   	pop    %ebp
407ea7:	c2 08 00             	ret    $0x8
407eaa:	83 fe ff             	cmp    $0xffffffff,%esi
407ead:	75 33                	jne    0x407ee2
407eaf:	8b 73 04             	mov    0x4(%ebx),%esi
407eb2:	2b f7                	sub    %edi,%esi
407eb4:	e8 f6 00 00 00       	call   0x407faf
407eb9:	8b 43 04             	mov    0x4(%ebx),%eax
407ebc:	8b 0b                	mov    (%ebx),%ecx
407ebe:	2b c7                	sub    %edi,%eax
407ec0:	2b c6                	sub    %esi,%eax
407ec2:	8d 04 45 02 00 00 00 	lea    0x2(,%eax,2),%eax
407ec9:	50                   	push   %eax
407eca:	8d 04 37             	lea    (%edi,%esi,1),%eax
407ecd:	8d 04 41             	lea    (%ecx,%eax,2),%eax
407ed0:	50                   	push   %eax
407ed1:	8d 04 79             	lea    (%ecx,%edi,2),%eax
407ed4:	50                   	push   %eax
407ed5:	e8 a6 91 01 00       	call   0x421080
407eda:	83 c4 0c             	add    $0xc,%esp
407edd:	29 73 04             	sub    %esi,0x4(%ebx)
407ee0:	eb c1                	jmp    0x407ea3
407ee2:	8d 04 37             	lea    (%edi,%esi,1),%eax
407ee5:	3b 43 04             	cmp    0x4(%ebx),%eax
407ee8:	76 ca                	jbe    0x407eb4
407eea:	eb c3                	jmp    0x407eaf
407eec:	56                   	push   %esi
407eed:	8b f1                	mov    %ecx,%esi
407eef:	8b 4e 0c             	mov    0xc(%esi),%ecx
407ef2:	8b 01                	mov    (%ecx),%eax
407ef4:	83 f8 01             	cmp    $0x1,%eax
407ef7:	7f 0d                	jg     0x407f06
407ef9:	8b 06                	mov    (%esi),%eax
407efb:	33 c9                	xor    %ecx,%ecx
407efd:	83 66 04 00          	andl   $0x0,0x4(%esi)
407f01:	5e                   	pop    %esi
407f02:	66 89 08             	mov    %cx,(%eax)
407f05:	c3                   	ret
407f06:	48                   	dec    %eax
407f07:	6a 04                	push   $0x4
407f09:	89 01                	mov    %eax,(%ecx)
407f0b:	e8 e6 90 01 00       	call   0x420ff6
407f10:	59                   	pop    %ecx
407f11:	85 c0                	test   %eax,%eax
407f13:	74 28                	je     0x407f3d
407f15:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
407f1b:	6a 08                	push   $0x8
407f1d:	89 46 0c             	mov    %eax,0xc(%esi)
407f20:	33 c9                	xor    %ecx,%ecx
407f22:	58                   	pop    %eax
407f23:	6a 02                	push   $0x2
407f25:	5a                   	pop    %edx
407f26:	89 46 08             	mov    %eax,0x8(%esi)
407f29:	f7 e2                	mul    %edx
407f2b:	0f 90 c1             	seto   %cl
407f2e:	f7 d9                	neg    %ecx
407f30:	0b c8                	or     %eax,%ecx
407f32:	51                   	push   %ecx
407f33:	e8 6d 90 01 00       	call   0x420fa5
407f38:	59                   	pop    %ecx
407f39:	89 06                	mov    %eax,(%esi)
407f3b:	eb bc                	jmp    0x407ef9
407f3d:	33 c0                	xor    %eax,%eax
407f3f:	eb da                	jmp    0x407f1b
407f41:	55                   	push   %ebp
407f42:	8b ec                	mov    %esp,%ebp
407f44:	56                   	push   %esi
407f45:	57                   	push   %edi
407f46:	ff 75 08             	push   0x8(%ebp)
407f49:	8b f1                	mov    %ecx,%esi
407f4b:	e8 ec ae 01 00       	call   0x422e3c
407f50:	59                   	pop    %ecx
407f51:	89 46 04             	mov    %eax,0x4(%esi)
407f54:	8d 78 01             	lea    0x1(%eax),%edi
407f57:	85 ff                	test   %edi,%edi
407f59:	74 4b                	je     0x407fa6
407f5b:	8d 47 07             	lea    0x7(%edi),%eax
407f5e:	83 e0 f8             	and    $0xfffffff8,%eax
407f61:	33 c9                	xor    %ecx,%ecx
407f63:	89 46 08             	mov    %eax,0x8(%esi)
407f66:	6a 02                	push   $0x2
407f68:	5a                   	pop    %edx
407f69:	f7 e2                	mul    %edx
407f6b:	0f 90 c1             	seto   %cl
407f6e:	f7 d9                	neg    %ecx
407f70:	0b c8                	or     %eax,%ecx
407f72:	51                   	push   %ecx
407f73:	e8 2d 90 01 00       	call   0x420fa5
407f78:	8d 0c 3f             	lea    (%edi,%edi,1),%ecx
407f7b:	89 06                	mov    %eax,(%esi)
407f7d:	51                   	push   %ecx
407f7e:	ff 75 08             	push   0x8(%ebp)
407f81:	50                   	push   %eax
407f82:	e8 f9 90 01 00       	call   0x421080
407f87:	6a 04                	push   $0x4
407f89:	e8 68 90 01 00       	call   0x420ff6
407f8e:	83 c4 14             	add    $0x14,%esp
407f91:	85 c0                	test   %eax,%eax
407f93:	74 16                	je     0x407fab
407f95:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
407f9b:	89 46 0c             	mov    %eax,0xc(%esi)
407f9e:	8b c6                	mov    %esi,%eax
407fa0:	5f                   	pop    %edi
407fa1:	5e                   	pop    %esi
407fa2:	5d                   	pop    %ebp
407fa3:	c2 04 00             	ret    $0x4
407fa6:	6a 08                	push   $0x8
407fa8:	58                   	pop    %eax
407fa9:	eb b6                	jmp    0x407f61
407fab:	33 c0                	xor    %eax,%eax
407fad:	eb ec                	jmp    0x407f9b
407faf:	56                   	push   %esi
407fb0:	57                   	push   %edi
407fb1:	8b f9                	mov    %ecx,%edi
407fb3:	33 f6                	xor    %esi,%esi
407fb5:	46                   	inc    %esi
407fb6:	8b 4f 0c             	mov    0xc(%edi),%ecx
407fb9:	8b 01                	mov    (%ecx),%eax
407fbb:	3b c6                	cmp    %esi,%eax
407fbd:	7f 03                	jg     0x407fc2
407fbf:	5f                   	pop    %edi
407fc0:	5e                   	pop    %esi
407fc1:	c3                   	ret
407fc2:	48                   	dec    %eax
407fc3:	6a 04                	push   $0x4
407fc5:	89 01                	mov    %eax,(%ecx)
407fc7:	e8 2a 90 01 00       	call   0x420ff6
407fcc:	59                   	pop    %ecx
407fcd:	85 c0                	test   %eax,%eax
407fcf:	74 3f                	je     0x408010
407fd1:	89 30                	mov    %esi,(%eax)
407fd3:	53                   	push   %ebx
407fd4:	8b 5f 04             	mov    0x4(%edi),%ebx
407fd7:	89 47 0c             	mov    %eax,0xc(%edi)
407fda:	43                   	inc    %ebx
407fdb:	74 37                	je     0x408014
407fdd:	8d 43 07             	lea    0x7(%ebx),%eax
407fe0:	83 e0 f8             	and    $0xfffffff8,%eax
407fe3:	33 c9                	xor    %ecx,%ecx
407fe5:	89 47 08             	mov    %eax,0x8(%edi)
407fe8:	6a 02                	push   $0x2
407fea:	5a                   	pop    %edx
407feb:	f7 e2                	mul    %edx
407fed:	0f 90 c1             	seto   %cl
407ff0:	f7 d9                	neg    %ecx
407ff2:	0b c8                	or     %eax,%ecx
407ff4:	51                   	push   %ecx
407ff5:	e8 ab 8f 01 00       	call   0x420fa5
407ffa:	8d 0c 1b             	lea    (%ebx,%ebx,1),%ecx
407ffd:	8b f0                	mov    %eax,%esi
407fff:	51                   	push   %ecx
408000:	ff 37                	push   (%edi)
408002:	56                   	push   %esi
408003:	e8 78 90 01 00       	call   0x421080
408008:	83 c4 10             	add    $0x10,%esp
40800b:	89 37                	mov    %esi,(%edi)
40800d:	5b                   	pop    %ebx
40800e:	eb af                	jmp    0x407fbf
408010:	33 c0                	xor    %eax,%eax
408012:	eb bf                	jmp    0x407fd3
408014:	6a 08                	push   $0x8
408016:	58                   	pop    %eax
408017:	eb ca                	jmp    0x407fe3
408019:	55                   	push   %ebp
40801a:	8b ec                	mov    %esp,%ebp
40801c:	8b c1                	mov    %ecx,%eax
40801e:	8b 4d 08             	mov    0x8(%ebp),%ecx
408021:	56                   	push   %esi
408022:	8b 70 04             	mov    0x4(%eax),%esi
408025:	8b 51 04             	mov    0x4(%ecx),%edx
408028:	85 f6                	test   %esi,%esi
40802a:	74 49                	je     0x408075
40802c:	85 d2                	test   %edx,%edx
40802e:	74 4e                	je     0x40807e
408030:	8b 09                	mov    (%ecx),%ecx
408032:	3b f2                	cmp    %edx,%esi
408034:	73 26                	jae    0x40805c
408036:	8b 30                	mov    (%eax),%esi
408038:	85 d2                	test   %edx,%edx
40803a:	74 11                	je     0x40804d
40803c:	66 8b 06             	mov    (%esi),%ax
40803f:	66 3b 01             	cmp    (%ecx),%ax
408042:	75 0d                	jne    0x408051
408044:	83 c6 02             	add    $0x2,%esi
408047:	83 c1 02             	add    $0x2,%ecx
40804a:	4a                   	dec    %edx
40804b:	75 ef                	jne    0x40803c
40804d:	33 c0                	xor    %eax,%eax
40804f:	eb 06                	jmp    0x408057
408051:	1b c0                	sbb    %eax,%eax
408053:	83 e0 fe             	and    $0xfffffffe,%eax
408056:	40                   	inc    %eax
408057:	5e                   	pop    %esi
408058:	5d                   	pop    %ebp
408059:	c2 04 00             	ret    $0x4
40805c:	8b 10                	mov    (%eax),%edx
40805e:	85 f6                	test   %esi,%esi
408060:	74 eb                	je     0x40804d
408062:	66 8b 02             	mov    (%edx),%ax
408065:	66 3b 01             	cmp    (%ecx),%ax
408068:	75 e7                	jne    0x408051
40806a:	83 c2 02             	add    $0x2,%edx
40806d:	83 c1 02             	add    $0x2,%ecx
408070:	4e                   	dec    %esi
408071:	75 ef                	jne    0x408062
408073:	eb d8                	jmp    0x40804d
408075:	85 d2                	test   %edx,%edx
408077:	74 05                	je     0x40807e
408079:	83 c8 ff             	or     $0xffffffff,%eax
40807c:	eb d9                	jmp    0x408057
40807e:	85 f6                	test   %esi,%esi
408080:	74 ae                	je     0x408030
408082:	33 c0                	xor    %eax,%eax
408084:	40                   	inc    %eax
408085:	eb d0                	jmp    0x408057
408087:	55                   	push   %ebp
408088:	8b ec                	mov    %esp,%ebp
40808a:	56                   	push   %esi
40808b:	57                   	push   %edi
40808c:	8b 7d 08             	mov    0x8(%ebp),%edi
40808f:	8b f1                	mov    %ecx,%esi
408091:	8d 47 01             	lea    0x1(%edi),%eax
408094:	39 46 08             	cmp    %eax,0x8(%esi)
408097:	72 06                	jb     0x40809f
408099:	5f                   	pop    %edi
40809a:	5e                   	pop    %esi
40809b:	5d                   	pop    %ebp
40809c:	c2 04 00             	ret    $0x4
40809f:	50                   	push   %eax
4080a0:	e8 cb 00 00 00       	call   0x408170
4080a5:	83 3e 00             	cmpl   $0x0,(%esi)
4080a8:	89 46 08             	mov    %eax,0x8(%esi)
4080ab:	74 08                	je     0x4080b5
4080ad:	ff 36                	push   (%esi)
4080af:	e8 b8 8f 01 00       	call   0x42106c
4080b4:	59                   	pop    %ecx
4080b5:	8b 46 08             	mov    0x8(%esi),%eax
4080b8:	33 c9                	xor    %ecx,%ecx
4080ba:	6a 02                	push   $0x2
4080bc:	5a                   	pop    %edx
4080bd:	f7 e2                	mul    %edx
4080bf:	0f 90 c1             	seto   %cl
4080c2:	f7 d9                	neg    %ecx
4080c4:	0b c8                	or     %eax,%ecx
4080c6:	51                   	push   %ecx
4080c7:	e8 2a 8f 01 00       	call   0x420ff6
4080cc:	59                   	pop    %ecx
4080cd:	33 c9                	xor    %ecx,%ecx
4080cf:	89 06                	mov    %eax,(%esi)
4080d1:	66 89 0c 78          	mov    %cx,(%eax,%edi,2)
4080d5:	eb c2                	jmp    0x408099
4080d7:	55                   	push   %ebp
4080d8:	8b ec                	mov    %esp,%ebp
4080da:	56                   	push   %esi
4080db:	8b f1                	mov    %ecx,%esi
4080dd:	8b 4e 0c             	mov    0xc(%esi),%ecx
4080e0:	8b 01                	mov    (%ecx),%eax
4080e2:	83 f8 01             	cmp    $0x1,%eax