439f7d:	89 7d b4             	mov    %edi,-0x4c(%ebp)
439f80:	75 13                	jne    0x439f95
439f82:	85 d2                	test   %edx,%edx
439f84:	75 0f                	jne    0x439f95
439f86:	85 f6                	test   %esi,%esi
439f88:	75 0b                	jne    0x439f95
439f8a:	33 c0                	xor    %eax,%eax
439f8c:	66 89 45 ea          	mov    %ax,-0x16(%ebp)
439f90:	e9 2d 02 00 00       	jmp    0x43a1c2
439f95:	66 83 7d a0 00       	cmpw   $0x0,-0x60(%ebp)
439f9a:	75 16                	jne    0x439fb2
439f9c:	47                   	inc    %edi
439f9d:	f7 41 08 ff ff ff 7f 	testl  $0x7fffffff,0x8(%ecx)
439fa4:	89 7d b4             	mov    %edi,-0x4c(%ebp)
439fa7:	75 09                	jne    0x439fb2
439fa9:	39 59 04             	cmp    %ebx,0x4(%ecx)
439fac:	75 04                	jne    0x439fb2
439fae:	39 19                	cmp    %ebx,(%ecx)
439fb0:	74 b6                	je     0x439f68
439fb2:	6a 05                	push   $0x5
439fb4:	8b c3                	mov    %ebx,%eax
439fb6:	8d 55 f4             	lea    -0xc(%ebp),%edx
439fb9:	5e                   	pop    %esi
439fba:	89 85 7c ff ff ff    	mov    %eax,-0x84(%ebp)
439fc0:	89 75 b0             	mov    %esi,-0x50(%ebp)
439fc3:	89 75 a0             	mov    %esi,-0x60(%ebp)
439fc6:	85 f6                	test   %esi,%esi
439fc8:	7e 72                	jle    0x43a03c
439fca:	8d 75 e0             	lea    -0x20(%ebp),%esi
439fcd:	8d 04 46             	lea    (%esi,%eax,2),%eax
439fd0:	8d 71 08             	lea    0x8(%ecx),%esi
439fd3:	89 85 78 ff ff ff    	mov    %eax,-0x88(%ebp)
439fd9:	89 75 c0             	mov    %esi,-0x40(%ebp)
439fdc:	8b 75 a0             	mov    -0x60(%ebp),%esi
439fdf:	8b 4d c0             	mov    -0x40(%ebp),%ecx
439fe2:	0f b7 38             	movzwl (%eax),%edi
439fe5:	0f b7 01             	movzwl (%ecx),%eax
439fe8:	0f af f8             	imul   %eax,%edi
439feb:	8b 42 fc             	mov    -0x4(%edx),%eax
439fee:	89 5d 88             	mov    %ebx,-0x78(%ebp)
439ff1:	8d 0c 38             	lea    (%eax,%edi,1),%ecx
439ff4:	3b c8                	cmp    %eax,%ecx
439ff6:	89 4d a0             	mov    %ecx,-0x60(%ebp)
439ff9:	8b c1                	mov    %ecx,%eax
439ffb:	72 04                	jb     0x43a001
439ffd:	3b c7                	cmp    %edi,%eax
439fff:	73 05                	jae    0x43a006
43a001:	33 c9                	xor    %ecx,%ecx
43a003:	41                   	inc    %ecx
43a004:	eb 03                	jmp    0x43a009
43a006:	8b 4d 88             	mov    -0x78(%ebp),%ecx
43a009:	89 42 fc             	mov    %eax,-0x4(%edx)
43a00c:	85 c9                	test   %ecx,%ecx
43a00e:	74 03                	je     0x43a013
43a010:	66 ff 02             	incw   (%edx)
43a013:	8b 85 78 ff ff ff    	mov    -0x88(%ebp),%eax
43a019:	8b 4d c0             	mov    -0x40(%ebp),%ecx
43a01c:	83 c0 02             	add    $0x2,%eax
43a01f:	83 e9 02             	sub    $0x2,%ecx
43a022:	89 85 78 ff ff ff    	mov    %eax,-0x88(%ebp)
43a028:	4e                   	dec    %esi
43a029:	89 4d c0             	mov    %ecx,-0x40(%ebp)
43a02c:	85 f6                	test   %esi,%esi
43a02e:	7f b2                	jg     0x439fe2
43a030:	8b 4d 98             	mov    -0x68(%ebp),%ecx
43a033:	8b 75 b0             	mov    -0x50(%ebp),%esi
43a036:	8b 85 7c ff ff ff    	mov    -0x84(%ebp),%eax
43a03c:	83 c2 02             	add    $0x2,%edx
43a03f:	40                   	inc    %eax
43a040:	4e                   	dec    %esi
43a041:	89 85 7c ff ff ff    	mov    %eax,-0x84(%ebp)
43a047:	89 75 b0             	mov    %esi,-0x50(%ebp)
43a04a:	85 f6                	test   %esi,%esi
43a04c:	0f 8f 71 ff ff ff    	jg     0x439fc3
43a052:	8b 7d b4             	mov    -0x4c(%ebp),%edi
43a055:	8b 45 f8             	mov    -0x8(%ebp),%eax
43a058:	81 c7 02 c0 00 00    	add    $0xc002,%edi
43a05e:	8b 75 f0             	mov    -0x10(%ebp),%esi
43a061:	89 45 c0             	mov    %eax,-0x40(%ebp)
43a064:	66 85 ff             	test   %di,%di
43a067:	7e 3b                	jle    0x43a0a4
43a069:	85 c0                	test   %eax,%eax
43a06b:	78 32                	js     0x43a09f
43a06d:	8b 45 f4             	mov    -0xc(%ebp),%eax
43a070:	8b d6                	mov    %esi,%edx
43a072:	8b c8                	mov    %eax,%ecx
43a074:	c1 ea 1f             	shr    $0x1f,%edx
43a077:	03 c0                	add    %eax,%eax
43a079:	c1 e9 1f             	shr    $0x1f,%ecx
43a07c:	0b c2                	or     %edx,%eax
43a07e:	03 f6                	add    %esi,%esi
43a080:	89 45 f4             	mov    %eax,-0xc(%ebp)
43a083:	8b 45 c0             	mov    -0x40(%ebp),%eax
43a086:	03 c0                	add    %eax,%eax
43a088:	89 75 f0             	mov    %esi,-0x10(%ebp)
43a08b:	0b c1                	or     %ecx,%eax
43a08d:	b9 ff ff 00 00       	mov    $0xffff,%ecx
43a092:	03 f9                	add    %ecx,%edi
43a094:	89 45 c0             	mov    %eax,-0x40(%ebp)
43a097:	89 45 f8             	mov    %eax,-0x8(%ebp)
43a09a:	66 85 ff             	test   %di,%di
43a09d:	7f ca                	jg     0x43a069
43a09f:	66 85 ff             	test   %di,%di
43a0a2:	7f 71                	jg     0x43a115
43a0a4:	b8 ff ff 00 00       	mov    $0xffff,%eax
43a0a9:	03 f8                	add    %eax,%edi
43a0ab:	66 85 ff             	test   %di,%di
43a0ae:	79 65                	jns    0x43a115
43a0b0:	8b 5d c0             	mov    -0x40(%ebp),%ebx
43a0b3:	8b c7                	mov    %edi,%eax
43a0b5:	f7 d8                	neg    %eax
43a0b7:	33 d2                	xor    %edx,%edx
43a0b9:	0f b7 c0             	movzwl %ax,%eax
43a0bc:	03 f8                	add    %eax,%edi
43a0be:	89 45 b0             	mov    %eax,-0x50(%ebp)
43a0c1:	89 7d b4             	mov    %edi,-0x4c(%ebp)
43a0c4:	42                   	inc    %edx
43a0c5:	8b 7d 84             	mov    -0x7c(%ebp),%edi
43a0c8:	84 55 f0             	test   %dl,-0x10(%ebp)
43a0cb:	74 01                	je     0x43a0ce
43a0cd:	47                   	inc    %edi
43a0ce:	8b 4d f4             	mov    -0xc(%ebp),%ecx
43a0d1:	8b c3                	mov    %ebx,%eax
43a0d3:	c1 e0 1f             	shl    $0x1f,%eax
43a0d6:	89 4d c0             	mov    %ecx,-0x40(%ebp)
43a0d9:	d1 6d c0             	shrl   $1,-0x40(%ebp)
43a0dc:	09 45 c0             	or     %eax,-0x40(%ebp)
43a0df:	8b 45 c0             	mov    -0x40(%ebp),%eax
43a0e2:	c1 e1 1f             	shl    $0x1f,%ecx
43a0e5:	d1 ee                	shr    $1,%esi
43a0e7:	d1 eb                	shr    $1,%ebx
43a0e9:	0b f1                	or     %ecx,%esi
43a0eb:	ff 4d b0             	decl   -0x50(%ebp)
43a0ee:	89 5d f8             	mov    %ebx,-0x8(%ebp)
43a0f1:	89 45 f4             	mov    %eax,-0xc(%ebp)
43a0f4:	89 75 f0             	mov    %esi,-0x10(%ebp)
43a0f7:	75 cf                	jne    0x43a0c8
43a0f9:	6a 00                	push   $0x0
43a0fb:	89 5d c0             	mov    %ebx,-0x40(%ebp)
43a0fe:	85 ff                	test   %edi,%edi
43a100:	8b 7d b4             	mov    -0x4c(%ebp),%edi
43a103:	5b                   	pop    %ebx
43a104:	74 0f                	je     0x43a115
43a106:	66 8b c6             	mov    %si,%ax
43a109:	66 0b c2             	or     %dx,%ax
43a10c:	66 89 45 f0          	mov    %ax,-0x10(%ebp)
43a110:	8b 75 f0             	mov    -0x10(%ebp),%esi
43a113:	eb 04                	jmp    0x43a119
43a115:	66 8b 45 f0          	mov    -0x10(%ebp),%ax
43a119:	b9 00 80 00 00       	mov    $0x8000,%ecx
43a11e:	66 3b c1             	cmp    %cx,%ax
43a121:	77 0e                	ja     0x43a131
43a123:	81 e6 ff ff 01 00    	and    $0x1ffff,%esi
43a129:	81 fe 00 80 01 00    	cmp    $0x18000,%esi
43a12f:	75 40                	jne    0x43a171
43a131:	8b 45 f2             	mov    -0xe(%ebp),%eax
43a134:	83 f8 ff             	cmp    $0xffffffff,%eax
43a137:	75 34                	jne    0x43a16d
43a139:	8b 45 f6             	mov    -0xa(%ebp),%eax
43a13c:	89 5d f2             	mov    %ebx,-0xe(%ebp)
43a13f:	83 f8 ff             	cmp    $0xffffffff,%eax
43a142:	75 20                	jne    0x43a164
43a144:	66 8b 45 fa          	mov    -0x6(%ebp),%ax
43a148:	ba ff ff 00 00       	mov    $0xffff,%edx
43a14d:	89 5d f6             	mov    %ebx,-0xa(%ebp)
43a150:	66 3b c2             	cmp    %dx,%ax
43a153:	75 07                	jne    0x43a15c
43a155:	66 89 4d fa          	mov    %cx,-0x6(%ebp)
43a159:	47                   	inc    %edi
43a15a:	eb 0c                	jmp    0x43a168
43a15c:	66 40                	inc    %ax
43a15e:	66 89 45 fa          	mov    %ax,-0x6(%ebp)
43a162:	eb 04                	jmp    0x43a168
43a164:	40                   	inc    %eax
43a165:	89 45 f6             	mov    %eax,-0xa(%ebp)
43a168:	8b 4d f8             	mov    -0x8(%ebp),%ecx
43a16b:	eb 07                	jmp    0x43a174
43a16d:	40                   	inc    %eax
43a16e:	89 45 f2             	mov    %eax,-0xe(%ebp)
43a171:	8b 4d c0             	mov    -0x40(%ebp),%ecx
43a174:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
43a179:	66 3b f8             	cmp    %ax,%di
43a17c:	73 20                	jae    0x43a19e
43a17e:	66 8b 45 f2          	mov    -0xe(%ebp),%ax
43a182:	0b 7d a4             	or     -0x5c(%ebp),%edi
43a185:	66 89 45 e0          	mov    %ax,-0x20(%ebp)
43a189:	8b 45 f4             	mov    -0xc(%ebp),%eax
43a18c:	89 45 e2             	mov    %eax,-0x1e(%ebp)
43a18f:	8b 75 e0             	mov    -0x20(%ebp),%esi
43a192:	89 4d e6             	mov    %ecx,-0x1a(%ebp)
43a195:	8b 55 e4             	mov    -0x1c(%ebp),%edx
43a198:	66 89 7d ea          	mov    %di,-0x16(%ebp)
43a19c:	eb 21                	jmp    0x43a1bf
43a19e:	33 c0                	xor    %eax,%eax
43a1a0:	66 39 45 a4          	cmp    %ax,-0x5c(%ebp)
43a1a4:	0f 94 c0             	sete   %al
43a1a7:	48                   	dec    %eax
43a1a8:	25 00 00 00 80       	and    $0x80000000,%eax
43a1ad:	05 00 80 ff 7f       	add    $0x7fff8000,%eax
43a1b2:	89 45 e8             	mov    %eax,-0x18(%ebp)
43a1b5:	8b f3                	mov    %ebx,%esi
43a1b7:	8b d3                	mov    %ebx,%edx
43a1b9:	89 75 e0             	mov    %esi,-0x20(%ebp)
43a1bc:	89 55 e4             	mov    %edx,-0x1c(%ebp)
43a1bf:	89 75 c0             	mov    %esi,-0x40(%ebp)
43a1c2:	8b 7d 94             	mov    -0x6c(%ebp),%edi
43a1c5:	8b 45 bc             	mov    -0x44(%ebp),%eax
43a1c8:	85 c0                	test   %eax,%eax
43a1ca:	0f 85 f6 fc ff ff    	jne    0x439ec6
43a1d0:	8b 4d b8             	mov    -0x48(%ebp),%ecx
43a1d3:	eb 06                	jmp    0x43a1db
43a1d5:	8b 55 e4             	mov    -0x1c(%ebp),%edx
43a1d8:	8b 75 e0             	mov    -0x20(%ebp),%esi
43a1db:	8b 45 e8             	mov    -0x18(%ebp),%eax
43a1de:	bf ff 3f 00 00       	mov    $0x3fff,%edi
43a1e3:	c1 e8 10             	shr    $0x10,%eax
43a1e6:	66 3b c7             	cmp    %di,%ax
43a1e9:	0f 82 9f 02 00 00    	jb     0x43a48e
43a1ef:	41                   	inc    %ecx
43a1f0:	89 5d 88             	mov    %ebx,-0x78(%ebp)
43a1f3:	89 4d b8             	mov    %ecx,-0x48(%ebp)
43a1f6:	8b c8                	mov    %eax,%ecx
43a1f8:	8b 45 da             	mov    -0x26(%ebp),%eax
43a1fb:	8b f8                	mov    %eax,%edi
43a1fd:	33 f9                	xor    %ecx,%edi
43a1ff:	89 5d f0             	mov    %ebx,-0x10(%ebp)
43a202:	81 e7 00 80 00 00    	and    $0x8000,%edi
43a208:	89 5d f4             	mov    %ebx,-0xc(%ebp)
43a20b:	89 7d bc             	mov    %edi,-0x44(%ebp)
43a20e:	bf ff 7f 00 00       	mov    $0x7fff,%edi
43a213:	23 c7                	and    %edi,%eax
43a215:	89 5d f8             	mov    %ebx,-0x8(%ebp)
43a218:	23 cf                	and    %edi,%ecx
43a21a:	89 45 84             	mov    %eax,-0x7c(%ebp)
43a21d:	03 c1                	add    %ecx,%eax
43a21f:	0f b7 f8             	movzwl %ax,%edi
43a222:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
43a227:	89 7d b4             	mov    %edi,-0x4c(%ebp)
43a22a:	66 3b c8             	cmp    %ax,%cx
43a22d:	0f 83 40 02 00 00    	jae    0x43a473
43a233:	8b 45 84             	mov    -0x7c(%ebp),%eax
43a236:	66 3b 45 9c          	cmp    -0x64(%ebp),%ax
43a23a:	0f 83 33 02 00 00    	jae    0x43a473
43a240:	66 3b 7d 90          	cmp    -0x70(%ebp),%di
43a244:	0f 87 29 02 00 00    	ja     0x43a473
43a24a:	66 3b 7d ac          	cmp    -0x54(%ebp),%di
43a24e:	77 08                	ja     0x43a258
43a250:	89 5d e8             	mov    %ebx,-0x18(%ebp)
43a253:	e9 32 02 00 00       	jmp    0x43a48a
43a258:	66 85 c9             	test   %cx,%cx
43a25b:	75 20                	jne    0x43a27d
43a25d:	47                   	inc    %edi
43a25e:	f7 45 e8 ff ff ff 7f 	testl  $0x7fffffff,-0x18(%ebp)
43a265:	89 7d b4             	mov    %edi,-0x4c(%ebp)
43a268:	75 13                	jne    0x43a27d
43a26a:	85 d2                	test   %edx,%edx
43a26c:	75 0f                	jne    0x43a27d
43a26e:	85 f6                	test   %esi,%esi
43a270:	75 0b                	jne    0x43a27d
43a272:	33 c0                	xor    %eax,%eax
43a274:	66 89 45 ea          	mov    %ax,-0x16(%ebp)
43a278:	e9 11 02 00 00       	jmp    0x43a48e
43a27d:	66 85 c0             	test   %ax,%ax
43a280:	75 19                	jne    0x43a29b
43a282:	47                   	inc    %edi
43a283:	f7 45 d8 ff ff ff 7f 	testl  $0x7fffffff,-0x28(%ebp)
43a28a:	89 7d b4             	mov    %edi,-0x4c(%ebp)
43a28d:	75 0c                	jne    0x43a29b
43a28f:	83 7d d4 00          	cmpl   $0x0,-0x2c(%ebp)
43a293:	75 06                	jne    0x43a29b
43a295:	83 7d d0 00          	cmpl   $0x0,-0x30(%ebp)
43a299:	74 b5                	je     0x43a250
43a29b:	8b d3                	mov    %ebx,%edx
43a29d:	8d 4d f4             	lea    -0xc(%ebp),%ecx
43a2a0:	6a 05                	push   $0x5
43a2a2:	89 55 b0             	mov    %edx,-0x50(%ebp)
43a2a5:	58                   	pop    %eax
43a2a6:	8b f0                	mov    %eax,%esi
43a2a8:	85 c0                	test   %eax,%eax
43a2aa:	7e 58                	jle    0x43a304
43a2ac:	8d 7d e0             	lea    -0x20(%ebp),%edi
43a2af:	8d 45 d8             	lea    -0x28(%ebp),%eax
43a2b2:	8d 3c 57             	lea    (%edi,%edx,2),%edi
43a2b5:	89 45 90             	mov    %eax,-0x70(%ebp)
43a2b8:	89 7d ac             	mov    %edi,-0x54(%ebp)
43a2bb:	0f b7 10             	movzwl (%eax),%edx
43a2be:	0f b7 07             	movzwl (%edi),%eax
43a2c1:	0f af d0             	imul   %eax,%edx
43a2c4:	8b 41 fc             	mov    -0x4(%ecx),%eax
43a2c7:	89 5d 9c             	mov    %ebx,-0x64(%ebp)
43a2ca:	8d 3c 10             	lea    (%eax,%edx,1),%edi
43a2cd:	3b f8                	cmp    %eax,%edi
43a2cf:	72 04                	jb     0x43a2d5
43a2d1:	3b fa                	cmp    %edx,%edi
43a2d3:	73 05                	jae    0x43a2da
43a2d5:	33 c0                	xor    %eax,%eax
43a2d7:	40                   	inc    %eax
43a2d8:	eb 03                	jmp    0x43a2dd
43a2da:	8b 45 9c             	mov    -0x64(%ebp),%eax
43a2dd:	89 79 fc             	mov    %edi,-0x4(%ecx)
43a2e0:	85 c0                	test   %eax,%eax
43a2e2:	74 03                	je     0x43a2e7
43a2e4:	66 ff 01             	incw   (%ecx)
43a2e7:	8b 7d ac             	mov    -0x54(%ebp),%edi
43a2ea:	8b 45 90             	mov    -0x70(%ebp),%eax
43a2ed:	83 c7 02             	add    $0x2,%edi
43a2f0:	83 e8 02             	sub    $0x2,%eax
43a2f3:	89 7d ac             	mov    %edi,-0x54(%ebp)
43a2f6:	4e                   	dec    %esi
43a2f7:	89 45 90             	mov    %eax,-0x70(%ebp)
43a2fa:	85 f6                	test   %esi,%esi
43a2fc:	7f bd                	jg     0x43a2bb
43a2fe:	8b 55 b0             	mov    -0x50(%ebp),%edx
43a301:	8b 45 a8             	mov    -0x58(%ebp),%eax
43a304:	83 c1 02             	add    $0x2,%ecx
43a307:	42                   	inc    %edx
43a308:	48                   	dec    %eax
43a309:	89 55 b0             	mov    %edx,-0x50(%ebp)
43a30c:	89 45 a8             	mov    %eax,-0x58(%ebp)
43a30f:	85 c0                	test   %eax,%eax
43a311:	7f 93                	jg     0x43a2a6
43a313:	8b 7d b4             	mov    -0x4c(%ebp),%edi
43a316:	8b 75 f8             	mov    -0x8(%ebp),%esi
43a319:	81 c7 02 c0 00 00    	add    $0xc002,%edi
43a31f:	66 85 ff             	test   %di,%di
43a322:	0f 8e 9c 00 00 00    	jle    0x43a3c4
43a328:	8b 5d f0             	mov    -0x10(%ebp),%ebx
43a32b:	89 5d 98             	mov    %ebx,-0x68(%ebp)
43a32e:	85 f6                	test   %esi,%esi
43a330:	78 2c                	js     0x43a35e
43a332:	8b 45 f4             	mov    -0xc(%ebp),%eax
43a335:	8b d3                	mov    %ebx,%edx
43a337:	8b c8                	mov    %eax,%ecx
43a339:	c1 ea 1f             	shr    $0x1f,%edx
43a33c:	03 c0                	add    %eax,%eax
43a33e:	c1 e9 1f             	shr    $0x1f,%ecx
43a341:	0b c2                	or     %edx,%eax
43a343:	03 f6                	add    %esi,%esi
43a345:	89 45 f4             	mov    %eax,-0xc(%ebp)
43a348:	03 db                	add    %ebx,%ebx
43a34a:	b8 ff ff 00 00       	mov    $0xffff,%eax
43a34f:	89 5d f0             	mov    %ebx,-0x10(%ebp)
43a352:	0b f1                	or     %ecx,%esi
43a354:	03 f8                	add    %eax,%edi
43a356:	89 75 f8             	mov    %esi,-0x8(%ebp)
43a359:	66 85 ff             	test   %di,%di
43a35c:	7f d0                	jg     0x43a32e
43a35e:	89 5d 98             	mov    %ebx,-0x68(%ebp)
43a361:	8b 55 98             	mov    -0x68(%ebp),%edx
43a364:	6a 00                	push   $0x0