597f8e:	0f 8c d3 02 00 00    	jl     0x598267
597f94:	89 45 e0             	mov    %eax,-0x20(%ebp)
597f97:	8b 45 08             	mov    0x8(%ebp),%eax
597f9a:	66 83 78 02 00       	cmpw   $0x0,0x2(%eax)
597f9f:	74 2d                	je     0x597fce
597fa1:	8b 45 b0             	mov    -0x50(%ebp),%eax
597fa4:	2b 45 e0             	sub    -0x20(%ebp),%eax
597fa7:	89 85 1c ff ff ff    	mov    %eax,-0xe4(%ebp)
597fad:	db 85 1c ff ff ff    	fildl  -0xe4(%ebp)
597fb3:	8b 45 08             	mov    0x8(%ebp),%eax
597fb6:	dc 48 18             	fmull  0x18(%eax)
597fb9:	e8 0e ad e6 ff       	call   0x402ccc
597fbe:	8b c8                	mov    %eax,%ecx
597fc0:	8b 5d 08             	mov    0x8(%ebp),%ebx
597fc3:	8b 55 08             	mov    0x8(%ebp),%edx
597fc6:	8b 52 08             	mov    0x8(%edx),%edx
597fc9:	8b 43 04             	mov    0x4(%ebx),%eax
597fcc:	ff 13                	call   *(%ebx)
597fce:	8b 45 08             	mov    0x8(%ebp),%eax
597fd1:	8b 40 28             	mov    0x28(%eax),%eax
597fd4:	80 38 00             	cmpb   $0x0,(%eax)
597fd7:	0f 85 8a 02 00 00    	jne    0x598267
597fdd:	8b 45 fc             	mov    -0x4(%ebp),%eax
597fe0:	8b 00                	mov    (%eax),%eax
597fe2:	80 b8 02 01 00 00 01 	cmpb   $0x1,0x102(%eax)
597fe9:	0f 85 ca 00 00 00    	jne    0x5980b9
597fef:	8b 45 fc             	mov    -0x4(%ebp),%eax
597ff2:	8b 00                	mov    (%eax),%eax
597ff4:	80 b8 01 01 00 00 02 	cmpb   $0x2,0x101(%eax)
597ffb:	0f 84 b8 00 00 00    	je     0x5980b9
598001:	8b 45 b4             	mov    -0x4c(%ebp),%eax
598004:	8b 10                	mov    (%eax),%edx
598006:	ff 52 10             	call   *0x10(%edx)
598009:	3c 02                	cmp    $0x2,%al
59800b:	75 20                	jne    0x59802d
59800d:	8b 55 e0             	mov    -0x20(%ebp),%edx
598010:	8b 45 b4             	mov    -0x4c(%ebp),%eax
598013:	8b 08                	mov    (%eax),%ecx
598015:	ff 11                	call   *(%ecx)
598017:	50                   	push   %eax
598018:	8b 45 b4             	mov    -0x4c(%ebp),%eax
59801b:	8b 10                	mov    (%eax),%edx
59801d:	ff 52 0c             	call   *0xc(%edx)
598020:	8b c8                	mov    %eax,%ecx
598022:	8b 45 c0             	mov    -0x40(%ebp),%eax
598025:	5a                   	pop    %edx
598026:	e8 95 fe e6 ff       	call   0x407ec0
59802b:	eb 3f                	jmp    0x59806c
59802d:	8b 55 e0             	mov    -0x20(%ebp),%edx
598030:	8b 45 b4             	mov    -0x4c(%ebp),%eax
598033:	8b 08                	mov    (%eax),%ecx
598035:	ff 11                	call   *(%ecx)
598037:	8b f0                	mov    %eax,%esi
598039:	8b 7d ac             	mov    -0x54(%ebp),%edi
59803c:	85 ff                	test   %edi,%edi
59803e:	7c 2c                	jl     0x59806c
598040:	47                   	inc    %edi
598041:	c7 45 e8 00 00 00 00 	movl   $0x0,-0x18(%ebp)
598048:	8a 46 02             	mov    0x2(%esi),%al
59804b:	c1 e0 10             	shl    $0x10,%eax
59804e:	66 8b 06             	mov    (%esi),%ax
598051:	50                   	push   %eax
598052:	8b 45 ec             	mov    -0x14(%ebp),%eax
598055:	e8 46 7b fa ff       	call   0x53fba0
59805a:	8b 55 c0             	mov    -0x40(%ebp),%edx
59805d:	8b 4d e8             	mov    -0x18(%ebp),%ecx
598060:	88 04 0a             	mov    %al,(%edx,%ecx,1)
598063:	83 c6 03             	add    $0x3,%esi
598066:	ff 45 e8             	incl   -0x18(%ebp)
598069:	4f                   	dec    %edi
59806a:	75 dc                	jne    0x598048
59806c:	83 7d f0 04          	cmpl   $0x4,-0x10(%ebp)
598070:	75 19                	jne    0x59808b
598072:	8b 45 b4             	mov    -0x4c(%ebp),%eax
598075:	8b 10                	mov    (%eax),%edx
598077:	ff 52 0c             	call   *0xc(%edx)
59807a:	8b d0                	mov    %eax,%edx
59807c:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
59807f:	8b 45 c0             	mov    -0x40(%ebp),%eax
598082:	e8 f1 f7 ff ff       	call   0x597878
598087:	8b d8                	mov    %eax,%ebx
598089:	eb 17                	jmp    0x5980a2
59808b:	8b 45 b4             	mov    -0x4c(%ebp),%eax
59808e:	8b 10                	mov    (%eax),%edx
598090:	ff 52 0c             	call   *0xc(%edx)
598093:	8b d0                	mov    %eax,%edx
598095:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
598098:	8b 45 c0             	mov    -0x40(%ebp),%eax
59809b:	e8 a4 f9 ff ff       	call   0x597a44
5980a0:	8b d8                	mov    %eax,%ebx
5980a2:	53                   	push   %ebx
5980a3:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
5980a6:	8b 55 08             	mov    0x8(%ebp),%edx
5980a9:	8b 52 28             	mov    0x28(%edx),%edx
5980ac:	8b 45 f8             	mov    -0x8(%ebp),%eax
5980af:	e8 48 de 05 00       	call   0x5f5efc
5980b4:	e9 a1 01 00 00       	jmp    0x59825a
5980b9:	83 7d f0 08          	cmpl   $0x8,-0x10(%ebp)
5980bd:	0f 85 85 00 00 00    	jne    0x598148
5980c3:	8b 45 b4             	mov    -0x4c(%ebp),%eax
5980c6:	8b 10                	mov    (%eax),%edx
5980c8:	ff 52 10             	call   *0x10(%edx)
5980cb:	3c 02                	cmp    $0x2,%al
5980cd:	75 20                	jne    0x5980ef
5980cf:	8b 55 e0             	mov    -0x20(%ebp),%edx
5980d2:	8b 45 b4             	mov    -0x4c(%ebp),%eax
5980d5:	8b 08                	mov    (%eax),%ecx
5980d7:	ff 11                	call   *(%ecx)
5980d9:	50                   	push   %eax
5980da:	8b 45 b4             	mov    -0x4c(%ebp),%eax
5980dd:	8b 10                	mov    (%eax),%edx
5980df:	ff 52 0c             	call   *0xc(%edx)
5980e2:	8b c8                	mov    %eax,%ecx
5980e4:	8b 45 c0             	mov    -0x40(%ebp),%eax
5980e7:	5a                   	pop    %edx
5980e8:	e8 d3 fd e6 ff       	call   0x407ec0
5980ed:	eb 3f                	jmp    0x59812e
5980ef:	8b 55 e0             	mov    -0x20(%ebp),%edx
5980f2:	8b 45 b4             	mov    -0x4c(%ebp),%eax
5980f5:	8b 08                	mov    (%eax),%ecx
5980f7:	ff 11                	call   *(%ecx)
5980f9:	8b f0                	mov    %eax,%esi
5980fb:	8b 7d ac             	mov    -0x54(%ebp),%edi
5980fe:	85 ff                	test   %edi,%edi
598100:	7c 2c                	jl     0x59812e
598102:	47                   	inc    %edi
598103:	c7 45 e8 00 00 00 00 	movl   $0x0,-0x18(%ebp)
59810a:	8a 46 02             	mov    0x2(%esi),%al
59810d:	c1 e0 10             	shl    $0x10,%eax
598110:	66 8b 06             	mov    (%esi),%ax
598113:	50                   	push   %eax
598114:	8b 45 ec             	mov    -0x14(%ebp),%eax
598117:	e8 84 7a fa ff       	call   0x53fba0
59811c:	8b 55 c0             	mov    -0x40(%ebp),%edx
59811f:	8b 4d e8             	mov    -0x18(%ebp),%ecx
598122:	88 04 0a             	mov    %al,(%edx,%ecx,1)
598125:	83 c6 03             	add    $0x3,%esi
598128:	ff 45 e8             	incl   -0x18(%ebp)
59812b:	4f                   	dec    %edi
59812c:	75 dc                	jne    0x59810a
59812e:	8b 45 b8             	mov    -0x48(%ebp),%eax
598131:	50                   	push   %eax
598132:	8b 4d c0             	mov    -0x40(%ebp),%ecx
598135:	8b 55 08             	mov    0x8(%ebp),%edx
598138:	8b 52 28             	mov    0x28(%edx),%edx
59813b:	8b 45 f8             	mov    -0x8(%ebp),%eax
59813e:	e8 b9 dd 05 00       	call   0x5f5efc
598143:	e9 12 01 00 00       	jmp    0x59825a
598148:	8b 45 b4             	mov    -0x4c(%ebp),%eax
59814b:	8b 10                	mov    (%eax),%edx
59814d:	ff 52 10             	call   *0x10(%edx)
598150:	3c 02                	cmp    $0x2,%al
598152:	75 63                	jne    0x5981b7
598154:	8b 55 e0             	mov    -0x20(%ebp),%edx
598157:	8b 45 b4             	mov    -0x4c(%ebp),%eax
59815a:	8b 08                	mov    (%eax),%ecx
59815c:	ff 11                	call   *(%ecx)
59815e:	8b d8                	mov    %eax,%ebx
598160:	33 c0                	xor    %eax,%eax
598162:	89 45 e8             	mov    %eax,-0x18(%ebp)
598165:	eb 1e                	jmp    0x598185
598167:	8b 45 c0             	mov    -0x40(%ebp),%eax
59816a:	8b 55 e8             	mov    -0x18(%ebp),%edx
59816d:	8a 0b                	mov    (%ebx),%cl
59816f:	c1 e1 04             	shl    $0x4,%ecx
598172:	88 0c 10             	mov    %cl,(%eax,%edx,1)
598175:	43                   	inc    %ebx
598176:	8b 45 c0             	mov    -0x40(%ebp),%eax
598179:	8b 55 e8             	mov    -0x18(%ebp),%edx
59817c:	8a 0b                	mov    (%ebx),%cl
59817e:	08 0c 10             	or     %cl,(%eax,%edx,1)
598181:	43                   	inc    %ebx
598182:	ff 45 e8             	incl   -0x18(%ebp)
598185:	8b 45 b4             	mov    -0x4c(%ebp),%eax
598188:	8b 10                	mov    (%eax),%edx
59818a:	ff 52 0c             	call   *0xc(%edx)
59818d:	d1 e8                	shr    $1,%eax
59818f:	3b 45 e8             	cmp    -0x18(%ebp),%eax
598192:	7f d3                	jg     0x598167
598194:	8b 45 b4             	mov    -0x4c(%ebp),%eax
598197:	8b 10                	mov    (%eax),%edx
598199:	ff 52 0c             	call   *0xc(%edx)
59819c:	a8 01                	test   $0x1,%al
59819e:	0f 84 a1 00 00 00    	je     0x598245
5981a4:	8b 45 c0             	mov    -0x40(%ebp),%eax
5981a7:	8b 55 e8             	mov    -0x18(%ebp),%edx
5981aa:	8a 0b                	mov    (%ebx),%cl
5981ac:	c1 e1 04             	shl    $0x4,%ecx
5981af:	88 0c 10             	mov    %cl,(%eax,%edx,1)
5981b2:	e9 8e 00 00 00       	jmp    0x598245
5981b7:	8b 55 e0             	mov    -0x20(%ebp),%edx
5981ba:	8b 45 b4             	mov    -0x4c(%ebp),%eax
5981bd:	8b 08                	mov    (%eax),%ecx
5981bf:	ff 11                	call   *(%ecx)
5981c1:	8b f0                	mov    %eax,%esi
5981c3:	33 c0                	xor    %eax,%eax
5981c5:	89 45 e8             	mov    %eax,-0x18(%ebp)
5981c8:	eb 42                	jmp    0x59820c
5981ca:	8a 46 02             	mov    0x2(%esi),%al
5981cd:	c1 e0 10             	shl    $0x10,%eax
5981d0:	66 8b 06             	mov    (%esi),%ax
5981d3:	50                   	push   %eax
5981d4:	8b 45 ec             	mov    -0x14(%ebp),%eax
5981d7:	e8 c4 79 fa ff       	call   0x53fba0
5981dc:	c1 e0 04             	shl    $0x4,%eax
5981df:	8b 55 c0             	mov    -0x40(%ebp),%edx
5981e2:	8b 4d e8             	mov    -0x18(%ebp),%ecx
5981e5:	88 04 0a             	mov    %al,(%edx,%ecx,1)
5981e8:	83 c6 03             	add    $0x3,%esi
5981eb:	8a 46 02             	mov    0x2(%esi),%al
5981ee:	c1 e0 10             	shl    $0x10,%eax
5981f1:	66 8b 06             	mov    (%esi),%ax
5981f4:	50                   	push   %eax
5981f5:	8b 45 ec             	mov    -0x14(%ebp),%eax
5981f8:	e8 a3 79 fa ff       	call   0x53fba0
5981fd:	8b 55 c0             	mov    -0x40(%ebp),%edx
598200:	8b 4d e8             	mov    -0x18(%ebp),%ecx
598203:	08 04 0a             	or     %al,(%edx,%ecx,1)
598206:	83 c6 03             	add    $0x3,%esi
598209:	ff 45 e8             	incl   -0x18(%ebp)
59820c:	8b 45 b4             	mov    -0x4c(%ebp),%eax
59820f:	8b 10                	mov    (%eax),%edx
598211:	ff 52 0c             	call   *0xc(%edx)
598214:	d1 e8                	shr    $1,%eax
598216:	3b 45 e8             	cmp    -0x18(%ebp),%eax
598219:	7f af                	jg     0x5981ca
59821b:	8b 45 b4             	mov    -0x4c(%ebp),%eax
59821e:	8b 10                	mov    (%eax),%edx
598220:	ff 52 0c             	call   *0xc(%edx)
598223:	a8 01                	test   $0x1,%al
598225:	74 1e                	je     0x598245
598227:	8a 46 02             	mov    0x2(%esi),%al
59822a:	c1 e0 10             	shl    $0x10,%eax
59822d:	66 8b 06             	mov    (%esi),%ax
598230:	50                   	push   %eax
598231:	8b 45 ec             	mov    -0x14(%ebp),%eax
598234:	e8 67 79 fa ff       	call   0x53fba0
598239:	c1 e0 04             	shl    $0x4,%eax
59823c:	8b 55 c0             	mov    -0x40(%ebp),%edx
59823f:	8b 4d e8             	mov    -0x18(%ebp),%ecx
598242:	88 04 0a             	mov    %al,(%edx,%ecx,1)
598245:	8b 45 b8             	mov    -0x48(%ebp),%eax
598248:	50                   	push   %eax
598249:	8b 4d c0             	mov    -0x40(%ebp),%ecx
59824c:	8b 55 08             	mov    0x8(%ebp),%edx
59824f:	8b 52 28             	mov    0x28(%edx),%edx
598252:	8b 45 f8             	mov    -0x8(%ebp),%eax
598255:	e8 a2 dc 05 00       	call   0x5f5efc
59825a:	ff 4d e0             	decl   -0x20(%ebp)
59825d:	83 7d e0 ff          	cmpl   $0xffffffff,-0x20(%ebp)
598261:	0f 85 30 fd ff ff    	jne    0x597f97
598267:	8b 45 fc             	mov    -0x4(%ebp),%eax
59826a:	8b 00                	mov    (%eax),%eax
59826c:	80 b8 02 01 00 00 01 	cmpb   $0x1,0x102(%eax)
598273:	75 19                	jne    0x59828e
598275:	66 c7 45 be 01 00    	movw   $0x1,-0x42(%ebp)
59827b:	6a 02                	push   $0x2
59827d:	8d 4d be             	lea    -0x42(%ebp),%ecx
598280:	8b 55 08             	mov    0x8(%ebp),%edx
598283:	8b 52 28             	mov    0x28(%edx),%edx
598286:	8b 45 f8             	mov    -0x8(%ebp),%eax
598289:	e8 6e dc 05 00       	call   0x5f5efc
59828e:	8b 45 c0             	mov    -0x40(%ebp),%eax
598291:	e8 36 a5 e6 ff       	call   0x4027cc
598296:	8b 45 c4             	mov    -0x3c(%ebp),%eax
598299:	e8 2e a5 e6 ff       	call   0x4027cc
59829e:	8b 45 ec             	mov    -0x14(%ebp),%eax
5982a1:	e8 d2 b7 e6 ff       	call   0x403a78
5982a6:	8b 45 b4             	mov    -0x4c(%ebp),%eax
5982a9:	3b 45 f4             	cmp    -0xc(%ebp),%eax
5982ac:	74 08                	je     0x5982b6
5982ae:	8b 45 b4             	mov    -0x4c(%ebp),%eax
5982b1:	e8 c2 b7 e6 ff       	call   0x403a78
5982b6:	83 7d f0 01          	cmpl   $0x1,-0x10(%ebp)
5982ba:	0f 85 f7 01 00 00    	jne    0x5984b7
5982c0:	8b 45 fc             	mov    -0x4(%ebp),%eax
5982c3:	8b 00                	mov    (%eax),%eax
5982c5:	8b 80 a8 03 00 00    	mov    0x3a8(%eax),%eax
5982cb:	85 c0                	test   %eax,%eax
5982cd:	74 22                	je     0x5982f1
5982cf:	8b 55 fc             	mov    -0x4(%ebp),%edx
5982d2:	e8 f5 a4 e6 ff       	call   0x4027cc
5982d7:	8b 45 fc             	mov    -0x4(%ebp),%eax
5982da:	8b 00                	mov    (%eax),%eax
5982dc:	33 d2                	xor    %edx,%edx
5982de:	89 90 a8 03 00 00    	mov    %edx,0x3a8(%eax)
5982e4:	8b 45 fc             	mov    -0x4(%ebp),%eax
5982e7:	8b 00                	mov    (%eax),%eax
5982e9:	33 d2                	xor    %edx,%edx
5982eb:	89 90 ac 03 00 00    	mov    %edx,0x3ac(%eax)
5982f1:	8b 45 fc             	mov    -0x4(%ebp),%eax
5982f4:	8b 00                	mov    (%eax),%eax
5982f6:	c7 80 ac 03 00 00 02 	movl   $0x2,0x3ac(%eax)
5982fd:	00 00 00
598300:	b8 06 00 00 00       	mov    $0x6,%eax
598305:	e8 a2 a4 e6 ff       	call   0x4027ac
59830a:	8b 55 fc             	mov    -0x4(%ebp),%edx
59830d:	8b 12                	mov    (%edx),%edx
59830f:	89 82 a8 03 00 00    	mov    %eax,0x3a8(%edx)
598315:	8b 45 f4             	mov    -0xc(%ebp),%eax
598318:	8b 10                	mov    (%eax),%edx
59831a:	ff 52 10             	call   *0x10(%edx)
59831d:	3c 01                	cmp    $0x1,%al
59831f:	75 69                	jne    0x59838a
598321:	8b 45 f4             	mov    -0xc(%ebp),%eax
598324:	89 45 b4             	mov    %eax,-0x4c(%ebp)
598327:	8d 85 18 ff ff ff    	lea    -0xe8(%ebp),%eax
59832d:	50                   	push   %eax
59832e:	33 c9                	xor    %ecx,%ecx
598330:	33 d2                	xor    %edx,%edx
598332:	33 c0                	xor    %eax,%eax
598334:	e8 d7 0f 01 00       	call   0x5a9310
598339:	8b 45 fc             	mov    -0x4(%ebp),%eax
59833c:	8b 00                	mov    (%eax),%eax
59833e:	8b 80 a8 03 00 00    	mov    0x3a8(%eax),%eax
598344:	66 8b 95 18 ff ff ff 	mov    -0xe8(%ebp),%dx
59834b:	66 89 10             	mov    %dx,(%eax)
59834e:	8a 95 1a ff ff ff    	mov    -0xe6(%ebp),%dl
598354:	88 50 02             	mov    %dl,0x2(%eax)
598357:	8d 85 18 ff ff ff    	lea    -0xe8(%ebp),%eax
59835d:	50                   	push   %eax
59835e:	b1 ff                	mov    $0xff,%cl
598360:	b2 ff                	mov    $0xff,%dl
598362:	b0 ff                	mov    $0xff,%al
598364:	e8 a7 0f 01 00       	call   0x5a9310
598369:	8b 45 fc             	mov    -0x4(%ebp),%eax
59836c:	8b 00                	mov    (%eax),%eax
59836e:	8b 80 a8 03 00 00    	mov    0x3a8(%eax),%eax
598374:	66 8b 95 18 ff ff ff 	mov    -0xe8(%ebp),%dx
59837b:	66 89 50 03          	mov    %dx,0x3(%eax)
59837f:	8a 95 1a ff ff ff    	mov    -0xe6(%ebp),%dl
598385:	88 50 05             	mov    %dl,0x5(%eax)
598388:	eb 48                	jmp    0x5983d2
59838a:	8b 45 fc             	mov    -0x4(%ebp),%eax
59838d:	8b 00                	mov    (%eax),%eax
59838f:	8b 80 a8 03 00 00    	mov    0x3a8(%eax),%eax
598395:	8d 48 03             	lea    0x3(%eax),%ecx
598398:	8b 55 fc             	mov    -0x4(%ebp),%edx
59839b:	8b d0                	mov    %eax,%edx
59839d:	8b 45 f4             	mov    -0xc(%ebp),%eax
5983a0:	e8 6f 34 01 00       	call   0x5ab814
5983a5:	89 45 b4             	mov    %eax,-0x4c(%ebp)
5983a8:	83 7d b4 00          	cmpl   $0x0,-0x4c(%ebp)
5983ac:	75 24                	jne    0x5983d2
5983ae:	b2 01                	mov    $0x1,%dl
5983b0:	a1 18 ff 5e 00       	mov    0x5eff18,%eax
5983b5:	e8 ea f1 05 00       	call   0x5f75a4
5983ba:	89 45 b4             	mov    %eax,-0x4c(%ebp)
5983bd:	8b 55 f4             	mov    -0xc(%ebp),%edx
5983c0:	8b 45 b4             	mov    -0x4c(%ebp),%eax