4080e5:	7f 69                	jg     0x408150
4080e7:	53                   	push   %ebx
4080e8:	8b 5d 08             	mov    0x8(%ebp),%ebx
4080eb:	57                   	push   %edi
4080ec:	8b 7b 04             	mov    0x4(%ebx),%edi
4080ef:	89 7e 04             	mov    %edi,0x4(%esi)
4080f2:	8d 47 01             	lea    0x1(%edi),%eax
4080f5:	39 46 08             	cmp    %eax,0x8(%esi)
4080f8:	72 1e                	jb     0x408118
4080fa:	8b 46 04             	mov    0x4(%esi),%eax
4080fd:	8d 04 45 02 00 00 00 	lea    0x2(,%eax,2),%eax
408104:	50                   	push   %eax
408105:	ff 33                	push   (%ebx)
408107:	ff 36                	push   (%esi)
408109:	e8 72 8f 01 00       	call   0x421080
40810e:	83 c4 0c             	add    $0xc,%esp
408111:	5f                   	pop    %edi
408112:	5b                   	pop    %ebx
408113:	5e                   	pop    %esi
408114:	5d                   	pop    %ebp
408115:	c2 04 00             	ret    $0x4
408118:	50                   	push   %eax
408119:	e8 52 00 00 00       	call   0x408170
40811e:	83 3e 00             	cmpl   $0x0,(%esi)
408121:	89 46 08             	mov    %eax,0x8(%esi)
408124:	74 08                	je     0x40812e
408126:	ff 36                	push   (%esi)
408128:	e8 3f 8f 01 00       	call   0x42106c
40812d:	59                   	pop    %ecx
40812e:	8b 46 08             	mov    0x8(%esi),%eax
408131:	33 c9                	xor    %ecx,%ecx
408133:	6a 02                	push   $0x2
408135:	5a                   	pop    %edx
408136:	f7 e2                	mul    %edx
408138:	0f 90 c1             	seto   %cl
40813b:	f7 d9                	neg    %ecx
40813d:	0b c8                	or     %eax,%ecx
40813f:	51                   	push   %ecx
408140:	e8 b1 8e 01 00       	call   0x420ff6
408145:	59                   	pop    %ecx
408146:	33 c9                	xor    %ecx,%ecx
408148:	89 06                	mov    %eax,(%esi)
40814a:	66 89 0c 78          	mov    %cx,(%eax,%edi,2)
40814e:	eb aa                	jmp    0x4080fa
408150:	48                   	dec    %eax
408151:	89 01                	mov    %eax,(%ecx)
408153:	8b 4d 08             	mov    0x8(%ebp),%ecx
408156:	8b 41 04             	mov    0x4(%ecx),%eax
408159:	89 46 04             	mov    %eax,0x4(%esi)
40815c:	8b 41 08             	mov    0x8(%ecx),%eax
40815f:	89 46 08             	mov    %eax,0x8(%esi)
408162:	8b 01                	mov    (%ecx),%eax
408164:	89 06                	mov    %eax,(%esi)
408166:	8b 41 0c             	mov    0xc(%ecx),%eax
408169:	89 46 0c             	mov    %eax,0xc(%esi)
40816c:	ff 00                	incl   (%eax)
40816e:	eb a3                	jmp    0x408113
408170:	55                   	push   %ebp
408171:	8b ec                	mov    %esp,%ebp
408173:	8b 45 08             	mov    0x8(%ebp),%eax
408176:	85 c0                	test   %eax,%eax
408178:	74 0a                	je     0x408184
40817a:	83 c0 07             	add    $0x7,%eax
40817d:	83 e0 f8             	and    $0xfffffff8,%eax
408180:	5d                   	pop    %ebp
408181:	c2 04 00             	ret    $0x4
408184:	6a 08                	push   $0x8
408186:	58                   	pop    %eax
408187:	eb f7                	jmp    0x408180
408189:	56                   	push   %esi
40818a:	6a 04                	push   $0x4
40818c:	8b f1                	mov    %ecx,%esi
40818e:	e8 63 8e 01 00       	call   0x420ff6
408193:	59                   	pop    %ecx
408194:	85 c0                	test   %eax,%eax
408196:	74 0b                	je     0x4081a3
408198:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
40819e:	89 46 0c             	mov    %eax,0xc(%esi)
4081a1:	5e                   	pop    %esi
4081a2:	c3                   	ret
4081a3:	33 c0                	xor    %eax,%eax
4081a5:	eb f7                	jmp    0x40819e
4081a7:	55                   	push   %ebp
4081a8:	8b ec                	mov    %esp,%ebp
4081aa:	56                   	push   %esi
4081ab:	8b f1                	mov    %ecx,%esi
4081ad:	3b 75 08             	cmp    0x8(%ebp),%esi
4081b0:	74 08                	je     0x4081ba
4081b2:	ff 75 08             	push   0x8(%ebp)
4081b5:	e8 1d ff ff ff       	call   0x4080d7
4081ba:	8b c6                	mov    %esi,%eax
4081bc:	5e                   	pop    %esi
4081bd:	5d                   	pop    %ebp
4081be:	c2 04 00             	ret    $0x4
4081c1:	55                   	push   %ebp
4081c2:	8b ec                	mov    %esp,%ebp
4081c4:	53                   	push   %ebx
4081c5:	8b 5d 08             	mov    0x8(%ebp),%ebx
4081c8:	33 c0                	xor    %eax,%eax
4081ca:	57                   	push   %edi
4081cb:	50                   	push   %eax
4081cc:	50                   	push   %eax
4081cd:	8b 7b 04             	mov    0x4(%ebx),%edi
4081d0:	47                   	inc    %edi
4081d1:	57                   	push   %edi
4081d2:	ff 33                	push   (%ebx)
4081d4:	50                   	push   %eax
4081d5:	68 e9 fd 00 00       	push   $0xfde9
4081da:	ff 15 84 f1 48 00    	call   *0x48f184
4081e0:	89 45 08             	mov    %eax,0x8(%ebp)
4081e3:	85 c0                	test   %eax,%eax
4081e5:	74 47                	je     0x40822e
4081e7:	56                   	push   %esi
4081e8:	33 c9                	xor    %ecx,%ecx
4081ea:	6a 02                	push   $0x2
4081ec:	5a                   	pop    %edx
4081ed:	f7 e2                	mul    %edx
4081ef:	0f 90 c1             	seto   %cl
4081f2:	f7 d9                	neg    %ecx
4081f4:	0b c8                	or     %eax,%ecx
4081f6:	51                   	push   %ecx
4081f7:	e8 fa 8d 01 00       	call   0x420ff6
4081fc:	59                   	pop    %ecx
4081fd:	ff 75 08             	push   0x8(%ebp)
408200:	8b f0                	mov    %eax,%esi
408202:	56                   	push   %esi
408203:	57                   	push   %edi
408204:	ff 33                	push   (%ebx)
408206:	6a 00                	push   $0x0
408208:	68 e9 fd 00 00       	push   $0xfde9
40820d:	ff 15 84 f1 48 00    	call   *0x48f184
408213:	8b 4d 0c             	mov    0xc(%ebp),%ecx
408216:	48                   	dec    %eax
408217:	50                   	push   %eax
408218:	6a 00                	push   $0x0
40821a:	56                   	push   %esi
40821b:	e8 8d f6 ff ff       	call   0x4078ad
408220:	56                   	push   %esi
408221:	e8 46 8e 01 00       	call   0x42106c
408226:	59                   	pop    %ecx
408227:	5e                   	pop    %esi
408228:	5f                   	pop    %edi
408229:	5b                   	pop    %ebx
40822a:	5d                   	pop    %ebp
40822b:	c2 08 00             	ret    $0x8
40822e:	8b 4d 0c             	mov    0xc(%ebp),%ecx
408231:	e8 b6 fc ff ff       	call   0x407eec
408236:	eb f0                	jmp    0x408228
408238:	55                   	push   %ebp
408239:	8b ec                	mov    %esp,%ebp
40823b:	83 ec 0c             	sub    $0xc,%esp
40823e:	56                   	push   %esi
40823f:	8b f1                	mov    %ecx,%esi
408241:	8b 46 0c             	mov    0xc(%esi),%eax
408244:	83 f8 06             	cmp    $0x6,%eax
408247:	7d 05                	jge    0x40824e
408249:	5e                   	pop    %esi
40824a:	8b e5                	mov    %ebp,%esp
40824c:	5d                   	pop    %ebp
40824d:	c3                   	ret
40824e:	33 c9                	xor    %ecx,%ecx
408250:	6a 04                	push   $0x4
408252:	5a                   	pop    %edx
408253:	f7 e2                	mul    %edx
408255:	0f 90 c1             	seto   %cl
408258:	f7 d9                	neg    %ecx
40825a:	0b c8                	or     %eax,%ecx
40825c:	51                   	push   %ecx
40825d:	e8 94 8d 01 00       	call   0x420ff6
408262:	8b 16                	mov    (%esi),%edx
408264:	59                   	pop    %ecx
408265:	33 c9                	xor    %ecx,%ecx
408267:	89 46 08             	mov    %eax,0x8(%esi)
40826a:	39 4e 0c             	cmp    %ecx,0xc(%esi)
40826d:	7e 0f                	jle    0x40827e
40826f:	8b 46 08             	mov    0x8(%esi),%eax
408272:	89 14 88             	mov    %edx,(%eax,%ecx,4)
408275:	41                   	inc    %ecx
408276:	8b 52 24             	mov    0x24(%edx),%edx
408279:	3b 4e 0c             	cmp    0xc(%esi),%ecx
40827c:	7c f1                	jl     0x40826f
40827e:	53                   	push   %ebx
40827f:	57                   	push   %edi
408280:	8b 46 0c             	mov    0xc(%esi),%eax
408283:	32 db                	xor    %bl,%bl
408285:	33 ff                	xor    %edi,%edi
408287:	48                   	dec    %eax
408288:	85 c0                	test   %eax,%eax
40828a:	7e 2a                	jle    0x4082b6
40828c:	8b 46 08             	mov    0x8(%esi),%eax
40828f:	8b 0c b8             	mov    (%eax,%edi,4),%ecx
408292:	8b d1                	mov    %ecx,%edx
408294:	8b 44 b8 04          	mov    0x4(%eax,%edi,4),%eax
408298:	89 4d f4             	mov    %ecx,-0xc(%ebp)
40829b:	8b c8                	mov    %eax,%ecx
40829d:	89 45 f8             	mov    %eax,-0x8(%ebp)
4082a0:	e8 6e dc 00 00       	call   0x415f13
4082a5:	84 c0                	test   %al,%al
4082a7:	75 11                	jne    0x4082ba
4082a9:	8b 46 0c             	mov    0xc(%esi),%eax
4082ac:	47                   	inc    %edi
4082ad:	48                   	dec    %eax
4082ae:	3b f8                	cmp    %eax,%edi
4082b0:	7c da                	jl     0x40828c
4082b2:	84 db                	test   %bl,%bl
4082b4:	75 ca                	jne    0x408280
4082b6:	5f                   	pop    %edi
4082b7:	5b                   	pop    %ebx
4082b8:	eb 8f                	jmp    0x408249
4082ba:	8b 46 08             	mov    0x8(%esi),%eax
4082bd:	b3 01                	mov    $0x1,%bl
4082bf:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4082c2:	89 0c b8             	mov    %ecx,(%eax,%edi,4)
4082c5:	8b 46 08             	mov    0x8(%esi),%eax
4082c8:	8b 4d f4             	mov    -0xc(%ebp),%ecx
4082cb:	89 4c b8 04          	mov    %ecx,0x4(%eax,%edi,4)
4082cf:	eb d8                	jmp    0x4082a9
4082d1:	cc                   	int3
4082d2:	cc                   	int3
4082d3:	cc                   	int3
4082d4:	cc                   	int3
4082d5:	cc                   	int3
4082d6:	cc                   	int3
4082d7:	cc                   	int3
4082d8:	cc                   	int3
4082d9:	cc                   	int3
4082da:	cc                   	int3
4082db:	cc                   	int3
4082dc:	cc                   	int3
4082dd:	cc                   	int3
4082de:	cc                   	int3
4082df:	cc                   	int3
4082e0:	55                   	push   %ebp
4082e1:	8b ec                	mov    %esp,%ebp
4082e3:	51                   	push   %ecx
4082e4:	53                   	push   %ebx
4082e5:	56                   	push   %esi
4082e6:	8b f1                	mov    %ecx,%esi
4082e8:	57                   	push   %edi
4082e9:	83 7e 0c 00          	cmpl   $0x0,0xc(%esi)
4082ed:	74 75                	je     0x408364
4082ef:	8d 4d 08             	lea    0x8(%ebp),%ecx
4082f2:	e8 b8 fc ff ff       	call   0x407faf
4082f7:	ff 75 0c             	push   0xc(%ebp)
4082fa:	ff 75 08             	push   0x8(%ebp)
4082fd:	ff 15 7c f6 48 00    	call   *0x48f67c
408303:	8b 7e 08             	mov    0x8(%esi),%edi
408306:	85 ff                	test   %edi,%edi
408308:	75 5e                	jne    0x408368
40830a:	8b 3e                	mov    (%esi),%edi
40830c:	85 ff                	test   %edi,%edi
40830e:	74 54                	je     0x408364
408310:	8b 77 04             	mov    0x4(%edi),%esi
408313:	3b 75 0c             	cmp    0xc(%ebp),%esi
408316:	75 45                	jne    0x40835d
408318:	8b 55 08             	mov    0x8(%ebp),%edx
40831b:	8b 07                	mov    (%edi),%eax
40831d:	85 f6                	test   %esi,%esi
40831f:	74 11                	je     0x408332
408321:	66 8b 08             	mov    (%eax),%cx
408324:	66 3b 0a             	cmp    (%edx),%cx
408327:	75 34                	jne    0x40835d
408329:	83 c0 02             	add    $0x2,%eax
40832c:	83 c2 02             	add    $0x2,%edx
40832f:	4e                   	dec    %esi
408330:	75 ef                	jne    0x408321
408332:	8b 45 14             	mov    0x14(%ebp),%eax
408335:	ff 08                	decl   (%eax)
408337:	8b 45 14             	mov    0x14(%ebp),%eax
40833a:	83 38 00             	cmpl   $0x0,(%eax)
40833d:	75 13                	jne    0x408352
40833f:	ff 75 08             	push   0x8(%ebp)
408342:	e8 25 8d 01 00       	call   0x42106c
408347:	ff 75 14             	push   0x14(%ebp)
40834a:	e8 1d 8d 01 00       	call   0x42106c
40834f:	83 c4 08             	add    $0x8,%esp
408352:	8b c7                	mov    %edi,%eax
408354:	5f                   	pop    %edi
408355:	5e                   	pop    %esi
408356:	5b                   	pop    %ebx
408357:	8b e5                	mov    %ebp,%esp
408359:	5d                   	pop    %ebp
40835a:	c2 10 00             	ret    $0x10
40835d:	8b 7f 24             	mov    0x24(%edi),%edi
408360:	85 ff                	test   %edi,%edi
408362:	75 ac                	jne    0x408310
408364:	33 ff                	xor    %edi,%edi
408366:	eb ca                	jmp    0x408332
408368:	8b 76 0c             	mov    0xc(%esi),%esi
40836b:	33 db                	xor    %ebx,%ebx
40836d:	4e                   	dec    %esi
40836e:	78 f4                	js     0x408364
408370:	8d 04 1e             	lea    (%esi,%ebx,1),%eax
408373:	99                   	cltd
408374:	8d 4d 08             	lea    0x8(%ebp),%ecx
408377:	2b c2                	sub    %edx,%eax
408379:	d1 f8                	sar    $1,%eax
40837b:	89 45 fc             	mov    %eax,-0x4(%ebp)
40837e:	ff 34 87             	push   (%edi,%eax,4)
408381:	e8 93 fc ff ff       	call   0x408019
408386:	85 c0                	test   %eax,%eax
408388:	78 0c                	js     0x408396
40838a:	7e 10                	jle    0x40839c
40838c:	8b 5d fc             	mov    -0x4(%ebp),%ebx
40838f:	43                   	inc    %ebx
408390:	3b de                	cmp    %esi,%ebx
408392:	7e dc                	jle    0x408370
408394:	eb ce                	jmp    0x408364
408396:	8b 75 fc             	mov    -0x4(%ebp),%esi
408399:	4e                   	dec    %esi
40839a:	eb f4                	jmp    0x408390
40839c:	3b de                	cmp    %esi,%ebx
40839e:	7f c4                	jg     0x408364
4083a0:	8b 45 fc             	mov    -0x4(%ebp),%eax
4083a3:	8b 3c 87             	mov    (%edi,%eax,4),%edi
4083a6:	eb 8a                	jmp    0x408332
4083a8:	55                   	push   %ebp
4083a9:	8b ec                	mov    %esp,%ebp
4083ab:	57                   	push   %edi
4083ac:	8b f9                	mov    %ecx,%edi
4083ae:	83 7f 08 00          	cmpl   $0x0,0x8(%edi)
4083b2:	75 47                	jne    0x4083fb
4083b4:	56                   	push   %esi
4083b5:	6a 28                	push   $0x28
4083b7:	e8 3a 8c 01 00       	call   0x420ff6
4083bc:	8b f0                	mov    %eax,%esi
4083be:	59                   	pop    %ecx
4083bf:	85 f6                	test   %esi,%esi
4083c1:	74 41                	je     0x408404
4083c3:	8b ce                	mov    %esi,%ecx
4083c5:	e8 fd f3 ff ff       	call   0x4077c7
4083ca:	ff 75 08             	push   0x8(%ebp)
4083cd:	8b ce                	mov    %esi,%ecx
4083cf:	e8 ec 83 01 00       	call   0x4207c0
4083d4:	8b ce                	mov    %esi,%ecx
4083d6:	e8 d4 fb ff ff       	call   0x407faf
4083db:	ff 76 04             	push   0x4(%esi)
4083de:	ff 36                	push   (%esi)
4083e0:	ff 15 7c f6 48 00    	call   *0x48f67c
4083e6:	83 66 24 00          	andl   $0x0,0x24(%esi)
4083ea:	8b 47 04             	mov    0x4(%edi),%eax
4083ed:	85 c0                	test   %eax,%eax
4083ef:	74 0f                	je     0x408400
4083f1:	89 70 24             	mov    %esi,0x24(%eax)
4083f4:	ff 47 0c             	incl   0xc(%edi)
4083f7:	89 77 04             	mov    %esi,0x4(%edi)
4083fa:	5e                   	pop    %esi
4083fb:	5f                   	pop    %edi
4083fc:	5d                   	pop    %ebp
4083fd:	c2 04 00             	ret    $0x4