416ece:	0f 87 76 01 00 00    	ja     0x41704a
416ed4:	8b 54 24 20          	mov    0x20(%esp),%edx
416ed8:	8b 74 24 1c          	mov    0x1c(%esp),%esi
416edc:	85 db                	test   %ebx,%ebx
416ede:	75 3a                	jne    0x416f1a
416ee0:	8b 44 24 18          	mov    0x18(%esp),%eax
416ee4:	6a 77                	push   $0x77
416ee6:	59                   	pop    %ecx
416ee7:	66 39 08             	cmp    %cx,(%eax)
416eea:	0f 84 66 01 00 00    	je     0x417056
416ef0:	8b 4c 24 48          	mov    0x48(%esp),%ecx
416ef4:	89 4c 24 34          	mov    %ecx,0x34(%esp)
416ef8:	8b 4c 24 44          	mov    0x44(%esp),%ecx
416efc:	89 4c 24 38          	mov    %ecx,0x38(%esp)
416f00:	8b 4c 24 30          	mov    0x30(%esp),%ecx
416f04:	89 4c 24 24          	mov    %ecx,0x24(%esp)
416f08:	8b 4c 24 2c          	mov    0x2c(%esp),%ecx
416f0c:	89 4c 24 14          	mov    %ecx,0x14(%esp)
416f10:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
416f14:	0f 85 03 ac 03 00    	jne    0x451b1d
416f1a:	8b 5c 24 28          	mov    0x28(%esp),%ebx
416f1e:	6a 7c                	push   $0x7c
416f20:	5a                   	pop    %edx
416f21:	66 39 13             	cmp    %dx,(%ebx)
416f24:	0f 84 aa 00 00 00    	je     0x416fd4
416f2a:	83 7d 38 00          	cmpl   $0x0,0x38(%ebp)
416f2e:	75 22                	jne    0x416f52
416f30:	8b 7c 24 18          	mov    0x18(%esp),%edi
416f34:	8b d6                	mov    %esi,%edx
416f36:	2b d7                	sub    %edi,%edx
416f38:	d1 fa                	sar    $1,%edx
416f3a:	0f b7 4f 02          	movzwl 0x2(%edi),%ecx
416f3e:	8b c1                	mov    %ecx,%eax
416f40:	66 89 57 02          	mov    %dx,0x2(%edi)
416f44:	f7 d8                	neg    %eax
416f46:	8b d1                	mov    %ecx,%edx
416f48:	8d 3c 47             	lea    (%edi,%eax,2),%edi
416f4b:	85 c9                	test   %ecx,%ecx
416f4d:	7f eb                	jg     0x416f3a
416f4f:	8b 7d 34             	mov    0x34(%ebp),%edi
416f52:	8b 4c 24 3c          	mov    0x3c(%esp),%ecx
416f56:	6a 78                	push   $0x78
416f58:	58                   	pop    %eax
416f59:	66 89 06             	mov    %ax,(%esi)
416f5c:	8b c6                	mov    %esi,%eax
416f5e:	2b c1                	sub    %ecx,%eax
416f60:	d1 f8                	sar    $1,%eax
416f62:	66 89 46 02          	mov    %ax,0x2(%esi)
416f66:	83 c6 04             	add    $0x4,%esi
416f69:	83 7c 24 50 00       	cmpl   $0x0,0x50(%esp)
416f6e:	0f 8f b6 00 00 00    	jg     0x41702a
416f74:	8b 4c 24 10          	mov    0x10(%esp),%ecx
416f78:	8b 44 24 40          	mov    0x40(%esp),%eax
416f7c:	8b 54 24 34          	mov    0x34(%esp),%edx
416f80:	89 47 40             	mov    %eax,0x40(%edi)
416f83:	8b 44 24 54          	mov    0x54(%esp),%eax
416f87:	89 30                	mov    %esi,(%eax)
416f89:	8b 45 08             	mov    0x8(%ebp),%eax
416f8c:	89 18                	mov    %ebx,(%eax)
416f8e:	8b 45 20             	mov    0x20(%ebp),%eax
416f91:	8b 5c 24 14          	mov    0x14(%esp),%ebx
416f95:	89 10                	mov    %edx,(%eax)
416f97:	8b 45 24             	mov    0x24(%ebp),%eax
416f9a:	8b 54 24 38          	mov    0x38(%esp),%edx
416f9e:	89 10                	mov    %edx,(%eax)
416fa0:	8b 45 28             	mov    0x28(%ebp),%eax
416fa3:	8b 54 24 24          	mov    0x24(%esp),%edx
416fa7:	89 10                	mov    %edx,(%eax)
416fa9:	8b 45 2c             	mov    0x2c(%ebp),%eax
416fac:	89 18                	mov    %ebx,(%eax)
416fae:	8b 5d 38             	mov    0x38(%ebp),%ebx
416fb1:	85 db                	test   %ebx,%ebx
416fb3:	74 15                	je     0x416fca
416fb5:	8b 13                	mov    (%ebx),%edx
416fb7:	b8 eb ff ff 7f       	mov    $0x7fffffeb,%eax
416fbc:	2b c2                	sub    %edx,%eax
416fbe:	3b c1                	cmp    %ecx,%eax
416fc0:	0f 8c 33 ac 03 00    	jl     0x451bf9
416fc6:	03 ca                	add    %edx,%ecx
416fc8:	89 0b                	mov    %ecx,(%ebx)
416fca:	33 c0                	xor    %eax,%eax
416fcc:	40                   	inc    %eax
416fcd:	5f                   	pop    %edi
416fce:	5e                   	pop    %esi
416fcf:	5b                   	pop    %ebx
416fd0:	8b e5                	mov    %ebp,%esp
416fd2:	5d                   	pop    %ebp
416fd3:	c3                   	ret
416fd4:	83 7d 38 00          	cmpl   $0x0,0x38(%ebp)
416fd8:	8b 4c 24 10          	mov    0x10(%esp),%ecx
416fdc:	0f 84 bb 00 00 00    	je     0x41709d
416fe2:	8b 44 24 54          	mov    0x54(%esp),%eax
416fe6:	8b 30                	mov    (%eax),%esi
416fe8:	03 74 24 58          	add    0x58(%esp),%esi
416fec:	83 c1 02             	add    $0x2,%ecx
416fef:	89 4c 24 10          	mov    %ecx,0x10(%esp)
416ff3:	8b 44 24 5c          	mov    0x5c(%esp),%eax
416ff7:	83 c3 02             	add    $0x2,%ebx
416ffa:	89 5c 24 28          	mov    %ebx,0x28(%esp)
416ffe:	e9 5f fe ff ff       	jmp    0x416e62
417003:	0f b7 5e 04          	movzwl 0x4(%esi),%ebx
417007:	8b 47 24             	mov    0x24(%edi),%eax
41700a:	89 44 24 68          	mov    %eax,0x68(%esp)
41700e:	33 c0                	xor    %eax,%eax
417010:	66 89 44 24 6e       	mov    %ax,0x6e(%esp)
417015:	8d 44 24 68          	lea    0x68(%esp),%eax
417019:	89 5c 24 50          	mov    %ebx,0x50(%esp)
41701d:	66 89 5c 24 6c       	mov    %bx,0x6c(%esp)
417022:	89 47 24             	mov    %eax,0x24(%edi)
417025:	e9 11 fe ff ff       	jmp    0x416e3b
41702a:	8b 47 24             	mov    0x24(%edi),%eax
41702d:	33 d2                	xor    %edx,%edx
41702f:	66 39 50 06          	cmp    %dx,0x6(%eax)
417033:	0f 85 53 ab 03 00    	jne    0x451b8c
417039:	8b 4c 24 10          	mov    0x10(%esp),%ecx
41703d:	8b 47 24             	mov    0x24(%edi),%eax
417040:	8b 00                	mov    (%eax),%eax
417042:	89 47 24             	mov    %eax,0x24(%edi)
417045:	e9 2e ff ff ff       	jmp    0x416f78
41704a:	8b 47 40             	mov    0x40(%edi),%eax
41704d:	89 44 24 40          	mov    %eax,0x40(%esp)
417051:	e9 7e fe ff ff       	jmp    0x416ed4
417056:	8b 4c 24 38          	mov    0x38(%esp),%ecx
41705a:	8b 44 24 44          	mov    0x44(%esp),%eax
41705e:	8b 54 24 48          	mov    0x48(%esp),%edx
417062:	85 c9                	test   %ecx,%ecx
417064:	79 59                	jns    0x4170bf
417066:	85 c0                	test   %eax,%eax
417068:	78 63                	js     0x4170cd
41706a:	8b 4c 24 2c          	mov    0x2c(%esp),%ecx
41706e:	85 c9                	test   %ecx,%ecx
417070:	79 5f                	jns    0x4170d1
417072:	8b c8                	mov    %eax,%ecx
417074:	89 54 24 30          	mov    %edx,0x30(%esp)
417078:	89 4c 24 2c          	mov    %ecx,0x2c(%esp)
41707c:	8b 5c 24 14          	mov    0x14(%esp),%ebx
417080:	8b c1                	mov    %ecx,%eax
417082:	33 c3                	xor    %ebx,%eax
417084:	a9 fd ff ff ff       	test   $0xfffffffd,%eax
417089:	74 69                	je     0x4170f4
41708b:	83 4c 24 14 ff       	orl    $0xffffffff,0x14(%esp)
417090:	8b 54 24 20          	mov    0x20(%esp),%edx
417094:	8b 44 24 18          	mov    0x18(%esp),%eax
417098:	e9 73 fe ff ff       	jmp    0x416f10
41709d:	6a 77                	push   $0x77
41709f:	58                   	pop    %eax
4170a0:	66 89 06             	mov    %ax,(%esi)
4170a3:	8b c6                	mov    %esi,%eax
4170a5:	2b 44 24 18          	sub    0x18(%esp),%eax
4170a9:	d1 f8                	sar    $1,%eax
4170ab:	66 89 46 02          	mov    %ax,0x2(%esi)
4170af:	89 74 24 18          	mov    %esi,0x18(%esp)
4170b3:	89 74 24 74          	mov    %esi,0x74(%esp)
4170b7:	83 c6 04             	add    $0x4,%esi
4170ba:	e9 34 ff ff ff       	jmp    0x416ff3
4170bf:	39 54 24 34          	cmp    %edx,0x34(%esp)
4170c3:	75 12                	jne    0x4170d7
4170c5:	3b c8                	cmp    %eax,%ecx
4170c7:	75 0e                	jne    0x4170d7
4170c9:	85 c9                	test   %ecx,%ecx
4170cb:	78 99                	js     0x417066
4170cd:	8b 4c 24 2c          	mov    0x2c(%esp),%ecx
4170d1:	8b 54 24 30          	mov    0x30(%esp),%edx
4170d5:	eb a5                	jmp    0x41707c
4170d7:	8b 5c 24 14          	mov    0x14(%esp),%ebx
4170db:	85 db                	test   %ebx,%ebx
4170dd:	79 0c                	jns    0x4170eb
4170df:	8b 5c 24 34          	mov    0x34(%esp),%ebx
4170e3:	89 5c 24 24          	mov    %ebx,0x24(%esp)
4170e7:	89 4c 24 14          	mov    %ecx,0x14(%esp)
4170eb:	83 c9 ff             	or     $0xffffffff,%ecx
4170ee:	89 4c 24 38          	mov    %ecx,0x38(%esp)
4170f2:	eb d5                	jmp    0x4170c9
4170f4:	39 54 24 24          	cmp    %edx,0x24(%esp)
4170f8:	75 91                	jne    0x41708b
4170fa:	0b d9                	or     %ecx,%ebx
4170fc:	89 54 24 24          	mov    %edx,0x24(%esp)
417100:	89 5c 24 14          	mov    %ebx,0x14(%esp)
417104:	eb 8a                	jmp    0x417090
417106:	89 47 40             	mov    %eax,0x40(%edi)
417109:	e9 62 fd ff ff       	jmp    0x416e70
41710e:	55                   	push   %ebp
41710f:	8b ec                	mov    %esp,%ebp
417111:	81 ec 84 01 00 00    	sub    $0x184,%esp
417117:	8b c2                	mov    %edx,%eax
417119:	89 8d e0 fe ff ff    	mov    %ecx,-0x120(%ebp)
41711f:	8b 09                	mov    (%ecx),%ecx
417121:	89 85 c0 fe ff ff    	mov    %eax,-0x140(%ebp)
417127:	53                   	push   %ebx
417128:	8b 10                	mov    (%eax),%edx
41712a:	8b c1                	mov    %ecx,%eax
41712c:	c1 e8 0b             	shr    $0xb,%eax
41712f:	83 e0 01             	and    $0x1,%eax
417132:	c7 45 f4 01 00 00 00 	movl   $0x1,-0xc(%ebp)
417139:	89 45 c4             	mov    %eax,-0x3c(%ebp)
41713c:	8b c1                	mov    %ecx,%eax
41713e:	c1 e8 09             	shr    $0x9,%eax
417141:	56                   	push   %esi
417142:	8b 75 08             	mov    0x8(%ebp),%esi
417145:	83 e0 01             	and    $0x1,%eax
417148:	89 85 24 ff ff ff    	mov    %eax,-0xdc(%ebp)
41714e:	83 f0 01             	xor    $0x1,%eax
417151:	57                   	push   %edi
417152:	33 ff                	xor    %edi,%edi
417154:	89 85 18 ff ff ff    	mov    %eax,-0xe8(%ebp)
41715a:	8b 36                	mov    (%esi),%esi
41715c:	8b df                	mov    %edi,%ebx
41715e:	6a fe                	push   $0xfffffffe
417160:	58                   	pop    %eax
417161:	89 45 a8             	mov    %eax,-0x58(%ebp)
417164:	89 45 94             	mov    %eax,-0x6c(%ebp)
417167:	89 45 ac             	mov    %eax,-0x54(%ebp)
41716a:	89 45 d4             	mov    %eax,-0x2c(%ebp)
41716d:	0f be c1             	movsbl %cl,%eax
417170:	23 45 f4             	and    -0xc(%ebp),%eax
417173:	89 7d b0             	mov    %edi,-0x50(%ebp)
417176:	89 7d c0             	mov    %edi,-0x40(%ebp)
417179:	89 4d cc             	mov    %ecx,-0x34(%ebp)
41717c:	89 bd 64 ff ff ff    	mov    %edi,-0x9c(%ebp)
417182:	89 bd 7c ff ff ff    	mov    %edi,-0x84(%ebp)
417188:	89 55 f8             	mov    %edx,-0x8(%ebp)
41718b:	89 95 58 ff ff ff    	mov    %edx,-0xa8(%ebp)
417191:	89 95 50 ff ff ff    	mov    %edx,-0xb0(%ebp)
417197:	89 7d d0             	mov    %edi,-0x30(%ebp)
41719a:	89 bd 68 ff ff ff    	mov    %edi,-0x98(%ebp)
4171a0:	89 75 fc             	mov    %esi,-0x4(%ebp)
4171a3:	89 7d a0             	mov    %edi,-0x60(%ebp)
4171a6:	89 5d f0             	mov    %ebx,-0x10(%ebp)
4171a9:	89 7d 88             	mov    %edi,-0x78(%ebp)
4171ac:	89 bd 78 ff ff ff    	mov    %edi,-0x88(%ebp)
4171b2:	89 7d d8             	mov    %edi,-0x28(%ebp)
4171b5:	89 7d 84             	mov    %edi,-0x7c(%ebp)
4171b8:	89 7d a4             	mov    %edi,-0x5c(%ebp)
4171bb:	89 7d 9c             	mov    %edi,-0x64(%ebp)
4171be:	89 85 74 ff ff ff    	mov    %eax,-0x8c(%ebp)
4171c4:	c7 85 4c ff ff ff ff 	movl   $0xff,-0xb4(%ebp)
4171cb:	00 00 00
4171ce:	c7 85 d4 fe ff ff 00 	movl   $0xfc00,-0x12c(%ebp)
4171d5:	fc 00 00
4171d8:	c7 85 b8 fe ff ff 00 	movl   $0xdc00,-0x148(%ebp)
4171df:	dc 00 00
4171e2:	c7 85 a8 fe ff ff 2b 	movl   $0x2b,-0x158(%ebp)
4171e9:	00 00 00
4171ec:	c7 85 d8 fe ff ff 7b 	movl   $0x7b,-0x128(%ebp)
4171f3:	00 00 00
4171f6:	c7 85 1c ff ff ff 30 	movl   $0x30,-0xe4(%ebp)
4171fd:	00 00 00
417200:	c7 85 e8 fe ff ff 29 	movl   $0x29,-0x118(%ebp)
417207:	00 00 00
41720a:	c7 85 70 ff ff ff 39 	movl   $0x39,-0x90(%ebp)
417211:	00 00 00
417214:	c7 85 f0 fe ff ff 3c 	movl   $0x3c,-0x110(%ebp)
41721b:	00 00 00
41721e:	c7 85 bc fe ff ff 52 	movl   $0x52,-0x144(%ebp)
417225:	00 00 00
417228:	c7 85 20 ff ff ff 27 	movl   $0x27,-0xe0(%ebp)
41722f:	00 00 00
417232:	c7 85 ac fe ff ff 2d 	movl   $0x2d,-0x154(%ebp)
417239:	00 00 00
41723c:	c7 85 00 ff ff ff 10 	movl   $0x10,-0x100(%ebp)
417243:	00 00 00
417246:	c7 85 ec fe ff ff 17 	movl   $0x17,-0x114(%ebp)
41724d:	00 00 00
417250:	c7 85 b4 fe ff ff 20 	movl   $0x20,-0x14c(%ebp)
417257:	00 00 00
41725a:	c7 85 fc fe ff ff 1d 	movl   $0x1d,-0x104(%ebp)
417261:	00 00 00
417264:	c7 85 cc fe ff ff 1e 	movl   $0x1e,-0x134(%ebp)
41726b:	00 00 00
41726e:	c7 85 f4 fe ff ff 1f 	movl   $0x1f,-0x10c(%ebp)
417275:	00 00 00
417278:	c7 85 c4 fe ff ff 6e 	movl   $0x6e,-0x13c(%ebp)
41727f:	00 00 00
417282:	c7 85 e4 fe ff ff 6f 	movl   $0x6f,-0x11c(%ebp)
417289:	00 00 00
41728c:	c7 85 b0 fe ff ff 70 	movl   $0x70,-0x150(%ebp)
417293:	00 00 00
417296:	c7 85 dc fe ff ff 71 	movl   $0x71,-0x124(%ebp)
41729d:	00 00 00
4172a0:	c7 85 04 ff ff ff 73 	movl   $0x73,-0xfc(%ebp)
4172a7:	00 00 00
4172aa:	c7 85 f8 fe ff ff 0f 	movl   $0xf,-0x108(%ebp)
4172b1:	00 00 00
4172b4:	0f b7 3e             	movzwl (%esi),%edi
4172b7:	89 7d e8             	mov    %edi,-0x18(%ebp)
4172ba:	85 ff                	test   %edi,%edi
4172bc:	0f 84 65 09 00 00    	je     0x417c27
4172c2:	8b 45 28             	mov    0x28(%ebp),%eax
4172c5:	8b 48 3c             	mov    0x3c(%eax),%ecx
4172c8:	8b 40 10             	mov    0x10(%eax),%eax
4172cb:	8d 04 48             	lea    (%eax,%ecx,2),%eax
4172ce:	05 38 ff ff ff       	add    $0xffffff38,%eax
4172d3:	83 7d 2c 00          	cmpl   $0x0,0x2c(%ebp)
4172d7:	74 4f                	je     0x417328
4172d9:	3b d0                	cmp    %eax,%edx
4172db:	0f 87 c8 d3 03 00    	ja     0x4546a9
4172e1:	8b 85 58 ff ff ff    	mov    -0xa8(%ebp),%eax
4172e7:	3b d0                	cmp    %eax,%edx
4172e9:	0f 82 5b 0f 00 00    	jb     0x41824a
4172ef:	8b ca                	mov    %edx,%ecx
4172f1:	2b c8                	sub    %eax,%ecx
4172f3:	8b 45 2c             	mov    0x2c(%ebp),%eax
4172f6:	d1 f9                	sar    $1,%ecx
4172f8:	8b 10                	mov    (%eax),%edx
4172fa:	b8 eb ff ff 7f       	mov    $0x7fffffeb,%eax
4172ff:	2b c2                	sub    %edx,%eax
417301:	3b c1                	cmp    %ecx,%eax
417303:	0f 8c f8 d2 03 00    	jl     0x454601
417309:	8d 04 0a             	lea    (%edx,%ecx,1),%eax
41730c:	8b 4d 2c             	mov    0x2c(%ebp),%ecx
41730f:	89 01                	mov    %eax,(%ecx)
417311:	85 db                	test   %ebx,%ebx
417313:	74 21                	je     0x417336
417315:	8b 8d 50 ff ff ff    	mov    -0xb0(%ebp),%ecx
41731b:	3b d9                	cmp    %ecx,%ebx
41731d:	0f 87 94 02 00 00    	ja     0x4175b7
417323:	8b 55 f8             	mov    -0x8(%ebp),%edx
417326:	eb 17                	jmp    0x41733f
417328:	8b 4d 28             	mov    0x28(%ebp),%ecx
41732b:	39 41 20             	cmp    %eax,0x20(%ecx)
41732e:	0f 87 75 d3 03 00    	ja     0x4546a9
417334:	eb 12                	jmp    0x417348
417336:	8b 95 50 ff ff ff    	mov    -0xb0(%ebp),%edx
41733c:	89 55 f8             	mov    %edx,-0x8(%ebp)
41733f:	8b 4d 28             	mov    0x28(%ebp),%ecx
417342:	89 95 58 ff ff ff    	mov    %edx,-0xa8(%ebp)
417348:	83 7d d0 00          	cmpl   $0x0,-0x30(%ebp)
41734c:	0f 85 c7 a8 03 00    	jne    0x451c19
417352:	8b 55 cc             	mov    -0x34(%ebp),%edx
417355:	8b da                	mov    %edx,%ebx
417357:	83 e3 08             	and    $0x8,%ebx
41735a:	89 5d 98             	mov    %ebx,-0x68(%ebp)
41735d:	0f 85 f1 0e 00 00    	jne    0x418254
417363:	6a 2a                	push   $0x2a
417365:	58                   	pop    %eax
417366:	3b f8                	cmp    %eax,%edi
417368:	0f 84 0f 05 00 00    	je     0x41787d
41736e:	6a 2b                	push   $0x2b
417370:	58                   	pop    %eax
417371:	3b f8                	cmp    %eax,%edi
417373:	0f 84 04 05 00 00    	je     0x41787d
417379:	6a 3f                	push   $0x3f
41737b:	58                   	pop    %eax
41737c:	3b f8                	cmp    %eax,%edi
41737e:	0f 84 f9 04 00 00    	je     0x41787d
417384:	6a 7b                	push   $0x7b
417386:	58                   	pop    %eax
417387:	3b f8                	cmp    %eax,%edi
417389:	0f 84 fa a9 03 00    	je     0x451d89
41738f:	33 c0                	xor    %eax,%eax