408012:	8b 4d fc             	mov    -0x4(%ebp),%ecx
408015:	5f                   	pop    %edi
408016:	33 cd                	xor    %ebp,%ecx
408018:	5b                   	pop    %ebx
408019:	e8 17 b6 ff ff       	call   0x403635
40801e:	c9                   	leave
40801f:	c3                   	ret
408020:	8b ff                	mov    %edi,%edi
408022:	55                   	push   %ebp
408023:	8b ec                	mov    %esp,%ebp
408025:	53                   	push   %ebx
408026:	57                   	push   %edi
408027:	8b f9                	mov    %ecx,%edi
408029:	8b 4d 08             	mov    0x8(%ebp),%ecx
40802c:	c6 47 0c 00          	movb   $0x0,0xc(%edi)
408030:	8d 5f 04             	lea    0x4(%edi),%ebx
408033:	85 c9                	test   %ecx,%ecx
408035:	74 07                	je     0x40803e
408037:	8b 01                	mov    (%ecx),%eax
408039:	8b 49 04             	mov    0x4(%ecx),%ecx
40803c:	eb 14                	jmp    0x408052
40803e:	83 3d c8 6e 41 00 00 	cmpl   $0x0,0x416ec8
408045:	75 12                	jne    0x408059
408047:	a1 10 61 41 00       	mov    0x416110,%eax
40804c:	8b 0d 14 61 41 00    	mov    0x416114,%ecx
408052:	89 03                	mov    %eax,(%ebx)
408054:	89 4b 04             	mov    %ecx,0x4(%ebx)
408057:	eb 41                	jmp    0x40809a
408059:	56                   	push   %esi
40805a:	e8 41 f4 ff ff       	call   0x4074a0
40805f:	89 07                	mov    %eax,(%edi)
408061:	8d 77 08             	lea    0x8(%edi),%esi
408064:	53                   	push   %ebx
408065:	50                   	push   %eax
408066:	8b 48 4c             	mov    0x4c(%eax),%ecx
408069:	89 0b                	mov    %ecx,(%ebx)
40806b:	8b 48 48             	mov    0x48(%eax),%ecx
40806e:	89 0e                	mov    %ecx,(%esi)
408070:	e8 95 2b 00 00       	call   0x40ac0a
408075:	56                   	push   %esi
408076:	ff 37                	push   (%edi)
408078:	e8 eb 2b 00 00       	call   0x40ac68
40807d:	8b 0f                	mov    (%edi),%ecx
40807f:	83 c4 10             	add    $0x10,%esp
408082:	8b 81 50 03 00 00    	mov    0x350(%ecx),%eax
408088:	5e                   	pop    %esi
408089:	a8 02                	test   $0x2,%al
40808b:	75 0d                	jne    0x40809a
40808d:	83 c8 02             	or     $0x2,%eax
408090:	89 81 50 03 00 00    	mov    %eax,0x350(%ecx)
408096:	c6 47 0c 01          	movb   $0x1,0xc(%edi)
40809a:	8b c7                	mov    %edi,%eax
40809c:	5f                   	pop    %edi
40809d:	5b                   	pop    %ebx
40809e:	5d                   	pop    %ebp
40809f:	c2 04 00             	ret    $0x4
4080a2:	8b ff                	mov    %edi,%edi
4080a4:	56                   	push   %esi
4080a5:	57                   	push   %edi
4080a6:	8b f9                	mov    %ecx,%edi
4080a8:	8b 37                	mov    (%edi),%esi
4080aa:	eb 0b                	jmp    0x4080b7
4080ac:	ff 36                	push   (%esi)
4080ae:	e8 c6 f7 ff ff       	call   0x407879
4080b3:	59                   	pop    %ecx
4080b4:	83 c6 04             	add    $0x4,%esi
4080b7:	3b 77 04             	cmp    0x4(%edi),%esi
4080ba:	75 f0                	jne    0x4080ac
4080bc:	ff 37                	push   (%edi)
4080be:	e8 b6 f7 ff ff       	call   0x407879
4080c3:	59                   	pop    %ecx
4080c4:	5f                   	pop    %edi
4080c5:	5e                   	pop    %esi
4080c6:	c3                   	ret
4080c7:	8b ff                	mov    %edi,%edi
4080c9:	55                   	push   %ebp
4080ca:	8b ec                	mov    %esp,%ebp
4080cc:	33 c0                	xor    %eax,%eax
4080ce:	50                   	push   %eax
4080cf:	50                   	push   %eax
4080d0:	ff 75 14             	push   0x14(%ebp)
4080d3:	ff 75 10             	push   0x10(%ebp)
4080d6:	6a ff                	push   $0xffffffff
4080d8:	ff 75 0c             	push   0xc(%ebp)
4080db:	50                   	push   %eax
4080dc:	ff 75 08             	push   0x8(%ebp)
4080df:	e8 5a 0d 00 00       	call   0x408e3e
4080e4:	83 c4 20             	add    $0x20,%esp
4080e7:	5d                   	pop    %ebp
4080e8:	c2 10 00             	ret    $0x10
4080eb:	8b ff                	mov    %edi,%edi
4080ed:	55                   	push   %ebp
4080ee:	8b ec                	mov    %esp,%ebp
4080f0:	83 ec 10             	sub    $0x10,%esp
4080f3:	6a 00                	push   $0x0
4080f5:	8d 4d f0             	lea    -0x10(%ebp),%ecx
4080f8:	e8 23 ff ff ff       	call   0x408020
4080fd:	8b 45 f4             	mov    -0xc(%ebp),%eax
408100:	ba e9 fd 00 00       	mov    $0xfde9,%edx
408105:	39 50 08             	cmp    %edx,0x8(%eax)
408108:	74 0c                	je     0x408116
40810a:	e8 5e 1c 00 00       	call   0x409d6d
40810f:	33 d2                	xor    %edx,%edx
408111:	85 c0                	test   %eax,%eax
408113:	75 01                	jne    0x408116
408115:	42                   	inc    %edx
408116:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
40811a:	74 0a                	je     0x408126
40811c:	8b 4d f0             	mov    -0x10(%ebp),%ecx
40811f:	83 a1 50 03 00 00 fd 	andl   $0xfffffffd,0x350(%ecx)
408126:	8b c2                	mov    %edx,%eax
408128:	c9                   	leave
408129:	c3                   	ret
40812a:	8b ff                	mov    %edi,%edi
40812c:	56                   	push   %esi
40812d:	8b f1                	mov    %ecx,%esi
40812f:	80 7e 14 00          	cmpb   $0x0,0x14(%esi)
408133:	74 0d                	je     0x408142
408135:	ff 76 08             	push   0x8(%esi)
408138:	e8 3c f7 ff ff       	call   0x407879
40813d:	59                   	pop    %ecx
40813e:	c6 46 14 00          	movb   $0x0,0x14(%esi)
408142:	5e                   	pop    %esi
408143:	c3                   	ret
408144:	8b ff                	mov    %edi,%edi
408146:	55                   	push   %ebp
408147:	8b ec                	mov    %esp,%ebp
408149:	56                   	push   %esi
40814a:	57                   	push   %edi
40814b:	8b f1                	mov    %ecx,%esi
40814d:	e8 d8 ff ff ff       	call   0x40812a
408152:	8b 7d 08             	mov    0x8(%ebp),%edi
408155:	8d 46 08             	lea    0x8(%esi),%eax
408158:	56                   	push   %esi
408159:	57                   	push   %edi
40815a:	50                   	push   %eax
40815b:	e8 5f 00 00 00       	call   0x4081bf
408160:	83 c4 0c             	add    $0xc,%esp
408163:	85 c0                	test   %eax,%eax
408165:	74 0a                	je     0x408171
408167:	83 66 0c 00          	andl   $0x0,0xc(%esi)
40816b:	c6 46 14 00          	movb   $0x0,0x14(%esi)
40816f:	eb 09                	jmp    0x40817a
408171:	c6 46 14 01          	movb   $0x1,0x14(%esi)
408175:	33 c0                	xor    %eax,%eax
408177:	89 7e 0c             	mov    %edi,0xc(%esi)
40817a:	5f                   	pop    %edi
40817b:	5e                   	pop    %esi
40817c:	5d                   	pop    %ebp
40817d:	c2 04 00             	ret    $0x4
408180:	8b ff                	mov    %edi,%edi
408182:	55                   	push   %ebp
408183:	8b ec                	mov    %esp,%ebp
408185:	56                   	push   %esi
408186:	57                   	push   %edi
408187:	8b f1                	mov    %ecx,%esi
408189:	e8 9c ff ff ff       	call   0x40812a
40818e:	8b 7d 08             	mov    0x8(%ebp),%edi
408191:	56                   	push   %esi
408192:	8d 04 3f             	lea    (%edi,%edi,1),%eax
408195:	50                   	push   %eax
408196:	8d 46 08             	lea    0x8(%esi),%eax
408199:	50                   	push   %eax
40819a:	e8 20 00 00 00       	call   0x4081bf
40819f:	83 c4 0c             	add    $0xc,%esp
4081a2:	85 c0                	test   %eax,%eax
4081a4:	74 0a                	je     0x4081b0
4081a6:	83 66 0c 00          	andl   $0x0,0xc(%esi)
4081aa:	c6 46 14 00          	movb   $0x0,0x14(%esi)
4081ae:	eb 09                	jmp    0x4081b9
4081b0:	c6 46 14 01          	movb   $0x1,0x14(%esi)
4081b4:	33 c0                	xor    %eax,%eax
4081b6:	89 7e 0c             	mov    %edi,0xc(%esi)
4081b9:	5f                   	pop    %edi
4081ba:	5e                   	pop    %esi
4081bb:	5d                   	pop    %ebp
4081bc:	c2 04 00             	ret    $0x4
4081bf:	8b ff                	mov    %edi,%edi
4081c1:	55                   	push   %ebp
4081c2:	8b ec                	mov    %esp,%ebp
4081c4:	ff 75 0c             	push   0xc(%ebp)
4081c7:	e8 5f f6 ff ff       	call   0x40782b
4081cc:	59                   	pop    %ecx
4081cd:	8b 4d 08             	mov    0x8(%ebp),%ecx
4081d0:	89 01                	mov    %eax,(%ecx)
4081d2:	f7 d8                	neg    %eax
4081d4:	1b c0                	sbb    %eax,%eax
4081d6:	83 e0 f4             	and    $0xfffffff4,%eax
4081d9:	83 c0 0c             	add    $0xc,%eax
4081dc:	5d                   	pop    %ebp
4081dd:	c3                   	ret
4081de:	8b ff                	mov    %edi,%edi
4081e0:	56                   	push   %esi
4081e1:	8b f1                	mov    %ecx,%esi
4081e3:	57                   	push   %edi
4081e4:	8b 7e 08             	mov    0x8(%esi),%edi
4081e7:	39 7e 04             	cmp    %edi,0x4(%esi)
4081ea:	74 04                	je     0x4081f0
4081ec:	33 c0                	xor    %eax,%eax
4081ee:	eb 72                	jmp    0x408262
4081f0:	83 3e 00             	cmpl   $0x0,(%esi)
4081f3:	75 26                	jne    0x40821b
4081f5:	6a 04                	push   $0x4
4081f7:	6a 04                	push   $0x4
4081f9:	e8 65 f7 ff ff       	call   0x407963
4081fe:	6a 00                	push   $0x0
408200:	89 06                	mov    %eax,(%esi)
408202:	e8 72 f6 ff ff       	call   0x407879
408207:	8b 06                	mov    (%esi),%eax
408209:	83 c4 0c             	add    $0xc,%esp
40820c:	85 c0                	test   %eax,%eax
40820e:	74 18                	je     0x408228
408210:	89 46 04             	mov    %eax,0x4(%esi)
408213:	83 c0 10             	add    $0x10,%eax
408216:	89 46 08             	mov    %eax,0x8(%esi)
408219:	eb d1                	jmp    0x4081ec
40821b:	2b 3e                	sub    (%esi),%edi
40821d:	c1 ff 02             	sar    $0x2,%edi
408220:	81 ff ff ff ff 7f    	cmp    $0x7fffffff,%edi
408226:	76 05                	jbe    0x40822d
408228:	6a 0c                	push   $0xc
40822a:	58                   	pop    %eax
40822b:	eb 35                	jmp    0x408262
40822d:	53                   	push   %ebx
40822e:	6a 04                	push   $0x4
408230:	8d 1c 3f             	lea    (%edi,%edi,1),%ebx
408233:	53                   	push   %ebx
408234:	ff 36                	push   (%esi)
408236:	e8 73 1d 00 00       	call   0x409fae
40823b:	83 c4 0c             	add    $0xc,%esp
40823e:	85 c0                	test   %eax,%eax
408240:	75 05                	jne    0x408247
408242:	6a 0c                	push   $0xc
408244:	5e                   	pop    %esi
408245:	eb 10                	jmp    0x408257
408247:	89 06                	mov    %eax,(%esi)
408249:	8d 0c b8             	lea    (%eax,%edi,4),%ecx
40824c:	8d 04 98             	lea    (%eax,%ebx,4),%eax
40824f:	89 4e 04             	mov    %ecx,0x4(%esi)
408252:	89 46 08             	mov    %eax,0x8(%esi)
408255:	33 f6                	xor    %esi,%esi
408257:	6a 00                	push   $0x0
408259:	e8 1b f6 ff ff       	call   0x407879
40825e:	59                   	pop    %ecx
40825f:	8b c6                	mov    %esi,%eax
408261:	5b                   	pop    %ebx
408262:	5f                   	pop    %edi
408263:	5e                   	pop    %esi
408264:	c3                   	ret
408265:	8b ff                	mov    %edi,%edi
408267:	55                   	push   %ebp
408268:	8b ec                	mov    %esp,%ebp
40826a:	5d                   	pop    %ebp
40826b:	e9 fd f8 ff ff       	jmp    0x407b6d
408270:	8b ff                	mov    %edi,%edi
408272:	55                   	push   %ebp
408273:	8b ec                	mov    %esp,%ebp
408275:	56                   	push   %esi
408276:	8b 75 08             	mov    0x8(%ebp),%esi
408279:	85 f6                	test   %esi,%esi
40827b:	75 0f                	jne    0x40828c
40827d:	8b 4d 0c             	mov    0xc(%ebp),%ecx
408280:	e8 d4 00 00 00       	call   0x408359
408285:	33 c0                	xor    %eax,%eax
408287:	e9 a3 00 00 00       	jmp    0x40832f
40828c:	53                   	push   %ebx
40828d:	33 db                	xor    %ebx,%ebx
40828f:	66 39 1e             	cmp    %bx,(%esi)
408292:	75 25                	jne    0x4082b9
408294:	8b 75 0c             	mov    0xc(%ebp),%esi
408297:	39 5e 0c             	cmp    %ebx,0xc(%esi)
40829a:	75 11                	jne    0x4082ad
40829c:	6a 01                	push   $0x1
40829e:	8b ce                	mov    %esi,%ecx
4082a0:	e8 8d 00 00 00       	call   0x408332
4082a5:	85 c0                	test   %eax,%eax
4082a7:	0f 85 81 00 00 00    	jne    0x40832e
4082ad:	8b 46 08             	mov    0x8(%esi),%eax
4082b0:	88 18                	mov    %bl,(%eax)
4082b2:	33 c0                	xor    %eax,%eax
4082b4:	89 5e 10             	mov    %ebx,0x10(%esi)
4082b7:	eb 75                	jmp    0x40832e
4082b9:	53                   	push   %ebx
4082ba:	53                   	push   %ebx
4082bb:	53                   	push   %ebx
4082bc:	53                   	push   %ebx
4082bd:	6a ff                	push   $0xffffffff
4082bf:	56                   	push   %esi
4082c0:	53                   	push   %ebx
4082c1:	ff 75 14             	push   0x14(%ebp)
4082c4:	e8 75 0b 00 00       	call   0x408e3e
4082c9:	83 c4 20             	add    $0x20,%esp
4082cc:	85 c0                	test   %eax,%eax
4082ce:	75 16                	jne    0x4082e6
4082d0:	ff 15 58 f0 40 00    	call   *0x40f058
4082d6:	50                   	push   %eax
4082d7:	e8 1a f6 ff ff       	call   0x4078f6
4082dc:	59                   	pop    %ecx
4082dd:	e8 6e f6 ff ff       	call   0x407950
4082e2:	8b 00                	mov    (%eax),%eax
4082e4:	eb 48                	jmp    0x40832e
4082e6:	57                   	push   %edi
4082e7:	8b 7d 0c             	mov    0xc(%ebp),%edi
4082ea:	3b 47 0c             	cmp    0xc(%edi),%eax
4082ed:	76 0c                	jbe    0x4082fb
4082ef:	50                   	push   %eax
4082f0:	8b cf                	mov    %edi,%ecx
4082f2:	e8 3b 00 00 00       	call   0x408332
4082f7:	85 c0                	test   %eax,%eax
4082f9:	75 32                	jne    0x40832d
4082fb:	ff 77 0c             	push   0xc(%edi)
4082fe:	8b 4d 10             	mov    0x10(%ebp),%ecx
408301:	ff 77 08             	push   0x8(%edi)
408304:	56                   	push   %esi
408305:	ff 75 14             	push   0x14(%ebp)
408308:	e8 ba fd ff ff       	call   0x4080c7
40830d:	85 c0                	test   %eax,%eax
40830f:	75 16                	jne    0x408327
408311:	ff 15 58 f0 40 00    	call   *0x40f058
408317:	50                   	push   %eax
408318:	e8 d9 f5 ff ff       	call   0x4078f6
40831d:	59                   	pop    %ecx
40831e:	e8 2d f6 ff ff       	call   0x407950
408323:	8b 00                	mov    (%eax),%eax
408325:	eb 06                	jmp    0x40832d
408327:	48                   	dec    %eax
408328:	89 47 10             	mov    %eax,0x10(%edi)
40832b:	33 c0                	xor    %eax,%eax
40832d:	5f                   	pop    %edi
40832e:	5b                   	pop    %ebx
40832f:	5e                   	pop    %esi
408330:	5d                   	pop    %ebp
408331:	c3                   	ret
408332:	8b ff                	mov    %edi,%edi
408334:	56                   	push   %esi
408335:	8b f1                	mov    %ecx,%esi
408337:	80 7e 14 00          	cmpb   $0x0,0x14(%esi)
40833b:	74 04                	je     0x408341
40833d:	c6 46 14 00          	movb   $0x0,0x14(%esi)
408341:	e8 0a f6 ff ff       	call   0x407950
408346:	6a 22                	push   $0x22
408348:	59                   	pop    %ecx
408349:	89 08                	mov    %ecx,(%eax)
40834b:	8b c1                	mov    %ecx,%eax
40834d:	83 66 0c 00          	andl   $0x0,0xc(%esi)
408351:	c6 46 14 00          	movb   $0x0,0x14(%esi)
408355:	5e                   	pop    %esi
408356:	c2 04 00             	ret    $0x4
408359:	33 c0                	xor    %eax,%eax
40835b:	38 41 14             	cmp    %al,0x14(%ecx)