595fc9:	5b                   	pop    %ebx
595fca:	5d                   	pop    %ebp
595fcb:	c3                   	ret
595fcc:	55                   	push   %ebp
595fcd:	8b ec                	mov    %esp,%ebp
595fcf:	53                   	push   %ebx
595fd0:	8b 45 08             	mov    0x8(%ebp),%eax
595fd3:	8b 40 f8             	mov    -0x8(%eax),%eax
595fd6:	8b 10                	mov    (%eax),%edx
595fd8:	ff 52 0c             	call   *0xc(%edx)
595fdb:	8b 55 08             	mov    0x8(%ebp),%edx
595fde:	3b 42 fc             	cmp    -0x4(%edx),%eax
595fe1:	7e 39                	jle    0x59601c
595fe3:	8b 45 08             	mov    0x8(%ebp),%eax
595fe6:	8b 40 f4             	mov    -0xc(%eax),%eax
595fe9:	8a 00                	mov    (%eax),%al
595feb:	24 0f                	and    $0xf,%al
595fed:	25 ff 00 00 00       	and    $0xff,%eax
595ff2:	8d 04 40             	lea    (%eax,%eax,2),%eax
595ff5:	8b 55 08             	mov    0x8(%ebp),%edx
595ff8:	8b 52 10             	mov    0x10(%edx),%edx
595ffb:	8b 4d 08             	mov    0x8(%ebp),%ecx
595ffe:	8b 49 f0             	mov    -0x10(%ecx),%ecx
596001:	66 8b 1c 02          	mov    (%edx,%eax,1),%bx
596005:	66 89 19             	mov    %bx,(%ecx)
596008:	8a 5c 02 02          	mov    0x2(%edx,%eax,1),%bl
59600c:	88 59 02             	mov    %bl,0x2(%ecx)
59600f:	8b 45 08             	mov    0x8(%ebp),%eax
596012:	83 40 f0 03          	addl   $0x3,-0x10(%eax)
596016:	8b 45 08             	mov    0x8(%ebp),%eax
596019:	ff 40 fc             	incl   -0x4(%eax)
59601c:	5b                   	pop    %ebx
59601d:	5d                   	pop    %ebp
59601e:	c3                   	ret
59601f:	90                   	nop
596020:	55                   	push   %ebp
596021:	8b ec                	mov    %esp,%ebp
596023:	83 c4 e4             	add    $0xffffffe4,%esp
596026:	53                   	push   %ebx
596027:	56                   	push   %esi
596028:	57                   	push   %edi
596029:	89 4d ec             	mov    %ecx,-0x14(%ebp)
59602c:	89 55 f4             	mov    %edx,-0xc(%ebp)
59602f:	89 45 f8             	mov    %eax,-0x8(%ebp)
596032:	8b 45 f8             	mov    -0x8(%ebp),%eax
596035:	8b 10                	mov    (%eax),%edx
596037:	ff 52 08             	call   *0x8(%edx)
59603a:	48                   	dec    %eax
59603b:	89 45 e8             	mov    %eax,-0x18(%ebp)
59603e:	8b 45 08             	mov    0x8(%ebp),%eax
596041:	2b 45 e8             	sub    -0x18(%ebp),%eax
596044:	99                   	cltd
596045:	33 c2                	xor    %edx,%eax
596047:	2b c2                	sub    %edx,%eax
596049:	8b d0                	mov    %eax,%edx
59604b:	8b 45 f8             	mov    -0x8(%ebp),%eax
59604e:	8b 08                	mov    (%eax),%ecx
596050:	ff 11                	call   *(%ecx)
596052:	89 45 f0             	mov    %eax,-0x10(%ebp)
596055:	33 f6                	xor    %esi,%esi
596057:	33 c0                	xor    %eax,%eax
596059:	89 45 fc             	mov    %eax,-0x4(%ebp)
59605c:	3b 75 ec             	cmp    -0x14(%ebp),%esi
59605f:	0f 8d 8d 01 00 00    	jge    0x5961f2
596065:	8b 45 f4             	mov    -0xc(%ebp),%eax
596068:	8a 00                	mov    (%eax),%al
59606a:	84 c0                	test   %al,%al
59606c:	0f 85 3d 01 00 00    	jne    0x5961af
596072:	ff 45 f4             	incl   -0xc(%ebp)
596075:	46                   	inc    %esi
596076:	8b 45 f4             	mov    -0xc(%ebp),%eax
596079:	8a 00                	mov    (%eax),%al
59607b:	8b d0                	mov    %eax,%edx
59607d:	80 ea 01             	sub    $0x1,%dl
596080:	72 13                	jb     0x596095
596082:	0f 84 6a 01 00 00    	je     0x5961f2
596088:	fe ca                	dec    %dl
59608a:	0f 84 93 00 00 00    	je     0x596123
596090:	e9 c5 00 00 00       	jmp    0x59615a
596095:	ff 4d e8             	decl   -0x18(%ebp)
596098:	83 7d e8 00          	cmpl   $0x0,-0x18(%ebp)
59609c:	0f 8c 50 01 00 00    	jl     0x5961f2
5960a2:	8b 45 f8             	mov    -0x8(%ebp),%eax
5960a5:	8b 10                	mov    (%eax),%edx
5960a7:	ff 52 08             	call   *0x8(%edx)
5960aa:	48                   	dec    %eax
5960ab:	50                   	push   %eax
5960ac:	8b 45 08             	mov    0x8(%ebp),%eax
5960af:	2b 45 e8             	sub    -0x18(%ebp),%eax
5960b2:	99                   	cltd
5960b3:	33 c2                	xor    %edx,%eax
5960b5:	2b c2                	sub    %edx,%eax
5960b7:	8b d0                	mov    %eax,%edx
5960b9:	33 c0                	xor    %eax,%eax
5960bb:	e8 54 33 01 00       	call   0x5a9414
5960c0:	5a                   	pop    %edx
5960c1:	e8 56 33 01 00       	call   0x5a941c
5960c6:	8b d8                	mov    %eax,%ebx
5960c8:	8b d3                	mov    %ebx,%edx
5960ca:	8b 45 f8             	mov    -0x8(%ebp),%eax
5960cd:	8b 08                	mov    (%eax),%ecx
5960cf:	ff 11                	call   *(%ecx)
5960d1:	89 45 f0             	mov    %eax,-0x10(%ebp)
5960d4:	33 c0                	xor    %eax,%eax
5960d6:	89 45 fc             	mov    %eax,-0x4(%ebp)
5960d9:	8b 45 0c             	mov    0xc(%ebp),%eax
5960dc:	66 83 78 02 00       	cmpw   $0x0,0x2(%eax)
5960e1:	74 2c                	je     0x59610f
5960e3:	8b 45 f8             	mov    -0x8(%ebp),%eax
5960e6:	8b 10                	mov    (%eax),%edx
5960e8:	ff 52 08             	call   *0x8(%edx)
5960eb:	2b 45 e8             	sub    -0x18(%ebp),%eax
5960ee:	89 45 e4             	mov    %eax,-0x1c(%ebp)
5960f1:	db 45 e4             	fildl  -0x1c(%ebp)
5960f4:	8b 45 0c             	mov    0xc(%ebp),%eax
5960f7:	dc 48 18             	fmull  0x18(%eax)
5960fa:	e8 cd cb e6 ff       	call   0x402ccc
5960ff:	8b c8                	mov    %eax,%ecx
596101:	8b 5d 0c             	mov    0xc(%ebp),%ebx
596104:	8b 55 0c             	mov    0xc(%ebp),%edx
596107:	8b 52 08             	mov    0x8(%edx),%edx
59610a:	8b 43 04             	mov    0x4(%ebx),%eax
59610d:	ff 13                	call   *(%ebx)
59610f:	8b 45 0c             	mov    0xc(%ebp),%eax
596112:	8b 40 28             	mov    0x28(%eax),%eax
596115:	80 38 00             	cmpb   $0x0,(%eax)
596118:	0f 85 d4 00 00 00    	jne    0x5961f2
59611e:	e9 86 00 00 00       	jmp    0x5961a9
596123:	ff 45 f4             	incl   -0xc(%ebp)
596126:	46                   	inc    %esi
596127:	8b 45 f4             	mov    -0xc(%ebp),%eax
59612a:	33 db                	xor    %ebx,%ebx
59612c:	8a 18                	mov    (%eax),%bl
59612e:	ff 45 f4             	incl   -0xc(%ebp)
596131:	46                   	inc    %esi
596132:	8b 45 f4             	mov    -0xc(%ebp),%eax
596135:	0f b6 00             	movzbl (%eax),%eax
596138:	29 45 e8             	sub    %eax,-0x18(%ebp)
59613b:	8b 45 08             	mov    0x8(%ebp),%eax
59613e:	2b 45 e8             	sub    -0x18(%ebp),%eax
596141:	99                   	cltd
596142:	33 c2                	xor    %edx,%eax
596144:	2b c2                	sub    %edx,%eax
596146:	8b d0                	mov    %eax,%edx
596148:	8b 45 f8             	mov    -0x8(%ebp),%eax
59614b:	8b 08                	mov    (%eax),%ecx
59614d:	ff 11                	call   *(%ecx)
59614f:	89 45 f0             	mov    %eax,-0x10(%ebp)
596152:	8d 04 5b             	lea    (%ebx,%ebx,2),%eax
596155:	01 45 f0             	add    %eax,-0x10(%ebp)
596158:	eb 4f                	jmp    0x5961a9
59615a:	8b f8                	mov    %eax,%edi
59615c:	81 e7 ff 00 00 00    	and    $0xff,%edi
596162:	8b df                	mov    %edi,%ebx
596164:	d1 eb                	shr    $1,%ebx
596166:	4b                   	dec    %ebx
596167:	85 db                	test   %ebx,%ebx
596169:	7c 16                	jl     0x596181
59616b:	43                   	inc    %ebx
59616c:	ff 45 f4             	incl   -0xc(%ebp)
59616f:	46                   	inc    %esi
596170:	55                   	push   %ebp
596171:	e8 06 fe ff ff       	call   0x595f7c
596176:	59                   	pop    %ecx
596177:	55                   	push   %ebp
596178:	e8 4f fe ff ff       	call   0x595fcc
59617d:	59                   	pop    %ecx
59617e:	4b                   	dec    %ebx
59617f:	75 eb                	jne    0x59616c
596181:	8b df                	mov    %edi,%ebx
596183:	83 e3 01             	and    $0x1,%ebx
596186:	85 db                	test   %ebx,%ebx
596188:	74 0b                	je     0x596195
59618a:	ff 45 f4             	incl   -0xc(%ebp)
59618d:	46                   	inc    %esi
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