587f43:	55                   	push   %ebp
587f44:	e8 07 ac f2 ff       	call   0x4b2b50
587f49:	83 c4 0c             	add    $0xc,%esp
587f4c:	3b c6                	cmp    %esi,%eax
587f4e:	75 2f                	jne    0x587f7f
587f50:	80 3f 00             	cmpb   $0x0,(%edi)
587f53:	8d 5f 01             	lea    0x1(%edi),%ebx
587f56:	74 1d                	je     0x587f75
587f58:	6a 02                	push   $0x2
587f5a:	68 04 a7 6b 00       	push   $0x6ba704
587f5f:	55                   	push   %ebp
587f60:	e8 eb ab f2 ff       	call   0x4b2b50
587f65:	83 c4 0c             	add    $0xc,%esp
587f68:	83 f8 02             	cmp    $0x2,%eax
587f6b:	75 12                	jne    0x587f7f
587f6d:	80 3f 00             	cmpb   $0x0,(%edi)
587f70:	74 03                	je     0x587f75
587f72:	47                   	inc    %edi
587f73:	eb 9d                	jmp    0x587f12
587f75:	c7 44 24 10 01 00 00 	movl   $0x1,0x10(%esp)
587f7c:	00
587f7d:	eb 18                	jmp    0x587f97
587f7f:	68 28 02 00 00       	push   $0x228
587f84:	68 20 3b 6c 00       	push   $0x6c3b20
587f89:	6a 07                	push   $0x7
587f8b:	6a 75                	push   $0x75
587f8d:	6a 0b                	push   $0xb
587f8f:	e8 0c 95 f1 ff       	call   0x4a14a0
587f94:	83 c4 14             	add    $0x14,%esp
587f97:	ff 74 24 14          	push   0x14(%esp)
587f9b:	e8 90 81 f1 ff       	call   0x4a0130
587fa0:	8b 44 24 14          	mov    0x14(%esp),%eax
587fa4:	83 c4 04             	add    $0x4,%esp
587fa7:	5f                   	pop    %edi
587fa8:	5e                   	pop    %esi
587fa9:	5d                   	pop    %ebp
587faa:	5b                   	pop    %ebx
587fab:	83 c4 08             	add    $0x8,%esp
587fae:	c3                   	ret
587faf:	cc                   	int3
587fb0:	b8 04 00 00 00       	mov    $0x4,%eax
587fb5:	e8 36 95 05 00       	call   0x5e14f0
587fba:	8b 44 24 0c          	mov    0xc(%esp),%eax
587fbe:	53                   	push   %ebx
587fbf:	55                   	push   %ebp
587fc0:	56                   	push   %esi
587fc1:	8b 18                	mov    (%eax),%ebx
587fc3:	33 f6                	xor    %esi,%esi
587fc5:	8b 48 08             	mov    0x8(%eax),%ecx
587fc8:	89 4c 24 18          	mov    %ecx,0x18(%esp)
587fcc:	57                   	push   %edi
587fcd:	8b 7c 24 18          	mov    0x18(%esp),%edi
587fd1:	85 db                	test   %ebx,%ebx
587fd3:	0f 8e 8d 00 00 00    	jle    0x588066
587fd9:	8b 6c 24 20          	mov    0x20(%esp),%ebp
587fdd:	b8 01 00 00 00       	mov    $0x1,%eax
587fe2:	2b c1                	sub    %ecx,%eax
587fe4:	89 44 24 10          	mov    %eax,0x10(%esp)
587fe8:	0f 1f 84 00 00 00 00 	nopl   0x0(%eax,%eax,1)
587fef:	00
587ff0:	b8 39 8e e3 38       	mov    $0x38e38e39,%eax
587ff5:	f7 ee                	imul   %esi
587ff7:	c1 fa 02             	sar    $0x2,%edx
587ffa:	8b c2                	mov    %edx,%eax
587ffc:	c1 e8 1f             	shr    $0x1f,%eax
587fff:	03 c2                	add    %edx,%eax
588001:	8d 0c c0             	lea    (%eax,%eax,8),%ecx
588004:	8b c6                	mov    %esi,%eax
588006:	03 c9                	add    %ecx,%ecx
588008:	2b c1                	sub    %ecx,%eax
58800a:	75 23                	jne    0x58802f
58800c:	6a 01                	push   $0x1
58800e:	68 b8 82 6b 00       	push   $0x6b82b8
588013:	57                   	push   %edi
588014:	e8 37 ab f2 ff       	call   0x4b2b50
588019:	83 c4 0c             	add    $0xc,%esp
58801c:	85 c0                	test   %eax,%eax
58801e:	7e 62                	jle    0x588082
588020:	55                   	push   %ebp
588021:	55                   	push   %ebp
588022:	57                   	push   %edi
588023:	e8 18 a7 f2 ff       	call   0x4b2740
588028:	83 c4 0c             	add    $0xc,%esp
58802b:	85 c0                	test   %eax,%eax
58802d:	7e 53                	jle    0x588082
58802f:	8b 54 24 1c          	mov    0x1c(%esp),%edx
588033:	b9 ad 57 6e 00       	mov    $0x6e57ad,%ecx
588038:	8b 44 24 10          	mov    0x10(%esp),%eax
58803c:	03 d6                	add    %esi,%edx
58803e:	03 c2                	add    %edx,%eax
588040:	3b c3                	cmp    %ebx,%eax
588042:	b8 40 d1 6b 00       	mov    $0x6bd140,%eax
588047:	0f 45 c8             	cmovne %eax,%ecx
58804a:	0f b6 02             	movzbl (%edx),%eax
58804d:	51                   	push   %ecx
58804e:	50                   	push   %eax
58804f:	68 44 d1 6b 00       	push   $0x6bd144
588054:	57                   	push   %edi
588055:	e8 76 6e f2 ff       	call   0x4aeed0
58805a:	83 c4 10             	add    $0x10,%esp
58805d:	85 c0                	test   %eax,%eax
58805f:	7e 21                	jle    0x588082
588061:	46                   	inc    %esi
588062:	3b f3                	cmp    %ebx,%esi
588064:	7c 8a                	jl     0x587ff0
588066:	6a 01                	push   $0x1
588068:	68 b8 82 6b 00       	push   $0x6b82b8
58806d:	57                   	push   %edi
58806e:	e8 dd aa f2 ff       	call   0x4b2b50
588073:	83 c4 0c             	add    $0xc,%esp
588076:	48                   	dec    %eax
588077:	f7 d8                	neg    %eax
588079:	1b c0                	sbb    %eax,%eax
58807b:	5f                   	pop    %edi
58807c:	5e                   	pop    %esi
58807d:	5d                   	pop    %ebp
58807e:	40                   	inc    %eax
58807f:	5b                   	pop    %ebx
588080:	59                   	pop    %ecx
588081:	c3                   	ret
588082:	5f                   	pop    %edi
588083:	5e                   	pop    %esi
588084:	5d                   	pop    %ebp
588085:	33 c0                	xor    %eax,%eax
588087:	5b                   	pop    %ebx
588088:	59                   	pop    %ecx
588089:	c3                   	ret
58808a:	cc                   	int3
58808b:	cc                   	int3
58808c:	cc                   	int3
58808d:	cc                   	int3
58808e:	cc                   	int3
58808f:	cc                   	int3
588090:	83 7c 24 04 03       	cmpl   $0x3,0x4(%esp)
588095:	75 11                	jne    0x5880a8
588097:	8b 44 24 08          	mov    0x8(%esp),%eax
58809b:	8b 00                	mov    (%eax),%eax
58809d:	ff 70 08             	push   0x8(%eax)
5880a0:	e8 0b d6 f4 ff       	call   0x4d56b0
5880a5:	83 c4 04             	add    $0x4,%esp
5880a8:	b8 01 00 00 00       	mov    $0x1,%eax
5880ad:	c3                   	ret
5880ae:	cc                   	int3
5880af:	cc                   	int3
5880b0:	56                   	push   %esi
5880b1:	57                   	push   %edi
5880b2:	8b 7c 24 0c          	mov    0xc(%esp),%edi
5880b6:	85 ff                	test   %edi,%edi
5880b8:	0f 84 41 01 00 00    	je     0x5881ff
5880be:	8b 47 08             	mov    0x8(%edi),%eax
5880c1:	85 c0                	test   %eax,%eax
5880c3:	74 20                	je     0x5880e5
5880c5:	68 87 00 00 00       	push   $0x87
5880ca:	68 ec 3b 6c 00       	push   $0x6c3bec
5880cf:	6a 0a                	push   $0xa
5880d1:	83 c0 08             	add    $0x8,%eax
5880d4:	6a 01                	push   $0x1
5880d6:	50                   	push   %eax
5880d7:	e8 44 83 f1 ff       	call   0x4a0420
5880dc:	8b 47 08             	mov    0x8(%edi),%eax
5880df:	83 c4 14             	add    $0x14,%esp
5880e2:	5f                   	pop    %edi
5880e3:	5e                   	pop    %esi
5880e4:	c3                   	ret
5880e5:	83 7f 04 00          	cmpl   $0x0,0x4(%edi)
5880e9:	0f 84 10 01 00 00    	je     0x5881ff
5880ef:	e8 cc d6 f4 ff       	call   0x4d57c0
5880f4:	8b f0                	mov    %eax,%esi
5880f6:	85 f6                	test   %esi,%esi
5880f8:	75 1d                	jne    0x588117
5880fa:	68 8f 00 00 00       	push   $0x8f
5880ff:	68 ec 3b 6c 00       	push   $0x6c3bec
588104:	6a 41                	push   $0x41
588106:	6a 77                	push   $0x77
588108:	6a 0b                	push   $0xb
58810a:	e8 91 93 f1 ff       	call   0x4a14a0
58810f:	83 c4 14             	add    $0x14,%esp
588112:	33 c0                	xor    %eax,%eax
588114:	5f                   	pop    %edi
588115:	5e                   	pop    %esi
588116:	c3                   	ret
588117:	8b 07                	mov    (%edi),%eax
588119:	ff 30                	push   (%eax)
58811b:	e8 c0 f8 f1 ff       	call   0x4a79e0
588120:	50                   	push   %eax
588121:	56                   	push   %esi
588122:	e8 59 d7 f4 ff       	call   0x4d5880
588127:	83 c4 0c             	add    $0xc,%esp
58812a:	85 c0                	test   %eax,%eax
58812c:	75 11                	jne    0x58813f
58812e:	68 94 00 00 00       	push   $0x94
588133:	68 ec 3b 6c 00       	push   $0x6c3bec
588138:	6a 6f                	push   $0x6f
58813a:	e9 ab 00 00 00       	jmp    0x5881ea
58813f:	8b 46 0c             	mov    0xc(%esi),%eax
588142:	8b 40 14             	mov    0x14(%eax),%eax
588145:	85 c0                	test   %eax,%eax
588147:	0f 84 91 00 00 00    	je     0x5881de
58814d:	57                   	push   %edi
58814e:	56                   	push   %esi
58814f:	ff d0                	call   *%eax
588151:	83 c4 08             	add    $0x8,%esp
588154:	85 c0                	test   %eax,%eax
588156:	75 11                	jne    0x588169
588158:	68 9a 00 00 00       	push   $0x9a
58815d:	68 ec 3b 6c 00       	push   $0x6c3bec
588162:	6a 7d                	push   $0x7d
588164:	e9 81 00 00 00       	jmp    0x5881ea
588169:	68 a3 00 00 00       	push   $0xa3
58816e:	68 ec 3b 6c 00       	push   $0x6c3bec
588173:	6a 0a                	push   $0xa
588175:	6a 09                	push   $0x9
588177:	e8 44 84 f1 ff       	call   0x4a05c0
58817c:	83 c4 10             	add    $0x10,%esp
58817f:	83 7f 08 00          	cmpl   $0x0,0x8(%edi)
588183:	74 21                	je     0x5881a6
588185:	68 a5 00 00 00       	push   $0xa5
58818a:	68 ec 3b 6c 00       	push   $0x6c3bec
58818f:	6a 0a                	push   $0xa
588191:	6a 0a                	push   $0xa
588193:	e8 28 84 f1 ff       	call   0x4a05c0
588198:	56                   	push   %esi
588199:	e8 12 d5 f4 ff       	call   0x4d56b0
58819e:	8b 77 08             	mov    0x8(%edi),%esi
5881a1:	83 c4 14             	add    $0x14,%esp
5881a4:	eb 19                	jmp    0x5881bf
5881a6:	68 aa 00 00 00       	push   $0xaa
5881ab:	68 ec 3b 6c 00       	push   $0x6c3bec
5881b0:	6a 0a                	push   $0xa
5881b2:	6a 0a                	push   $0xa
5881b4:	89 77 08             	mov    %esi,0x8(%edi)
5881b7:	e8 04 84 f1 ff       	call   0x4a05c0
5881bc:	83 c4 10             	add    $0x10,%esp
5881bf:	68 ac 00 00 00       	push   $0xac
5881c4:	68 ec 3b 6c 00       	push   $0x6c3bec
5881c9:	6a 0a                	push   $0xa
5881cb:	8d 46 08             	lea    0x8(%esi),%eax
5881ce:	6a 01                	push   $0x1
5881d0:	50                   	push   %eax
5881d1:	e8 4a 82 f1 ff       	call   0x4a0420
5881d6:	83 c4 14             	add    $0x14,%esp
5881d9:	8b c6                	mov    %esi,%eax
5881db:	5f                   	pop    %edi
5881dc:	5e                   	pop    %esi
5881dd:	c3                   	ret
5881de:	68 9e 00 00 00       	push   $0x9e
5881e3:	68 ec 3b 6c 00       	push   $0x6c3bec
5881e8:	6a 7c                	push   $0x7c
5881ea:	6a 77                	push   $0x77
5881ec:	6a 0b                	push   $0xb
5881ee:	e8 ad 92 f1 ff       	call   0x4a14a0
5881f3:	83 c4 14             	add    $0x14,%esp
5881f6:	56                   	push   %esi
5881f7:	e8 b4 d4 f4 ff       	call   0x4d56b0
5881fc:	83 c4 04             	add    $0x4,%esp
5881ff:	5f                   	pop    %edi
588200:	33 c0                	xor    %eax,%eax
588202:	5e                   	pop    %esi
588203:	c3                   	ret
588204:	cc                   	int3
588205:	cc                   	int3
588206:	cc                   	int3
588207:	cc                   	int3
588208:	cc                   	int3
588209:	cc                   	int3
58820a:	cc                   	int3
58820b:	cc                   	int3
58820c:	cc                   	int3
58820d:	cc                   	int3
58820e:	cc                   	int3
58820f:	cc                   	int3
588210:	8b 4c 24 04          	mov    0x4(%esp),%ecx
588214:	8b 54 24 14          	mov    0x14(%esp),%edx
588218:	85 c9                	test   %ecx,%ecx
58821a:	74 06                	je     0x588222
58821c:	8b 02                	mov    (%edx),%eax
58821e:	8b 00                	mov    (%eax),%eax
588220:	89 01                	mov    %eax,(%ecx)
588222:	8b 4c 24 08          	mov    0x8(%esp),%ecx
588226:	85 c9                	test   %ecx,%ecx
588228:	74 13                	je     0x58823d
58822a:	8b 42 04             	mov    0x4(%edx),%eax
58822d:	8b 40 08             	mov    0x8(%eax),%eax
588230:	89 01                	mov    %eax,(%ecx)
588232:	8b 42 04             	mov    0x4(%edx),%eax
588235:	8b 08                	mov    (%eax),%ecx
588237:	8b 44 24 0c          	mov    0xc(%esp),%eax
58823b:	89 08                	mov    %ecx,(%eax)
58823d:	8b 4c 24 10          	mov    0x10(%esp),%ecx
588241:	85 c9                	test   %ecx,%ecx
588243:	74 04                	je     0x588249
588245:	8b 02                	mov    (%edx),%eax
588247:	89 01                	mov    %eax,(%ecx)
588249:	b8 01 00 00 00       	mov    $0x1,%eax
58824e:	c3                   	ret
58824f:	cc                   	int3
588250:	b8 b8 3b 6c 00       	mov    $0x6c3bb8,%eax
588255:	c3                   	ret
588256:	cc                   	int3
588257:	cc                   	int3
588258:	cc                   	int3
588259:	cc                   	int3
58825a:	cc                   	int3
58825b:	cc                   	int3
58825c:	cc                   	int3
58825d:	cc                   	int3
58825e:	cc                   	int3
58825f:	cc                   	int3
588260:	56                   	push   %esi
588261:	ff 74 24 14          	push   0x14(%esp)
588265:	8b 74 24 0c          	mov    0xc(%esp),%esi
588269:	ff 74 24 14          	push   0x14(%esp)
58826d:	ff 74 24 14          	push   0x14(%esp)
588271:	ff 36                	push   (%esi)
588273:	e8 38 5e ff ff       	call   0x57e0b0
588278:	83 c4 10             	add    $0x10,%esp
58827b:	85 c0                	test   %eax,%eax
58827d:	75 02                	jne    0x588281
58827f:	5e                   	pop    %esi
588280:	c3                   	ret
588281:	57                   	push   %edi
588282:	8b 7c 24 1c          	mov    0x1c(%esp),%edi
588286:	85 ff                	test   %edi,%edi
588288:	74 30                	je     0x5882ba
58828a:	8b 46 04             	mov    0x4(%esi),%eax
58828d:	8b 40 08             	mov    0x8(%eax),%eax
588290:	85 c0                	test   %eax,%eax
588292:	74 09                	je     0x58829d
588294:	50                   	push   %eax
588295:	e8 96 7e f1 ff       	call   0x4a0130
58829a:	83 c4 04             	add    $0x4,%esp
58829d:	8b 46 04             	mov    0x4(%esi),%eax
5882a0:	89 78 08             	mov    %edi,0x8(%eax)
5882a3:	8b 4e 04             	mov    0x4(%esi),%ecx
5882a6:	8b 44 24 20          	mov    0x20(%esp),%eax
5882aa:	89 01                	mov    %eax,(%ecx)
5882ac:	8b 46 04             	mov    0x4(%esi),%eax
5882af:	83 60 0c f0          	andl   $0xfffffff0,0xc(%eax)
5882b3:	8b 46 04             	mov    0x4(%esi),%eax
5882b6:	83 48 0c 08          	orl    $0x8,0xc(%eax)
5882ba:	5f                   	pop    %edi
5882bb:	b8 01 00 00 00       	mov    $0x1,%eax
5882c0:	5e                   	pop    %esi
5882c1:	c3                   	ret
5882c2:	cc                   	int3
5882c3:	cc                   	int3
5882c4:	cc                   	int3
5882c5:	cc                   	int3
5882c6:	cc                   	int3
5882c7:	cc                   	int3