438f16:	0f b7 00             	movzwl (%eax),%eax
438f19:	0f af c8             	imul   %eax,%ecx
438f1c:	89 4d a4             	mov    %ecx,-0x5c(%ebp)
438f1f:	03 4a fc             	add    -0x4(%edx),%ecx
438f22:	3b 4a fc             	cmp    -0x4(%edx),%ecx
438f25:	72 05                	jb     0x438f2c
438f27:	3b 4d a4             	cmp    -0x5c(%ebp),%ecx
438f2a:	73 05                	jae    0x438f31
438f2c:	33 c0                	xor    %eax,%eax
438f2e:	40                   	inc    %eax
438f2f:	eb 03                	jmp    0x438f34
438f31:	8b 45 88             	mov    -0x78(%ebp),%eax
438f34:	89 4a fc             	mov    %ecx,-0x4(%edx)
438f37:	85 c0                	test   %eax,%eax
438f39:	74 03                	je     0x438f3e
438f3b:	66 ff 02             	incw   (%edx)
438f3e:	83 6d 9c 02          	subl   $0x2,-0x64(%ebp)
438f42:	83 c6 02             	add    $0x2,%esi
438f45:	4f                   	dec    %edi
438f46:	85 ff                	test   %edi,%edi
438f48:	7f bd                	jg     0x438f07
438f4a:	8b 4d b0             	mov    -0x50(%ebp),%ecx
438f4d:	8b 7d 98             	mov    -0x68(%ebp),%edi
438f50:	8b 45 8c             	mov    -0x74(%ebp),%eax
438f53:	83 c2 02             	add    $0x2,%edx
438f56:	40                   	inc    %eax
438f57:	4f                   	dec    %edi
438f58:	89 45 8c             	mov    %eax,-0x74(%ebp)
438f5b:	89 7d 98             	mov    %edi,-0x68(%ebp)
438f5e:	85 ff                	test   %edi,%edi
438f60:	7f 92                	jg     0x438ef4
438f62:	8b 75 94             	mov    -0x6c(%ebp),%esi
438f65:	8b 55 dc             	mov    -0x24(%ebp),%edx
438f68:	81 c6 02 c0 00 00    	add    $0xc002,%esi
438f6e:	8b 7d d4             	mov    -0x2c(%ebp),%edi
438f71:	89 55 b0             	mov    %edx,-0x50(%ebp)
438f74:	66 85 f6             	test   %si,%si
438f77:	7e 3b                	jle    0x438fb4
438f79:	85 d2                	test   %edx,%edx
438f7b:	78 32                	js     0x438faf
438f7d:	8b 45 d8             	mov    -0x28(%ebp),%eax
438f80:	8b d7                	mov    %edi,%edx
438f82:	c1 ea 1f             	shr    $0x1f,%edx
438f85:	8b c8                	mov    %eax,%ecx
438f87:	03 c0                	add    %eax,%eax
438f89:	c1 e9 1f             	shr    $0x1f,%ecx
438f8c:	0b c2                	or     %edx,%eax
438f8e:	03 ff                	add    %edi,%edi
438f90:	8b 55 b0             	mov    -0x50(%ebp),%edx
438f93:	89 45 d8             	mov    %eax,-0x28(%ebp)
438f96:	03 d2                	add    %edx,%edx
438f98:	b8 ff ff 00 00       	mov    $0xffff,%eax
438f9d:	89 7d d4             	mov    %edi,-0x2c(%ebp)
438fa0:	0b d1                	or     %ecx,%edx
438fa2:	03 f0                	add    %eax,%esi
438fa4:	89 55 b0             	mov    %edx,-0x50(%ebp)
438fa7:	89 55 dc             	mov    %edx,-0x24(%ebp)
438faa:	66 85 f6             	test   %si,%si
438fad:	7f ca                	jg     0x438f79
438faf:	66 85 f6             	test   %si,%si
438fb2:	7f 69                	jg     0x43901d
438fb4:	b8 ff ff 00 00       	mov    $0xffff,%eax
438fb9:	03 f0                	add    %eax,%esi
438fbb:	66 85 f6             	test   %si,%si
438fbe:	79 5d                	jns    0x43901d
438fc0:	8b 5d 84             	mov    -0x7c(%ebp),%ebx
438fc3:	8b c6                	mov    %esi,%eax
438fc5:	f7 d8                	neg    %eax
438fc7:	0f b7 c0             	movzwl %ax,%eax
438fca:	89 45 98             	mov    %eax,-0x68(%ebp)
438fcd:	03 f0                	add    %eax,%esi
438fcf:	f6 45 d4 01          	testb  $0x1,-0x2c(%ebp)
438fd3:	74 01                	je     0x438fd6
438fd5:	43                   	inc    %ebx
438fd6:	8b 4d d8             	mov    -0x28(%ebp),%ecx
438fd9:	8b c2                	mov    %edx,%eax
438fdb:	c1 e0 1f             	shl    $0x1f,%eax
438fde:	89 4d b0             	mov    %ecx,-0x50(%ebp)
438fe1:	d1 6d b0             	shrl   $1,-0x50(%ebp)
438fe4:	09 45 b0             	or     %eax,-0x50(%ebp)
438fe7:	8b 45 b0             	mov    -0x50(%ebp),%eax
438fea:	c1 e1 1f             	shl    $0x1f,%ecx
438fed:	d1 ef                	shr    $1,%edi
438fef:	d1 ea                	shr    $1,%edx
438ff1:	0b f9                	or     %ecx,%edi
438ff3:	ff 4d 98             	decl   -0x68(%ebp)
438ff6:	89 55 dc             	mov    %edx,-0x24(%ebp)
438ff9:	89 45 d8             	mov    %eax,-0x28(%ebp)
438ffc:	89 7d d4             	mov    %edi,-0x2c(%ebp)
438fff:	75 ce                	jne    0x438fcf
439001:	6a 00                	push   $0x0
439003:	85 db                	test   %ebx,%ebx
439005:	89 55 b0             	mov    %edx,-0x50(%ebp)
439008:	5b                   	pop    %ebx
439009:	74 12                	je     0x43901d
43900b:	66 8b c7             	mov    %di,%ax
43900e:	33 ff                	xor    %edi,%edi
439010:	47                   	inc    %edi
439011:	66 0b c7             	or     %di,%ax
439014:	66 89 45 d4          	mov    %ax,-0x2c(%ebp)
439018:	8b 7d d4             	mov    -0x2c(%ebp),%edi
43901b:	eb 04                	jmp    0x439021
43901d:	66 8b 45 d4          	mov    -0x2c(%ebp),%ax
439021:	ba 00 80 00 00       	mov    $0x8000,%edx
439026:	66 3b c2             	cmp    %dx,%ax
439029:	77 0e                	ja     0x439039
43902b:	81 e7 ff ff 01 00    	and    $0x1ffff,%edi
439031:	81 ff 00 80 01 00    	cmp    $0x18000,%edi
439037:	75 40                	jne    0x439079
439039:	8b 45 d6             	mov    -0x2a(%ebp),%eax
43903c:	83 f8 ff             	cmp    $0xffffffff,%eax
43903f:	75 34                	jne    0x439075
439041:	8b 45 da             	mov    -0x26(%ebp),%eax
439044:	89 5d d6             	mov    %ebx,-0x2a(%ebp)
439047:	83 f8 ff             	cmp    $0xffffffff,%eax
43904a:	75 20                	jne    0x43906c
43904c:	66 8b 45 de          	mov    -0x22(%ebp),%ax
439050:	b9 ff ff 00 00       	mov    $0xffff,%ecx
439055:	89 5d da             	mov    %ebx,-0x26(%ebp)
439058:	66 3b c1             	cmp    %cx,%ax
43905b:	75 07                	jne    0x439064
43905d:	66 89 55 de          	mov    %dx,-0x22(%ebp)
439061:	46                   	inc    %esi
439062:	eb 0c                	jmp    0x439070
439064:	66 40                	inc    %ax
439066:	66 89 45 de          	mov    %ax,-0x22(%ebp)
43906a:	eb 04                	jmp    0x439070
43906c:	40                   	inc    %eax
43906d:	89 45 da             	mov    %eax,-0x26(%ebp)
439070:	8b 4d dc             	mov    -0x24(%ebp),%ecx
439073:	eb 07                	jmp    0x43907c
439075:	40                   	inc    %eax
439076:	89 45 d6             	mov    %eax,-0x2a(%ebp)
439079:	8b 4d b0             	mov    -0x50(%ebp),%ecx
43907c:	8b 55 ac             	mov    -0x54(%ebp),%edx
43907f:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
439084:	66 3b f0             	cmp    %ax,%si
439087:	72 1f                	jb     0x4390a8
439089:	33 c0                	xor    %eax,%eax
43908b:	89 5d c8             	mov    %ebx,-0x38(%ebp)
43908e:	66 39 45 a0          	cmp    %ax,-0x60(%ebp)
439092:	89 5d c4             	mov    %ebx,-0x3c(%ebp)
439095:	0f 94 c0             	sete   %al
439098:	48                   	dec    %eax
439099:	25 00 00 00 80       	and    $0x80000000,%eax
43909e:	05 00 80 ff 7f       	add    $0x7fff8000,%eax
4390a3:	89 45 cc             	mov    %eax,-0x34(%ebp)
4390a6:	eb 3a                	jmp    0x4390e2
4390a8:	66 8b 45 d6          	mov    -0x2a(%ebp),%ax
4390ac:	0b 75 a0             	or     -0x60(%ebp),%esi
4390af:	66 89 45 c4          	mov    %ax,-0x3c(%ebp)
4390b3:	8b 45 d8             	mov    -0x28(%ebp),%eax
4390b6:	89 45 c6             	mov    %eax,-0x3a(%ebp)
4390b9:	89 4d ca             	mov    %ecx,-0x36(%ebp)
4390bc:	66 89 75 ce          	mov    %si,-0x32(%ebp)
4390c0:	eb 20                	jmp    0x4390e2
4390c2:	33 c0                	xor    %eax,%eax
4390c4:	66 39 45 a0          	cmp    %ax,-0x60(%ebp)
4390c8:	0f 94 c0             	sete   %al
4390cb:	48                   	dec    %eax
4390cc:	25 00 00 00 80       	and    $0x80000000,%eax
4390d1:	05 00 80 ff 7f       	add    $0x7fff8000,%eax
4390d6:	89 45 cc             	mov    %eax,-0x34(%ebp)
4390d9:	89 5d c8             	mov    %ebx,-0x38(%ebp)
4390dc:	89 5d c4             	mov    %ebx,-0x3c(%ebp)
4390df:	8b 55 ac             	mov    -0x54(%ebp),%edx
4390e2:	8b 75 b4             	mov    -0x4c(%ebp),%esi
4390e5:	85 f6                	test   %esi,%esi
4390e7:	0f 85 13 fd ff ff    	jne    0x438e00
4390ed:	8b 45 cc             	mov    -0x34(%ebp),%eax
4390f0:	0f b7 4d c4          	movzwl -0x3c(%ebp),%ecx
4390f4:	8b 55 c6             	mov    -0x3a(%ebp),%edx
4390f7:	8b 75 ca             	mov    -0x36(%ebp),%esi
4390fa:	c1 e8 10             	shr    $0x10,%eax
4390fd:	eb 32                	jmp    0x439131
4390ff:	33 ff                	xor    %edi,%edi
439101:	8b cb                	mov    %ebx,%ecx
439103:	8b c3                	mov    %ebx,%eax
439105:	8b f3                	mov    %ebx,%esi
439107:	8b d3                	mov    %ebx,%edx
439109:	8d 5f 01             	lea    0x1(%edi),%ebx
43910c:	eb 23                	jmp    0x439131
43910e:	b8 ff 7f 00 00       	mov    $0x7fff,%eax
439113:	be 00 00 00 80       	mov    $0x80000000,%esi
439118:	6a 02                	push   $0x2
43911a:	eb 10                	jmp    0x43912c
43911c:	8b cb                	mov    %ebx,%ecx
43911e:	8b c3                	mov    %ebx,%eax
439120:	8b f3                	mov    %ebx,%esi
439122:	8b d3                	mov    %ebx,%edx
439124:	eb 0b                	jmp    0x439131
439126:	8b c3                	mov    %ebx,%eax
439128:	8b f3                	mov    %ebx,%esi
43912a:	6a 04                	push   $0x4
43912c:	8b cb                	mov    %ebx,%ecx
43912e:	8b d3                	mov    %ebx,%edx
439130:	5b                   	pop    %ebx
439131:	8b 7d 80             	mov    -0x80(%ebp),%edi
439134:	0b 45 90             	or     -0x70(%ebp),%eax
439137:	66 89 47 0a          	mov    %ax,0xa(%edi)
43913b:	8b c3                	mov    %ebx,%eax
43913d:	66 89 0f             	mov    %cx,(%edi)
439140:	89 57 02             	mov    %edx,0x2(%edi)
439143:	89 77 06             	mov    %esi,0x6(%edi)
439146:	8b 4d fc             	mov    -0x4(%ebp),%ecx
439149:	5f                   	pop    %edi
43914a:	5e                   	pop    %esi
43914b:	33 cd                	xor    %ebp,%ecx
43914d:	5b                   	pop    %ebx
43914e:	e8 e3 36 ff ff       	call   0x42c836
439153:	8b e5                	mov    %ebp,%esp
439155:	5d                   	pop    %ebp
439156:	c3                   	ret
439157:	75 8a                	jne    0x4390e3
439159:	43                   	inc    %ebx
43915a:	00 c7                	add    %al,%bh
43915c:	8a 43 00             	mov    0x0(%ebx),%al
43915f:	21 8b 43 00 52 8b    	and    %ecx,-0x74adffbd(%ebx)
439165:	43                   	inc    %ebx
439166:	00 b3 8b 43 00 36    	add    %dh,0x3600438b(%ebx)
43916c:	8c 43 00             	mov    %es,0x0(%ebx)
43916f:	4f                   	dec    %edi
439170:	8c 43 00             	mov    %es,0x0(%ebx)
439173:	b2 8c                	mov    $0x8c,%dl
439175:	43                   	inc    %ebx
439176:	00 94 8c 43 00 f4 8c 	add    %dl,-0x730bffbd(%esp,%ecx,4)
43917d:	43                   	inc    %ebx
43917e:	00 e9                	add    %ch,%cl
439180:	8c 43 00             	mov    %es,0x0(%ebx)
439183:	be 8c 43 00 55       	mov    $0x5500438c,%esi
439188:	8b ec                	mov    %esp,%ebp
43918a:	51                   	push   %ecx
43918b:	56                   	push   %esi
43918c:	8b 75 0c             	mov    0xc(%ebp),%esi
43918f:	57                   	push   %edi
439190:	56                   	push   %esi
439191:	e8 80 b7 fe ff       	call   0x424916
439196:	59                   	pop    %ecx
439197:	8b 4e 0c             	mov    0xc(%esi),%ecx
43919a:	8b f8                	mov    %eax,%edi
43919c:	f6 c1 82             	test   $0x82,%cl
43919f:	75 19                	jne    0x4391ba
4391a1:	e8 c2 fb fe ff       	call   0x428d68
4391a6:	c7 00 09 00 00 00    	movl   $0x9,(%eax)
4391ac:	83 4e 0c 20          	orl    $0x20,0xc(%esi)
4391b0:	b8 ff ff 00 00       	mov    $0xffff,%eax
4391b5:	e9 29 01 00 00       	jmp    0x4392e3
4391ba:	f6 c1 40             	test   $0x40,%cl
4391bd:	74 0d                	je     0x4391cc
4391bf:	e8 a4 fb fe ff       	call   0x428d68
4391c4:	c7 00 22 00 00 00    	movl   $0x22,(%eax)
4391ca:	eb e0                	jmp    0x4391ac
4391cc:	53                   	push   %ebx
4391cd:	33 db                	xor    %ebx,%ebx
4391cf:	f6 c1 01             	test   $0x1,%cl
4391d2:	74 13                	je     0x4391e7
4391d4:	89 5e 04             	mov    %ebx,0x4(%esi)
4391d7:	f6 c1 10             	test   $0x10,%cl
4391da:	74 7f                	je     0x43925b
4391dc:	8b 46 08             	mov    0x8(%esi),%eax
4391df:	83 e1 fe             	and    $0xfffffffe,%ecx
4391e2:	89 06                	mov    %eax,(%esi)
4391e4:	89 4e 0c             	mov    %ecx,0xc(%esi)
4391e7:	8b 46 0c             	mov    0xc(%esi),%eax
4391ea:	83 e0 ef             	and    $0xffffffef,%eax
4391ed:	89 5e 04             	mov    %ebx,0x4(%esi)
4391f0:	83 c8 02             	or     $0x2,%eax
4391f3:	89 46 0c             	mov    %eax,0xc(%esi)
4391f6:	a9 0c 01 00 00       	test   $0x10c,%eax
4391fb:	75 2a                	jne    0x439227
4391fd:	e8 46 dc fe ff       	call   0x426e48
439202:	83 c0 20             	add    $0x20,%eax
439205:	3b f0                	cmp    %eax,%esi
439207:	74 0c                	je     0x439215
439209:	e8 3a dc fe ff       	call   0x426e48
43920e:	83 c0 40             	add    $0x40,%eax
439211:	3b f0                	cmp    %eax,%esi
439213:	75 0b                	jne    0x439220
439215:	57                   	push   %edi
439216:	e8 a0 cc ff ff       	call   0x435ebb
43921b:	59                   	pop    %ecx
43921c:	85 c0                	test   %eax,%eax
43921e:	75 07                	jne    0x439227
439220:	56                   	push   %esi
439221:	e8 0e d0 ff ff       	call   0x436234
439226:	59                   	pop    %ecx
439227:	f7 46 0c 08 01 00 00 	testl  $0x108,0xc(%esi)
43922e:	74 7d                	je     0x4392ad
439230:	8b 56 08             	mov    0x8(%esi),%edx
439233:	8b 0e                	mov    (%esi),%ecx
439235:	2b ca                	sub    %edx,%ecx
439237:	89 4d 0c             	mov    %ecx,0xc(%ebp)
43923a:	8d 42 02             	lea    0x2(%edx),%eax
43923d:	89 06                	mov    %eax,(%esi)
43923f:	8b 46 18             	mov    0x18(%esi),%eax
439242:	83 e8 02             	sub    $0x2,%eax
439245:	89 46 04             	mov    %eax,0x4(%esi)
439248:	85 c9                	test   %ecx,%ecx
43924a:	7e 17                	jle    0x439263
43924c:	51                   	push   %ecx
43924d:	52                   	push   %edx
43924e:	57                   	push   %edi
43924f:	e8 72 48 ff ff       	call   0x42dac6
439254:	83 c4 0c             	add    $0xc,%esp
439257:	8b d8                	mov    %eax,%ebx
439259:	eb 47                	jmp    0x4392a2
43925b:	83 c9 20             	or     $0x20,%ecx
43925e:	89 4e 0c             	mov    %ecx,0xc(%esi)
439261:	eb 75                	jmp    0x4392d8
439263:	83 ff ff             	cmp    $0xffffffff,%edi
439266:	74 1b                	je     0x439283
439268:	83 ff fe             	cmp    $0xfffffffe,%edi
43926b:	74 16                	je     0x439283
43926d:	8b c7                	mov    %edi,%eax
43926f:	8b cf                	mov    %edi,%ecx
439271:	c1 f8 05             	sar    $0x5,%eax
439274:	83 e1 1f             	and    $0x1f,%ecx
439277:	c1 e1 06             	shl    $0x6,%ecx
43927a:	03 0c 85 e0 49 4c 00 	add    0x4c49e0(,%eax,4),%ecx
439281:	eb 05                	jmp    0x439288
439283:	b9 90 fe 4b 00       	mov    $0x4bfe90,%ecx
439288:	f6 41 04 20          	testb  $0x20,0x4(%ecx)
43928c:	74 14                	je     0x4392a2
43928e:	6a 02                	push   $0x2
439290:	53                   	push   %ebx
439291:	53                   	push   %ebx
439292:	57                   	push   %edi
439293:	e8 7d 87 ff ff       	call   0x431a15
439298:	23 c2                	and    %edx,%eax
43929a:	83 c4 10             	add    $0x10,%esp
43929d:	83 f8 ff             	cmp    $0xffffffff,%eax
4392a0:	74 32                	je     0x4392d4
4392a2:	8b 46 08             	mov    0x8(%esi),%eax
4392a5:	8b 4d 08             	mov    0x8(%ebp),%ecx
4392a8:	66 89 08             	mov    %cx,(%eax)
4392ab:	eb 22                	jmp    0x4392cf
4392ad:	8b 45 08             	mov    0x8(%ebp),%eax
4392b0:	66 89 45 fc          	mov    %ax,-0x4(%ebp)
4392b4:	8d 45 fc             	lea    -0x4(%ebp),%eax
4392b7:	6a 02                	push   $0x2
4392b9:	50                   	push   %eax
4392ba:	57                   	push   %edi
4392bb:	c7 45 0c 02 00 00 00 	movl   $0x2,0xc(%ebp)
4392c2:	e8 ff 47 ff ff       	call   0x42dac6
4392c7:	8b 4d 08             	mov    0x8(%ebp),%ecx
4392ca:	83 c4 0c             	add    $0xc,%esp
4392cd:	8b d8                	mov    %eax,%ebx
4392cf:	3b 5d 0c             	cmp    0xc(%ebp),%ebx
4392d2:	74 0b                	je     0x4392df
4392d4:	83 4e 0c 20          	orl    $0x20,0xc(%esi)