59618e:	55                   	push   %ebp
59618f:	e8 e8 fd ff ff       	call   0x595f7c
596194:	59                   	pop    %ecx
596195:	8b c7                	mov    %edi,%eax
596197:	d1 e8                	shr    $1,%eax
596199:	03 c3                	add    %ebx,%eax
59619b:	8b f8                	mov    %eax,%edi
59619d:	f7 c7 01 00 00 00    	test   $0x1,%edi
5961a3:	74 04                	je     0x5961a9
5961a5:	ff 45 f4             	incl   -0xc(%ebp)
5961a8:	46                   	inc    %esi
5961a9:	ff 45 f4             	incl   -0xc(%ebp)
5961ac:	46                   	inc    %esi
5961ad:	eb 3a                	jmp    0x5961e9
5961af:	8b f8                	mov    %eax,%edi
5961b1:	81 e7 ff 00 00 00    	and    $0xff,%edi
5961b7:	ff 45 f4             	incl   -0xc(%ebp)
5961ba:	46                   	inc    %esi
5961bb:	8b df                	mov    %edi,%ebx
5961bd:	d1 eb                	shr    $1,%ebx
5961bf:	4b                   	dec    %ebx
5961c0:	85 db                	test   %ebx,%ebx
5961c2:	7c 12                	jl     0x5961d6
5961c4:	43                   	inc    %ebx
5961c5:	55                   	push   %ebp
5961c6:	e8 b1 fd ff ff       	call   0x595f7c
5961cb:	59                   	pop    %ecx
5961cc:	55                   	push   %ebp
5961cd:	e8 fa fd ff ff       	call   0x595fcc
5961d2:	59                   	pop    %ecx
5961d3:	4b                   	dec    %ebx
5961d4:	75 ef                	jne    0x5961c5
5961d6:	f7 c7 01 00 00 00    	test   $0x1,%edi
5961dc:	74 07                	je     0x5961e5
5961de:	55                   	push   %ebp
5961df:	e8 98 fd ff ff       	call   0x595f7c
5961e4:	59                   	pop    %ecx
5961e5:	ff 45 f4             	incl   -0xc(%ebp)
5961e8:	46                   	inc    %esi
5961e9:	3b 75 ec             	cmp    -0x14(%ebp),%esi
5961ec:	0f 8c 73 fe ff ff    	jl     0x596065
5961f2:	5f                   	pop    %edi
5961f3:	5e                   	pop    %esi
5961f4:	5b                   	pop    %ebx
5961f5:	8b e5                	mov    %ebp,%esp
5961f7:	5d                   	pop    %ebp
5961f8:	c2 0c 00             	ret    $0xc
5961fb:	90                   	nop
5961fc:	55                   	push   %ebp
5961fd:	8b ec                	mov    %esp,%ebp
5961ff:	8b 45 08             	mov    0x8(%ebp),%eax
596202:	8b 40 f8             	mov    -0x8(%eax),%eax
596205:	8b 10                	mov    (%eax),%edx
596207:	ff 52 0c             	call   *0xc(%edx)
59620a:	8b 55 08             	mov    0x8(%ebp),%edx
59620d:	3b 42 fc             	cmp    -0x4(%edx),%eax
596210:	7e 20                	jle    0x596232
596212:	8b 45 08             	mov    0x8(%ebp),%eax
596215:	8b 40 f4             	mov    -0xc(%eax),%eax
596218:	0f b6 00             	movzbl (%eax),%eax
59621b:	c1 e8 04             	shr    $0x4,%eax
59621e:	8b 55 08             	mov    0x8(%ebp),%edx
596221:	8b 52 f0             	mov    -0x10(%edx),%edx
596224:	88 02                	mov    %al,(%edx)
596226:	8b 45 08             	mov    0x8(%ebp),%eax
596229:	ff 40 f0             	incl   -0x10(%eax)
59622c:	8b 45 08             	mov    0x8(%ebp),%eax
59622f:	ff 40 fc             	incl   -0x4(%eax)
596232:	5d                   	pop    %ebp
596233:	c3                   	ret
596234:	55                   	push   %ebp
596235:	8b ec                	mov    %esp,%ebp
596237:	8b 45 08             	mov    0x8(%ebp),%eax
59623a:	8b 40 f8             	mov    -0x8(%eax),%eax
59623d:	8b 10                	mov    (%eax),%edx
59623f:	ff 52 0c             	call   *0xc(%edx)
596242:	8b 55 08             	mov    0x8(%ebp),%edx
596245:	3b 42 fc             	cmp    -0x4(%edx),%eax
596248:	7e 1e                	jle    0x596268
59624a:	8b 45 08             	mov    0x8(%ebp),%eax
59624d:	8b 40 f4             	mov    -0xc(%eax),%eax
596250:	8a 00                	mov    (%eax),%al
596252:	24 0f                	and    $0xf,%al
596254:	8b 55 08             	mov    0x8(%ebp),%edx
596257:	8b 52 f0             	mov    -0x10(%edx),%edx
59625a:	88 02                	mov    %al,(%edx)
59625c:	8b 45 08             	mov    0x8(%ebp),%eax
59625f:	ff 40 f0             	incl   -0x10(%eax)
596262:	8b 45 08             	mov    0x8(%ebp),%eax
596265:	ff 40 fc             	incl   -0x4(%eax)
596268:	5d                   	pop    %ebp
596269:	c3                   	ret
59626a:	8b c0                	mov    %eax,%eax
59626c:	55                   	push   %ebp
59626d:	8b ec                	mov    %esp,%ebp
59626f:	83 c4 e4             	add    $0xffffffe4,%esp
596272:	53                   	push   %ebx
596273:	56                   	push   %esi
596274:	57                   	push   %edi
596275:	89 4d ec             	mov    %ecx,-0x14(%ebp)
596278:	89 55 f4             	mov    %edx,-0xc(%ebp)
59627b:	89 45 f8             	mov    %eax,-0x8(%ebp)
59627e:	8b 45 f8             	mov    -0x8(%ebp),%eax
596281:	8b 10                	mov    (%eax),%edx
596283:	ff 52 08             	call   *0x8(%edx)
596286:	48                   	dec    %eax
596287:	89 45 e8             	mov    %eax,-0x18(%ebp)
59628a:	8b 45 08             	mov    0x8(%ebp),%eax
59628d:	2b 45 e8             	sub    -0x18(%ebp),%eax
596290:	99                   	cltd
596291:	33 c2                	xor    %edx,%eax
596293:	2b c2                	sub    %edx,%eax
596295:	8b d0                	mov    %eax,%edx
596297:	8b 45 f8             	mov    -0x8(%ebp),%eax
59629a:	8b 08                	mov    (%eax),%ecx
59629c:	ff 11                	call   *(%ecx)
59629e:	89 45 f0             	mov    %eax,-0x10(%ebp)
5962a1:	33 f6                	xor    %esi,%esi
5962a3:	33 c0                	xor    %eax,%eax
5962a5:	89 45 fc             	mov    %eax,-0x4(%ebp)
5962a8:	3b 75 ec             	cmp    -0x14(%ebp),%esi
5962ab:	0f 8d 8a 01 00 00    	jge    0x59643b
5962b1:	8b 45 f4             	mov    -0xc(%ebp),%eax
5962b4:	8a 00                	mov    (%eax),%al
5962b6:	84 c0                	test   %al,%al
5962b8:	0f 85 3a 01 00 00    	jne    0x5963f8
5962be:	ff 45 f4             	incl   -0xc(%ebp)
5962c1:	46                   	inc    %esi
5962c2:	8b 45 f4             	mov    -0xc(%ebp),%eax
5962c5:	8a 00                	mov    (%eax),%al
5962c7:	8b d0                	mov    %eax,%edx
5962c9:	80 ea 01             	sub    $0x1,%dl
5962cc:	72 13                	jb     0x5962e1
5962ce:	0f 84 67 01 00 00    	je     0x59643b
5962d4:	fe ca                	dec    %dl
5962d6:	0f 84 93 00 00 00    	je     0x59636f
5962dc:	e9 c2 00 00 00       	jmp    0x5963a3
5962e1:	ff 4d e8             	decl   -0x18(%ebp)
5962e4:	83 7d e8 00          	cmpl   $0x0,-0x18(%ebp)
5962e8:	0f 8c 4d 01 00 00    	jl     0x59643b
5962ee:	8b 45 f8             	mov    -0x8(%ebp),%eax
5962f1:	8b 10                	mov    (%eax),%edx
5962f3:	ff 52 08             	call   *0x8(%edx)
5962f6:	48                   	dec    %eax
5962f7:	50                   	push   %eax
5962f8:	8b 45 08             	mov    0x8(%ebp),%eax
5962fb:	2b 45 e8             	sub    -0x18(%ebp),%eax
5962fe:	99                   	cltd
5962ff:	33 c2                	xor    %edx,%eax
596301:	2b c2                	sub    %edx,%eax
596303:	8b d0                	mov    %eax,%edx
596305:	33 c0                	xor    %eax,%eax
596307:	e8 08 31 01 00       	call   0x5a9414
59630c:	5a                   	pop    %edx
59630d:	e8 0a 31 01 00       	call   0x5a941c
596312:	8b d8                	mov    %eax,%ebx
596314:	8b d3                	mov    %ebx,%edx
596316:	8b 45 f8             	mov    -0x8(%ebp),%eax
596319:	8b 08                	mov    (%eax),%ecx
59631b:	ff 11                	call   *(%ecx)
59631d:	89 45 f0             	mov    %eax,-0x10(%ebp)
596320:	33 c0                	xor    %eax,%eax
596322:	89 45 fc             	mov    %eax,-0x4(%ebp)
596325:	8b 45 0c             	mov    0xc(%ebp),%eax
596328:	66 83 78 02 00       	cmpw   $0x0,0x2(%eax)
59632d:	74 2c                	je     0x59635b
59632f:	8b 45 f8             	mov    -0x8(%ebp),%eax
596332:	8b 10                	mov    (%eax),%edx
596334:	ff 52 08             	call   *0x8(%edx)
596337:	2b 45 e8             	sub    -0x18(%ebp),%eax
59633a:	89 45 e4             	mov    %eax,-0x1c(%ebp)
59633d:	db 45 e4             	fildl  -0x1c(%ebp)
596340:	8b 45 0c             	mov    0xc(%ebp),%eax
596343:	dc 48 18             	fmull  0x18(%eax)
596346:	e8 81 c9 e6 ff       	call   0x402ccc
59634b:	8b c8                	mov    %eax,%ecx
59634d:	8b 5d 0c             	mov    0xc(%ebp),%ebx
596350:	8b 55 0c             	mov    0xc(%ebp),%edx
596353:	8b 52 08             	mov    0x8(%edx),%edx
596356:	8b 43 04             	mov    0x4(%ebx),%eax
596359:	ff 13                	call   *(%ebx)
59635b:	8b 45 0c             	mov    0xc(%ebp),%eax
59635e:	8b 40 28             	mov    0x28(%eax),%eax
596361:	80 38 00             	cmpb   $0x0,(%eax)
596364:	0f 85 d1 00 00 00    	jne    0x59643b
59636a:	e9 83 00 00 00       	jmp    0x5963f2
59636f:	ff 45 f4             	incl   -0xc(%ebp)
596372:	8b 45 f4             	mov    -0xc(%ebp),%eax
596375:	33 db                	xor    %ebx,%ebx
596377:	8a 18                	mov    (%eax),%bl
596379:	46                   	inc    %esi
59637a:	ff 45 f4             	incl   -0xc(%ebp)
59637d:	8b 45 f4             	mov    -0xc(%ebp),%eax
596380:	0f b6 00             	movzbl (%eax),%eax
596383:	29 45 e8             	sub    %eax,-0x18(%ebp)
596386:	46                   	inc    %esi
596387:	8b 45 08             	mov    0x8(%ebp),%eax
59638a:	2b 45 e8             	sub    -0x18(%ebp),%eax
59638d:	99                   	cltd
59638e:	33 c2                	xor    %edx,%eax
596390:	2b c2                	sub    %edx,%eax
596392:	8b d0                	mov    %eax,%edx
596394:	8b 45 f8             	mov    -0x8(%ebp),%eax
596397:	8b 08                	mov    (%eax),%ecx
596399:	ff 11                	call   *(%ecx)
59639b:	89 45 f0             	mov    %eax,-0x10(%ebp)
59639e:	01 5d f0             	add    %ebx,-0x10(%ebp)
5963a1:	eb 4f                	jmp    0x5963f2
5963a3:	8b f8                	mov    %eax,%edi
5963a5:	81 e7 ff 00 00 00    	and    $0xff,%edi
5963ab:	8b df                	mov    %edi,%ebx
5963ad:	d1 eb                	shr    $1,%ebx
5963af:	4b                   	dec    %ebx
5963b0:	85 db                	test   %ebx,%ebx
5963b2:	7c 16                	jl     0x5963ca
5963b4:	43                   	inc    %ebx
5963b5:	ff 45 f4             	incl   -0xc(%ebp)
5963b8:	46                   	inc    %esi
5963b9:	55                   	push   %ebp
5963ba:	e8 3d fe ff ff       	call   0x5961fc
5963bf:	59                   	pop    %ecx
5963c0:	55                   	push   %ebp
5963c1:	e8 6e fe ff ff       	call   0x596234
5963c6:	59                   	pop    %ecx
5963c7:	4b                   	dec    %ebx
5963c8:	75 eb                	jne    0x5963b5
5963ca:	8b df                	mov    %edi,%ebx
5963cc:	83 e3 01             	and    $0x1,%ebx
5963cf:	85 db                	test   %ebx,%ebx
5963d1:	74 0b                	je     0x5963de
5963d3:	ff 45 f4             	incl   -0xc(%ebp)
5963d6:	46                   	inc    %esi
5963d7:	55                   	push   %ebp
5963d8:	e8 1f fe ff ff       	call   0x5961fc
5963dd:	59                   	pop    %ecx
5963de:	8b c7                	mov    %edi,%eax
5963e0:	d1 e8                	shr    $1,%eax
5963e2:	03 c3                	add    %ebx,%eax
5963e4:	8b f8                	mov    %eax,%edi
5963e6:	f7 c7 01 00 00 00    	test   $0x1,%edi
5963ec:	74 04                	je     0x5963f2
5963ee:	ff 45 f4             	incl   -0xc(%ebp)
5963f1:	46                   	inc    %esi
5963f2:	ff 45 f4             	incl   -0xc(%ebp)
5963f5:	46                   	inc    %esi
5963f6:	eb 3a                	jmp    0x596432
5963f8:	8b f8                	mov    %eax,%edi
5963fa:	81 e7 ff 00 00 00    	and    $0xff,%edi
596400:	ff 45 f4             	incl   -0xc(%ebp)
596403:	46                   	inc    %esi
596404:	8b df                	mov    %edi,%ebx
596406:	d1 eb                	shr    $1,%ebx
596408:	4b                   	dec    %ebx
596409:	85 db                	test   %ebx,%ebx
59640b:	7c 12                	jl     0x59641f
59640d:	43                   	inc    %ebx
59640e:	55                   	push   %ebp
59640f:	e8 e8 fd ff ff       	call   0x5961fc
596414:	59                   	pop    %ecx
596415:	55                   	push   %ebp
596416:	e8 19 fe ff ff       	call   0x596234
59641b:	59                   	pop    %ecx
59641c:	4b                   	dec    %ebx
59641d:	75 ef                	jne    0x59640e
59641f:	f7 c7 01 00 00 00    	test   $0x1,%edi
596425:	74 07                	je     0x59642e
596427:	55                   	push   %ebp
596428:	e8 cf fd ff ff       	call   0x5961fc
59642d:	59                   	pop    %ecx
59642e:	ff 45 f4             	incl   -0xc(%ebp)
596431:	46                   	inc    %esi
596432:	3b 75 ec             	cmp    -0x14(%ebp),%esi
596435:	0f 8c 76 fe ff ff    	jl     0x5962b1
59643b:	5f                   	pop    %edi
59643c:	5e                   	pop    %esi
59643d:	5b                   	pop    %ebx
59643e:	8b e5                	mov    %ebp,%esp
596440:	5d                   	pop    %ebp
596441:	c2 0c 00             	ret    $0xc
596444:	55                   	push   %ebp
596445:	8b ec                	mov    %esp,%ebp
596447:	83 c4 e8             	add    $0xffffffe8,%esp
59644a:	53                   	push   %ebx
59644b:	56                   	push   %esi
59644c:	57                   	push   %edi
59644d:	8b f1                	mov    %ecx,%esi
59644f:	8b da                	mov    %edx,%ebx
596451:	89 45 fc             	mov    %eax,-0x4(%ebp)
596454:	8b 45 fc             	mov    -0x4(%ebp),%eax
596457:	8b 10                	mov    (%eax),%edx
596459:	ff 52 08             	call   *0x8(%edx)
59645c:	48                   	dec    %eax
59645d:	89 45 f8             	mov    %eax,-0x8(%ebp)
596460:	8b 45 08             	mov    0x8(%ebp),%eax
596463:	2b 45 f8             	sub    -0x8(%ebp),%eax
596466:	99                   	cltd
596467:	33 c2                	xor    %edx,%eax
596469:	2b c2                	sub    %edx,%eax
59646b:	8b d0                	mov    %eax,%edx
59646d:	8b 45 fc             	mov    -0x4(%ebp),%eax
596470:	8b 08                	mov    (%eax),%ecx
596472:	ff 11                	call   *(%ecx)
596474:	89 45 f0             	mov    %eax,-0x10(%ebp)
596477:	33 c0                	xor    %eax,%eax
596479:	89 45 f4             	mov    %eax,-0xc(%ebp)
59647c:	4e                   	dec    %esi
59647d:	85 f6                	test   %esi,%esi
59647f:	0f 8c 73 01 00 00    	jl     0x5965f8
596485:	46                   	inc    %esi
596486:	89 75 ec             	mov    %esi,-0x14(%ebp)
596489:	8a 03                	mov    (%ebx),%al
59648b:	84 c0                	test   %al,%al
59648d:	0f 85 16 01 00 00    	jne    0x5965a9
596493:	43                   	inc    %ebx
596494:	8a 03                	mov    (%ebx),%al
596496:	8b d0                	mov    %eax,%edx
596498:	80 ea 01             	sub    $0x1,%dl
59649b:	72 0f                	jb     0x5964ac
59649d:	0f 84 55 01 00 00    	je     0x5965f8
5964a3:	fe ca                	dec    %dl
5964a5:	74 78                	je     0x59651f
5964a7:	e9 ae 00 00 00       	jmp    0x59655a
5964ac:	ff 4d f8             	decl   -0x8(%ebp)
5964af:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
5964b3:	0f 8c 3f 01 00 00    	jl     0x5965f8
5964b9:	8b 45 08             	mov    0x8(%ebp),%eax
5964bc:	2b 45 f8             	sub    -0x8(%ebp),%eax
5964bf:	99                   	cltd
5964c0:	33 c2                	xor    %edx,%eax
5964c2:	2b c2                	sub    %edx,%eax
5964c4:	8b d0                	mov    %eax,%edx
5964c6:	8b 45 fc             	mov    -0x4(%ebp),%eax
5964c9:	8b 08                	mov    (%eax),%ecx
5964cb:	ff 11                	call   *(%ecx)
5964cd:	89 45 f0             	mov    %eax,-0x10(%ebp)
5964d0:	33 c0                	xor    %eax,%eax
5964d2:	89 45 f4             	mov    %eax,-0xc(%ebp)
5964d5:	8b 45 0c             	mov    0xc(%ebp),%eax
5964d8:	66 83 78 02 00       	cmpw   $0x0,0x2(%eax)
5964dd:	74 2c                	je     0x59650b
5964df:	8b 45 fc             	mov    -0x4(%ebp),%eax
5964e2:	8b 10                	mov    (%eax),%edx
5964e4:	ff 52 08             	call   *0x8(%edx)
5964e7:	2b 45 f8             	sub    -0x8(%ebp),%eax
5964ea:	89 45 e8             	mov    %eax,-0x18(%ebp)
5964ed:	db 45 e8             	fildl  -0x18(%ebp)
5964f0:	8b 45 0c             	mov    0xc(%ebp),%eax
5964f3:	dc 48 18             	fmull  0x18(%eax)
5964f6:	e8 d1 c7 e6 ff       	call   0x402ccc
5964fb:	8b c8                	mov    %eax,%ecx