437eb8:	89 7d ac             	mov    %edi,-0x54(%ebp)
437ebb:	bf ff 7f 00 00       	mov    $0x7fff,%edi
437ec0:	23 c7                	and    %edi,%eax
437ec2:	23 cf                	and    %edi,%ecx
437ec4:	89 45 8c             	mov    %eax,-0x74(%ebp)
437ec7:	03 c1                	add    %ecx,%eax
437ec9:	0f b7 f8             	movzwl %ax,%edi
437ecc:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
437ed1:	89 5d 84             	mov    %ebx,-0x7c(%ebp)
437ed4:	89 5d f0             	mov    %ebx,-0x10(%ebp)
437ed7:	89 5d f4             	mov    %ebx,-0xc(%ebp)
437eda:	89 5d f8             	mov    %ebx,-0x8(%ebp)
437edd:	89 7d b4             	mov    %edi,-0x4c(%ebp)
437ee0:	66 3b c8             	cmp    %ax,%cx
437ee3:	0f 83 40 02 00 00    	jae    0x438129
437ee9:	8b 45 8c             	mov    -0x74(%ebp),%eax
437eec:	66 3b 45 98          	cmp    -0x68(%ebp),%ax
437ef0:	0f 83 33 02 00 00    	jae    0x438129
437ef6:	66 3b 7d 94          	cmp    -0x6c(%ebp),%di
437efa:	0f 87 29 02 00 00    	ja     0x438129
437f00:	66 3b 7d a8          	cmp    -0x58(%ebp),%di
437f04:	77 08                	ja     0x437f0e
437f06:	89 5d e8             	mov    %ebx,-0x18(%ebp)
437f09:	e9 32 02 00 00       	jmp    0x438140
437f0e:	66 85 c9             	test   %cx,%cx
437f11:	75 20                	jne    0x437f33
437f13:	47                   	inc    %edi
437f14:	f7 45 e8 ff ff ff 7f 	testl  $0x7fffffff,-0x18(%ebp)
437f1b:	89 7d b4             	mov    %edi,-0x4c(%ebp)
437f1e:	75 13                	jne    0x437f33
437f20:	85 d2                	test   %edx,%edx
437f22:	75 0f                	jne    0x437f33
437f24:	85 f6                	test   %esi,%esi
437f26:	75 0b                	jne    0x437f33
437f28:	33 c0                	xor    %eax,%eax
437f2a:	66 89 45 ea          	mov    %ax,-0x16(%ebp)
437f2e:	e9 11 02 00 00       	jmp    0x438144
437f33:	66 85 c0             	test   %ax,%ax
437f36:	75 19                	jne    0x437f51
437f38:	47                   	inc    %edi
437f39:	f7 45 d8 ff ff ff 7f 	testl  $0x7fffffff,-0x28(%ebp)
437f40:	89 7d b4             	mov    %edi,-0x4c(%ebp)
437f43:	75 0c                	jne    0x437f51
437f45:	83 7d d4 00          	cmpl   $0x0,-0x2c(%ebp)
437f49:	75 06                	jne    0x437f51
437f4b:	83 7d d0 00          	cmpl   $0x0,-0x30(%ebp)
437f4f:	74 b5                	je     0x437f06
437f51:	8b d3                	mov    %ebx,%edx
437f53:	6a 05                	push   $0x5
437f55:	89 55 b0             	mov    %edx,-0x50(%ebp)
437f58:	8d 4d f4             	lea    -0xc(%ebp),%ecx
437f5b:	58                   	pop    %eax
437f5c:	8b f0                	mov    %eax,%esi
437f5e:	85 c0                	test   %eax,%eax
437f60:	7e 58                	jle    0x437fba
437f62:	8d 7d e0             	lea    -0x20(%ebp),%edi
437f65:	8d 45 d8             	lea    -0x28(%ebp),%eax
437f68:	8d 3c 57             	lea    (%edi,%edx,2),%edi
437f6b:	89 45 94             	mov    %eax,-0x6c(%ebp)
437f6e:	89 7d a8             	mov    %edi,-0x58(%ebp)
437f71:	0f b7 10             	movzwl (%eax),%edx
437f74:	0f b7 07             	movzwl (%edi),%eax
437f77:	0f af d0             	imul   %eax,%edx
437f7a:	8b 41 fc             	mov    -0x4(%ecx),%eax
437f7d:	89 5d 98             	mov    %ebx,-0x68(%ebp)
437f80:	8d 3c 10             	lea    (%eax,%edx,1),%edi
437f83:	3b f8                	cmp    %eax,%edi
437f85:	72 04                	jb     0x437f8b
437f87:	3b fa                	cmp    %edx,%edi
437f89:	73 05                	jae    0x437f90
437f8b:	33 c0                	xor    %eax,%eax
437f8d:	40                   	inc    %eax
437f8e:	eb 03                	jmp    0x437f93
437f90:	8b 45 98             	mov    -0x68(%ebp),%eax
437f93:	89 79 fc             	mov    %edi,-0x4(%ecx)
437f96:	85 c0                	test   %eax,%eax
437f98:	74 03                	je     0x437f9d
437f9a:	66 ff 01             	incw   (%ecx)
437f9d:	8b 7d a8             	mov    -0x58(%ebp),%edi
437fa0:	8b 45 94             	mov    -0x6c(%ebp),%eax
437fa3:	83 c7 02             	add    $0x2,%edi
437fa6:	83 e8 02             	sub    $0x2,%eax
437fa9:	4e                   	dec    %esi
437faa:	89 7d a8             	mov    %edi,-0x58(%ebp)
437fad:	89 45 94             	mov    %eax,-0x6c(%ebp)
437fb0:	85 f6                	test   %esi,%esi
437fb2:	7f bd                	jg     0x437f71
437fb4:	8b 55 b0             	mov    -0x50(%ebp),%edx
437fb7:	8b 45 a4             	mov    -0x5c(%ebp),%eax
437fba:	83 c1 02             	add    $0x2,%ecx
437fbd:	42                   	inc    %edx
437fbe:	48                   	dec    %eax
437fbf:	89 55 b0             	mov    %edx,-0x50(%ebp)
437fc2:	89 45 a4             	mov    %eax,-0x5c(%ebp)
437fc5:	85 c0                	test   %eax,%eax
437fc7:	7f 93                	jg     0x437f5c
437fc9:	8b 7d b4             	mov    -0x4c(%ebp),%edi
437fcc:	8b 75 f8             	mov    -0x8(%ebp),%esi
437fcf:	81 c7 02 c0 00 00    	add    $0xc002,%edi
437fd5:	66 85 ff             	test   %di,%di
437fd8:	0f 8e 9c 00 00 00    	jle    0x43807a
437fde:	8b 5d f0             	mov    -0x10(%ebp),%ebx
437fe1:	89 5d bc             	mov    %ebx,-0x44(%ebp)
437fe4:	85 f6                	test   %esi,%esi
437fe6:	78 2c                	js     0x438014
437fe8:	8b 45 f4             	mov    -0xc(%ebp),%eax
437feb:	8b c8                	mov    %eax,%ecx
437fed:	8b d3                	mov    %ebx,%edx
437fef:	03 c0                	add    %eax,%eax
437ff1:	c1 ea 1f             	shr    $0x1f,%edx
437ff4:	0b c2                	or     %edx,%eax
437ff6:	89 45 f4             	mov    %eax,-0xc(%ebp)
437ff9:	c1 e9 1f             	shr    $0x1f,%ecx
437ffc:	03 f6                	add    %esi,%esi
437ffe:	b8 ff ff 00 00       	mov    $0xffff,%eax
438003:	03 db                	add    %ebx,%ebx
438005:	0b f1                	or     %ecx,%esi
438007:	03 f8                	add    %eax,%edi
438009:	89 5d f0             	mov    %ebx,-0x10(%ebp)
43800c:	89 75 f8             	mov    %esi,-0x8(%ebp)
43800f:	66 85 ff             	test   %di,%di
438012:	7f d0                	jg     0x437fe4
438014:	89 5d bc             	mov    %ebx,-0x44(%ebp)
438017:	8b 55 bc             	mov    -0x44(%ebp),%edx
43801a:	6a 00                	push   $0x0
43801c:	5b                   	pop    %ebx
43801d:	66 85 ff             	test   %di,%di
438020:	7e 5b                	jle    0x43807d
438022:	66 8b 4d f0          	mov    -0x10(%ebp),%cx
438026:	b8 00 80 00 00       	mov    $0x8000,%eax
43802b:	66 3b c8             	cmp    %ax,%cx
43802e:	77 12                	ja     0x438042
438030:	81 e2 ff ff 01 00    	and    $0x1ffff,%edx
438036:	81 fa 00 80 01 00    	cmp    $0x18000,%edx
43803c:	0f 85 bd 00 00 00    	jne    0x4380ff
438042:	8b 45 f2             	mov    -0xe(%ebp),%eax
438045:	83 f8 ff             	cmp    $0xffffffff,%eax
438048:	0f 85 ad 00 00 00    	jne    0x4380fb
43804e:	8b 45 f6             	mov    -0xa(%ebp),%eax
438051:	89 5d f2             	mov    %ebx,-0xe(%ebp)
438054:	83 f8 ff             	cmp    $0xffffffff,%eax
438057:	0f 85 95 00 00 00    	jne    0x4380f2
43805d:	66 8b 45 fa          	mov    -0x6(%ebp),%ax
438061:	b9 ff ff 00 00       	mov    $0xffff,%ecx
438066:	89 5d f6             	mov    %ebx,-0xa(%ebp)
438069:	66 3b c1             	cmp    %cx,%ax
43806c:	75 7c                	jne    0x4380ea
43806e:	b8 00 80 00 00       	mov    $0x8000,%eax
438073:	66 89 45 fa          	mov    %ax,-0x6(%ebp)
438077:	47                   	inc    %edi
438078:	eb 7c                	jmp    0x4380f6
43807a:	8b 55 f0             	mov    -0x10(%ebp),%edx
43807d:	b8 ff ff 00 00       	mov    $0xffff,%eax
438082:	03 f8                	add    %eax,%edi
438084:	66 85 ff             	test   %di,%di
438087:	79 99                	jns    0x438022
438089:	8b c7                	mov    %edi,%eax
43808b:	f7 d8                	neg    %eax
43808d:	0f b7 c0             	movzwl %ax,%eax
438090:	03 f8                	add    %eax,%edi
438092:	89 7d b4             	mov    %edi,-0x4c(%ebp)
438095:	8b 7d 84             	mov    -0x7c(%ebp),%edi
438098:	89 45 a4             	mov    %eax,-0x5c(%ebp)
43809b:	f6 45 f0 01          	testb  $0x1,-0x10(%ebp)
43809f:	74 01                	je     0x4380a2
4380a1:	47                   	inc    %edi
4380a2:	8b 5d f4             	mov    -0xc(%ebp),%ebx
4380a5:	8b cb                	mov    %ebx,%ecx
4380a7:	8b c6                	mov    %esi,%eax
4380a9:	c1 e0 1f             	shl    $0x1f,%eax
4380ac:	c1 e1 1f             	shl    $0x1f,%ecx
4380af:	d1 eb                	shr    $1,%ebx
4380b1:	d1 ea                	shr    $1,%edx
4380b3:	0b d8                	or     %eax,%ebx
4380b5:	0b d1                	or     %ecx,%edx
4380b7:	d1 ee                	shr    $1,%esi
4380b9:	ff 4d a4             	decl   -0x5c(%ebp)
4380bc:	89 5d f4             	mov    %ebx,-0xc(%ebp)
4380bf:	89 55 f0             	mov    %edx,-0x10(%ebp)
4380c2:	75 d7                	jne    0x43809b
4380c4:	6a 00                	push   $0x0
4380c6:	85 ff                	test   %edi,%edi
4380c8:	8b 7d b4             	mov    -0x4c(%ebp),%edi
4380cb:	89 75 f8             	mov    %esi,-0x8(%ebp)
4380ce:	5b                   	pop    %ebx
4380cf:	0f 84 4d ff ff ff    	je     0x438022
4380d5:	33 c0                	xor    %eax,%eax
4380d7:	66 8b ca             	mov    %dx,%cx
4380da:	40                   	inc    %eax
4380db:	66 0b c8             	or     %ax,%cx
4380de:	66 89 4d f0          	mov    %cx,-0x10(%ebp)
4380e2:	8b 55 f0             	mov    -0x10(%ebp),%edx
4380e5:	e9 3c ff ff ff       	jmp    0x438026
4380ea:	66 40                	inc    %ax
4380ec:	66 89 45 fa          	mov    %ax,-0x6(%ebp)
4380f0:	eb 04                	jmp    0x4380f6
4380f2:	40                   	inc    %eax
4380f3:	89 45 f6             	mov    %eax,-0xa(%ebp)
4380f6:	8b 75 f8             	mov    -0x8(%ebp),%esi
4380f9:	eb 04                	jmp    0x4380ff
4380fb:	40                   	inc    %eax
4380fc:	89 45 f2             	mov    %eax,-0xe(%ebp)
4380ff:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
438104:	66 3b f8             	cmp    %ax,%di
438107:	73 20                	jae    0x438129
438109:	66 8b 45 f2          	mov    -0xe(%ebp),%ax
43810d:	0b 7d ac             	or     -0x54(%ebp),%edi
438110:	66 89 45 e0          	mov    %ax,-0x20(%ebp)
438114:	8b 45 f4             	mov    -0xc(%ebp),%eax
438117:	89 45 e2             	mov    %eax,-0x1e(%ebp)
43811a:	89 75 e6             	mov    %esi,-0x1a(%ebp)
43811d:	8b 55 e4             	mov    -0x1c(%ebp),%edx
438120:	8b 75 e0             	mov    -0x20(%ebp),%esi
438123:	66 89 7d ea          	mov    %di,-0x16(%ebp)
438127:	eb 1b                	jmp    0x438144
438129:	33 c0                	xor    %eax,%eax
43812b:	66 39 45 ac          	cmp    %ax,-0x54(%ebp)
43812f:	0f 94 c0             	sete   %al
438132:	48                   	dec    %eax
438133:	25 00 00 00 80       	and    $0x80000000,%eax
438138:	05 00 80 ff 7f       	add    $0x7fff8000,%eax
43813d:	89 45 e8             	mov    %eax,-0x18(%ebp)
438140:	8b f3                	mov    %ebx,%esi
438142:	8b d3                	mov    %ebx,%edx
438144:	f6 45 18 01          	testb  $0x1,0x18(%ebp)
438148:	8b 4d 90             	mov    -0x70(%ebp),%ecx
43814b:	8b 45 b8             	mov    -0x48(%ebp),%eax
43814e:	8b 7d 14             	mov    0x14(%ebp),%edi
438151:	66 89 01             	mov    %ax,(%ecx)
438154:	74 36                	je     0x43818c
438156:	98                   	cwtl
438157:	03 f8                	add    %eax,%edi
438159:	89 7d b8             	mov    %edi,-0x48(%ebp)
43815c:	85 ff                	test   %edi,%edi
43815e:	7f 2f                	jg     0x43818f
438160:	33 c0                	xor    %eax,%eax
438162:	66 89 01             	mov    %ax,(%ecx)
438165:	b8 00 80 00 00       	mov    $0x8000,%eax
43816a:	66 39 45 88          	cmp    %ax,-0x78(%ebp)
43816e:	0f 95 c0             	setne  %al
438171:	fe c8                	dec    %al
438173:	24 0d                	and    $0xd,%al
438175:	04 20                	add    $0x20,%al
438177:	88 41 02             	mov    %al,0x2(%ecx)
43817a:	33 c0                	xor    %eax,%eax
43817c:	40                   	inc    %eax
43817d:	88 41 03             	mov    %al,0x3(%ecx)
438180:	c6 41 04 30          	movb   $0x30,0x4(%ecx)
438184:	88 59 05             	mov    %bl,0x5(%ecx)
438187:	e9 ac 01 00 00       	jmp    0x438338
43818c:	89 7d b8             	mov    %edi,-0x48(%ebp)
43818f:	6a 15                	push   $0x15
438191:	58                   	pop    %eax
438192:	3b f8                	cmp    %eax,%edi
438194:	7e 03                	jle    0x438199
438196:	89 45 b8             	mov    %eax,-0x48(%ebp)
438199:	8b 7d e8             	mov    -0x18(%ebp),%edi
43819c:	c1 ef 10             	shr    $0x10,%edi
43819f:	81 ef fe 3f 00 00    	sub    $0x3ffe,%edi
4381a5:	33 c0                	xor    %eax,%eax
4381a7:	6a 08                	push   $0x8
4381a9:	89 7d 98             	mov    %edi,-0x68(%ebp)
4381ac:	66 89 45 ea          	mov    %ax,-0x16(%ebp)
4381b0:	8b 5d e8             	mov    -0x18(%ebp),%ebx
4381b3:	5f                   	pop    %edi
4381b4:	8b ca                	mov    %edx,%ecx
4381b6:	8b c6                	mov    %esi,%eax
4381b8:	c1 e8 1f             	shr    $0x1f,%eax
4381bb:	c1 e9 1f             	shr    $0x1f,%ecx
4381be:	03 d2                	add    %edx,%edx
4381c0:	03 db                	add    %ebx,%ebx
4381c2:	03 f6                	add    %esi,%esi
4381c4:	0b d9                	or     %ecx,%ebx
4381c6:	0b d0                	or     %eax,%edx
4381c8:	89 75 e0             	mov    %esi,-0x20(%ebp)
4381cb:	89 5d e8             	mov    %ebx,-0x18(%ebp)
4381ce:	4f                   	dec    %edi
4381cf:	75 e3                	jne    0x4381b4
4381d1:	8b 7d 98             	mov    -0x68(%ebp),%edi
4381d4:	6a 00                	push   $0x0
4381d6:	89 5d bc             	mov    %ebx,-0x44(%ebp)
4381d9:	89 55 e4             	mov    %edx,-0x1c(%ebp)
4381dc:	89 75 c0             	mov    %esi,-0x40(%ebp)
4381df:	5b                   	pop    %ebx
4381e0:	85 ff                	test   %edi,%edi
4381e2:	79 37                	jns    0x43821b
4381e4:	f7 df                	neg    %edi
4381e6:	81 e7 ff 00 00 00    	and    $0xff,%edi
4381ec:	7e 2d                	jle    0x43821b
4381ee:	8b 5d bc             	mov    -0x44(%ebp),%ebx
4381f1:	8b ca                	mov    %edx,%ecx
4381f3:	8b c3                	mov    %ebx,%eax
4381f5:	c1 e0 1f             	shl    $0x1f,%eax
4381f8:	c1 e1 1f             	shl    $0x1f,%ecx
4381fb:	d1 ea                	shr    $1,%edx
4381fd:	d1 ee                	shr    $1,%esi
4381ff:	d1 eb                	shr    $1,%ebx
438201:	0b f1                	or     %ecx,%esi
438203:	0b d0                	or     %eax,%edx
438205:	4f                   	dec    %edi
438206:	89 5d e8             	mov    %ebx,-0x18(%ebp)
438209:	89 75 e0             	mov    %esi,-0x20(%ebp)
43820c:	85 ff                	test   %edi,%edi
43820e:	7f e1                	jg     0x4381f1
438210:	89 5d bc             	mov    %ebx,-0x44(%ebp)
438213:	89 55 e4             	mov    %edx,-0x1c(%ebp)
438216:	89 75 c0             	mov    %esi,-0x40(%ebp)
438219:	33 db                	xor    %ebx,%ebx
43821b:	8b 75 90             	mov    -0x70(%ebp),%esi
43821e:	8b 45 b8             	mov    -0x48(%ebp),%eax
438221:	8d 7e 04             	lea    0x4(%esi),%edi
438224:	40                   	inc    %eax
438225:	8b cf                	mov    %edi,%ecx
438227:	89 7d 98             	mov    %edi,-0x68(%ebp)
43822a:	89 4d a4             	mov    %ecx,-0x5c(%ebp)
43822d:	89 45 a8             	mov    %eax,-0x58(%ebp)
438230:	85 c0                	test   %eax,%eax
438232:	0f 8e c8 00 00 00    	jle    0x438300
438238:	8d 75 e0             	lea    -0x20(%ebp),%esi
43823b:	8d 7d c4             	lea    -0x3c(%ebp),%edi
43823e:	a5                   	movsl  %ds:(%esi),%es:(%edi)
43823f:	a5                   	movsl  %ds:(%esi),%es:(%edi)
438240:	a5                   	movsl  %ds:(%esi),%es:(%edi)
438241:	8b 7d c0             	mov    -0x40(%ebp),%edi
438244:	8b ca                	mov    %edx,%ecx
438246:	8b c7                	mov    %edi,%eax
438248:	c1 e8 1f             	shr    $0x1f,%eax
43824b:	03 d2                	add    %edx,%edx
43824d:	0b d0                	or     %eax,%edx
43824f:	8b 45 bc             	mov    -0x44(%ebp),%eax
438252:	c1 e9 1f             	shr    $0x1f,%ecx
438255:	8d 34 00             	lea    (%eax,%eax,1),%esi
438258:	0b f1                	or     %ecx,%esi
43825a:	03 ff                	add    %edi,%edi
43825c:	8b c7                	mov    %edi,%eax
43825e:	8b ca                	mov    %edx,%ecx
438260:	c1 e8 1f             	shr    $0x1f,%eax
438263:	03 d2                	add    %edx,%edx
438265:	c1 e9 1f             	shr    $0x1f,%ecx
438268:	0b d0                	or     %eax,%edx
43826a:	8b 45 c4             	mov    -0x3c(%ebp),%eax
43826d:	03 ff                	add    %edi,%edi
43826f:	03 f6                	add    %esi,%esi
438271:	0b f1                	or     %ecx,%esi
438273:	8d 0c 38             	lea    (%eax,%edi,1),%ecx
438276:	89 4d b8             	mov    %ecx,-0x48(%ebp)
438279:	3b cf                	cmp    %edi,%ecx
43827b:	72 04                	jb     0x438281
43827d:	3b c8                	cmp    %eax,%ecx
43827f:	73 1b                	jae    0x43829c