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
43a366:	5b                   	pop    %ebx
43a367:	66 85 ff             	test   %di,%di
43a36a:	7e 5b                	jle    0x43a3c7
43a36c:	66 8b 4d f0          	mov    -0x10(%ebp),%cx
43a370:	b8 00 80 00 00       	mov    $0x8000,%eax
43a375:	66 3b c8             	cmp    %ax,%cx
43a378:	77 12                	ja     0x43a38c
43a37a:	81 e2 ff ff 01 00    	and    $0x1ffff,%edx
43a380:	81 fa 00 80 01 00    	cmp    $0x18000,%edx
43a386:	0f 85 bd 00 00 00    	jne    0x43a449
43a38c:	8b 45 f2             	mov    -0xe(%ebp),%eax
43a38f:	83 f8 ff             	cmp    $0xffffffff,%eax
43a392:	0f 85 ad 00 00 00    	jne    0x43a445
43a398:	8b 45 f6             	mov    -0xa(%ebp),%eax
43a39b:	89 5d f2             	mov    %ebx,-0xe(%ebp)
43a39e:	83 f8 ff             	cmp    $0xffffffff,%eax
43a3a1:	0f 85 95 00 00 00    	jne    0x43a43c
43a3a7:	66 8b 45 fa          	mov    -0x6(%ebp),%ax
43a3ab:	b9 ff ff 00 00       	mov    $0xffff,%ecx
43a3b0:	89 5d f6             	mov    %ebx,-0xa(%ebp)
43a3b3:	66 3b c1             	cmp    %cx,%ax
43a3b6:	75 7c                	jne    0x43a434
43a3b8:	b8 00 80 00 00       	mov    $0x8000,%eax
43a3bd:	47                   	inc    %edi
43a3be:	66 89 45 fa          	mov    %ax,-0x6(%ebp)
43a3c2:	eb 7c                	jmp    0x43a440
43a3c4:	8b 55 f0             	mov    -0x10(%ebp),%edx
43a3c7:	b8 ff ff 00 00       	mov    $0xffff,%eax
43a3cc:	03 f8                	add    %eax,%edi
43a3ce:	66 85 ff             	test   %di,%di
43a3d1:	79 99                	jns    0x43a36c
43a3d3:	8b c7                	mov    %edi,%eax
43a3d5:	f7 d8                	neg    %eax
43a3d7:	0f b7 c0             	movzwl %ax,%eax
43a3da:	03 f8                	add    %eax,%edi
43a3dc:	89 45 a8             	mov    %eax,-0x58(%ebp)
43a3df:	89 7d b4             	mov    %edi,-0x4c(%ebp)
43a3e2:	8b 7d 88             	mov    -0x78(%ebp),%edi
43a3e5:	f6 45 f0 01          	testb  $0x1,-0x10(%ebp)
43a3e9:	74 01                	je     0x43a3ec
43a3eb:	47                   	inc    %edi
43a3ec:	8b 5d f4             	mov    -0xc(%ebp),%ebx
43a3ef:	8b c6                	mov    %esi,%eax
43a3f1:	8b cb                	mov    %ebx,%ecx
43a3f3:	c1 e0 1f             	shl    $0x1f,%eax
43a3f6:	c1 e1 1f             	shl    $0x1f,%ecx
43a3f9:	d1 eb                	shr    $1,%ebx
43a3fb:	d1 ea                	shr    $1,%edx
43a3fd:	0b d8                	or     %eax,%ebx
43a3ff:	0b d1                	or     %ecx,%edx
43a401:	d1 ee                	shr    $1,%esi
43a403:	ff 4d a8             	decl   -0x58(%ebp)
43a406:	89 5d f4             	mov    %ebx,-0xc(%ebp)
43a409:	89 55 f0             	mov    %edx,-0x10(%ebp)
43a40c:	75 d7                	jne    0x43a3e5
43a40e:	6a 00                	push   $0x0
43a410:	85 ff                	test   %edi,%edi
43a412:	89 75 f8             	mov    %esi,-0x8(%ebp)
43a415:	8b 7d b4             	mov    -0x4c(%ebp),%edi
43a418:	5b                   	pop    %ebx
43a419:	0f 84 4d ff ff ff    	je     0x43a36c
43a41f:	33 c0                	xor    %eax,%eax
43a421:	66 8b ca             	mov    %dx,%cx
43a424:	40                   	inc    %eax
43a425:	66 0b c8             	or     %ax,%cx
43a428:	66 89 4d f0          	mov    %cx,-0x10(%ebp)
43a42c:	8b 55 f0             	mov    -0x10(%ebp),%edx
43a42f:	e9 3c ff ff ff       	jmp    0x43a370
43a434:	66 40                	inc    %ax
43a436:	66 89 45 fa          	mov    %ax,-0x6(%ebp)
43a43a:	eb 04                	jmp    0x43a440
43a43c:	40                   	inc    %eax
43a43d:	89 45 f6             	mov    %eax,-0xa(%ebp)
43a440:	8b 75 f8             	mov    -0x8(%ebp),%esi
43a443:	eb 04                	jmp    0x43a449
43a445:	40                   	inc    %eax
43a446:	89 45 f2             	mov    %eax,-0xe(%ebp)
43a449:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
43a44e:	66 3b f8             	cmp    %ax,%di
43a451:	73 20                	jae    0x43a473
43a453:	66 8b 45 f2          	mov    -0xe(%ebp),%ax
43a457:	0b 7d bc             	or     -0x44(%ebp),%edi
43a45a:	66 89 45 e0          	mov    %ax,-0x20(%ebp)
43a45e:	8b 45 f4             	mov    -0xc(%ebp),%eax
43a461:	89 45 e2             	mov    %eax,-0x1e(%ebp)
43a464:	89 75 e6             	mov    %esi,-0x1a(%ebp)
43a467:	8b 55 e4             	mov    -0x1c(%ebp),%edx
43a46a:	8b 75 e0             	mov    -0x20(%ebp),%esi
43a46d:	66 89 7d ea          	mov    %di,-0x16(%ebp)
43a471:	eb 1b                	jmp    0x43a48e
43a473:	33 c0                	xor    %eax,%eax
43a475:	66 39 45 bc          	cmp    %ax,-0x44(%ebp)
43a479:	0f 94 c0             	sete   %al
43a47c:	48                   	dec    %eax
43a47d:	25 00 00 00 80       	and    $0x80000000,%eax
43a482:	05 00 80 ff 7f       	add    $0x7fff8000,%eax
43a487:	89 45 e8             	mov    %eax,-0x18(%ebp)
43a48a:	8b f3                	mov    %ebx,%esi
43a48c:	8b d3                	mov    %ebx,%edx
43a48e:	f6 45 18 01          	testb  $0x1,0x18(%ebp)
43a492:	8b 4d 8c             	mov    -0x74(%ebp),%ecx
43a495:	8b 45 b8             	mov    -0x48(%ebp),%eax
43a498:	8b 7d 14             	mov    0x14(%ebp),%edi
43a49b:	66 89 01             	mov    %ax,(%ecx)
43a49e:	74 36                	je     0x43a4d6
43a4a0:	98                   	cwtl
43a4a1:	03 f8                	add    %eax,%edi
43a4a3:	89 7d b8             	mov    %edi,-0x48(%ebp)
43a4a6:	85 ff                	test   %edi,%edi
43a4a8:	7f 2f                	jg     0x43a4d9
43a4aa:	33 c0                	xor    %eax,%eax
43a4ac:	66 89 01             	mov    %ax,(%ecx)
43a4af:	b8 00 80 00 00       	mov    $0x8000,%eax
43a4b4:	66 39 45 80          	cmp    %ax,-0x80(%ebp)
43a4b8:	0f 95 c0             	setne  %al
43a4bb:	fe c8                	dec    %al
43a4bd:	24 0d                	and    $0xd,%al
43a4bf:	04 20                	add    $0x20,%al
43a4c1:	88 41 02             	mov    %al,0x2(%ecx)
43a4c4:	33 c0                	xor    %eax,%eax
43a4c6:	40                   	inc    %eax
43a4c7:	88 41 03             	mov    %al,0x3(%ecx)
43a4ca:	c6 41 04 30          	movb   $0x30,0x4(%ecx)
43a4ce:	88 59 05             	mov    %bl,0x5(%ecx)
43a4d1:	e9 ac 01 00 00       	jmp    0x43a682
43a4d6:	89 7d b8             	mov    %edi,-0x48(%ebp)
43a4d9:	6a 15                	push   $0x15
43a4db:	58                   	pop    %eax
43a4dc:	3b f8                	cmp    %eax,%edi
43a4de:	7e 03                	jle    0x43a4e3
43a4e0:	89 45 b8             	mov    %eax,-0x48(%ebp)
43a4e3:	8b 7d e8             	mov    -0x18(%ebp),%edi
43a4e6:	c1 ef 10             	shr    $0x10,%edi
43a4e9:	81 ef fe 3f 00 00    	sub    $0x3ffe,%edi
43a4ef:	33 c0                	xor    %eax,%eax
43a4f1:	6a 08                	push   $0x8
43a4f3:	89 7d 9c             	mov    %edi,-0x64(%ebp)
43a4f6:	66 89 45 ea          	mov    %ax,-0x16(%ebp)
43a4fa:	8b 5d e8             	mov    -0x18(%ebp),%ebx
43a4fd:	5f                   	pop    %edi
43a4fe:	8b ca                	mov    %edx,%ecx
43a500:	8b c6                	mov    %esi,%eax
43a502:	c1 e8 1f             	shr    $0x1f,%eax
43a505:	03 d2                	add    %edx,%edx
43a507:	c1 e9 1f             	shr    $0x1f,%ecx
43a50a:	03 db                	add    %ebx,%ebx
43a50c:	03 f6                	add    %esi,%esi
43a50e:	0b d9                	or     %ecx,%ebx
43a510:	0b d0                	or     %eax,%edx
43a512:	89 75 e0             	mov    %esi,-0x20(%ebp)
43a515:	89 5d e8             	mov    %ebx,-0x18(%ebp)
43a518:	4f                   	dec    %edi
43a519:	75 e3                	jne    0x43a4fe
43a51b:	8b 7d 9c             	mov    -0x64(%ebp),%edi
43a51e:	89 5d bc             	mov    %ebx,-0x44(%ebp)
43a521:	89 55 e4             	mov    %edx,-0x1c(%ebp)
43a524:	89 75 c0             	mov    %esi,-0x40(%ebp)
43a527:	6a 00                	push   $0x0
43a529:	5b                   	pop    %ebx
43a52a:	85 ff                	test   %edi,%edi
43a52c:	79 37                	jns    0x43a565
43a52e:	f7 df                	neg    %edi
43a530:	81 e7 ff 00 00 00    	and    $0xff,%edi
43a536:	7e 2d                	jle    0x43a565
43a538:	8b 5d bc             	mov    -0x44(%ebp),%ebx
43a53b:	8b ca                	mov    %edx,%ecx
43a53d:	d1 ee                	shr    $1,%esi
43a53f:	8b c3                	mov    %ebx,%eax
43a541:	c1 e1 1f             	shl    $0x1f,%ecx
43a544:	c1 e0 1f             	shl    $0x1f,%eax
43a547:	0b f1                	or     %ecx,%esi
43a549:	d1 ea                	shr    $1,%edx
43a54b:	d1 eb                	shr    $1,%ebx
43a54d:	0b d0                	or     %eax,%edx
43a54f:	4f                   	dec    %edi