405ffd:	44                   	inc    %esp
405ffe:	8e 18                	mov    (%eax),%ds
406000:	89 44 8f 18          	mov    %eax,0x18(%edi,%ecx,4)
406004:	8b 44 8e 14          	mov    0x14(%esi,%ecx,4),%eax
406008:	89 44 8f 14          	mov    %eax,0x14(%edi,%ecx,4)
40600c:	8b 44 8e 10          	mov    0x10(%esi,%ecx,4),%eax
406010:	89 44 8f 10          	mov    %eax,0x10(%edi,%ecx,4)
406014:	8b 44 8e 0c          	mov    0xc(%esi,%ecx,4),%eax
406018:	89 44 8f 0c          	mov    %eax,0xc(%edi,%ecx,4)
40601c:	8b 44 8e 08          	mov    0x8(%esi,%ecx,4),%eax
406020:	89 44 8f 08          	mov    %eax,0x8(%edi,%ecx,4)
406024:	8b 44 8e 04          	mov    0x4(%esi,%ecx,4),%eax
406028:	89 44 8f 04          	mov    %eax,0x4(%edi,%ecx,4)
40602c:	8d 04 8d 00 00 00 00 	lea    0x0(,%ecx,4),%eax
406033:	03 f0                	add    %eax,%esi
406035:	03 f8                	add    %eax,%edi
406037:	ff 24 95 40 60 40 00 	jmp    *0x406040(,%edx,4)
40603e:	8b ff                	mov    %edi,%edi
406040:	50                   	push   %eax
406041:	60                   	pusha
406042:	40                   	inc    %eax
406043:	00 58 60             	add    %bl,0x60(%eax)
406046:	40                   	inc    %eax
406047:	00 68 60             	add    %ch,0x60(%eax)
40604a:	40                   	inc    %eax
40604b:	00 7c 60 40          	add    %bh,0x40(%eax,%eiz,2)
40604f:	00 8b 45 08 5e 5f    	add    %cl,0x5f5e0845(%ebx)
406055:	c9                   	leave
406056:	c3                   	ret
406057:	90                   	nop
406058:	8a 46 03             	mov    0x3(%esi),%al
40605b:	88 47 03             	mov    %al,0x3(%edi)
40605e:	8b 45 08             	mov    0x8(%ebp),%eax
406061:	5e                   	pop    %esi
406062:	5f                   	pop    %edi
406063:	c9                   	leave
406064:	c3                   	ret
406065:	8d 49 00             	lea    0x0(%ecx),%ecx
406068:	8a 46 03             	mov    0x3(%esi),%al
40606b:	88 47 03             	mov    %al,0x3(%edi)
40606e:	8a 46 02             	mov    0x2(%esi),%al
406071:	88 47 02             	mov    %al,0x2(%edi)
406074:	8b 45 08             	mov    0x8(%ebp),%eax
406077:	5e                   	pop    %esi
406078:	5f                   	pop    %edi
406079:	c9                   	leave
40607a:	c3                   	ret
40607b:	90                   	nop
40607c:	8a 46 03             	mov    0x3(%esi),%al
40607f:	88 47 03             	mov    %al,0x3(%edi)
406082:	8a 46 02             	mov    0x2(%esi),%al
406085:	88 47 02             	mov    %al,0x2(%edi)
406088:	8a 46 01             	mov    0x1(%esi),%al
40608b:	88 47 01             	mov    %al,0x1(%edi)
40608e:	8b 45 08             	mov    0x8(%ebp),%eax
406091:	5e                   	pop    %esi
406092:	5f                   	pop    %edi
406093:	c9                   	leave
406094:	c3                   	ret
406095:	55                   	push   %ebp
406096:	8b ec                	mov    %esp,%ebp
406098:	56                   	push   %esi
406099:	ff 75 14             	push   0x14(%ebp)
40609c:	e8 25 f8 ff ff       	call   0x4058c6
4060a1:	ff 75 14             	push   0x14(%ebp)
4060a4:	ff 75 10             	push   0x10(%ebp)
4060a7:	ff 75 0c             	push   0xc(%ebp)
4060aa:	ff 75 08             	push   0x8(%ebp)
4060ad:	e8 12 00 00 00       	call   0x4060c4
4060b2:	ff 75 14             	push   0x14(%ebp)
4060b5:	8b f0                	mov    %eax,%esi
4060b7:	e8 5c f8 ff ff       	call   0x405918
4060bc:	83 c4 18             	add    $0x18,%esp
4060bf:	8b c6                	mov    %esi,%eax
4060c1:	5e                   	pop    %esi
4060c2:	5d                   	pop    %ebp
4060c3:	c3                   	ret
4060c4:	55                   	push   %ebp
4060c5:	8b ec                	mov    %esp,%ebp
4060c7:	51                   	push   %ecx
4060c8:	53                   	push   %ebx
4060c9:	56                   	push   %esi
4060ca:	57                   	push   %edi
4060cb:	8b 7d 0c             	mov    0xc(%ebp),%edi
4060ce:	0f af 7d 10          	imul   0x10(%ebp),%edi
4060d2:	8b 45 08             	mov    0x8(%ebp),%eax
4060d5:	89 7d fc             	mov    %edi,-0x4(%ebp)
4060d8:	85 ff                	test   %edi,%edi
4060da:	89 45 08             	mov    %eax,0x8(%ebp)
4060dd:	8b df                	mov    %edi,%ebx
4060df:	75 07                	jne    0x4060e8
4060e1:	33 c0                	xor    %eax,%eax
4060e3:	e9 cd 00 00 00       	jmp    0x4061b5
4060e8:	8b 75 14             	mov    0x14(%ebp),%esi
4060eb:	66 f7 46 0c 0c 01    	testw  $0x10c,0xc(%esi)
4060f1:	74 08                	je     0x4060fb
4060f3:	8b 46 18             	mov    0x18(%esi),%eax
4060f6:	89 45 14             	mov    %eax,0x14(%ebp)
4060f9:	eb 07                	jmp    0x406102
4060fb:	c7 45 14 00 10 00 00 	movl   $0x1000,0x14(%ebp)
406102:	8b 4e 0c             	mov    0xc(%esi),%ecx
406105:	81 e1 08 01 00 00    	and    $0x108,%ecx
40610b:	74 29                	je     0x406136
40610d:	8b 46 04             	mov    0x4(%esi),%eax
406110:	85 c0                	test   %eax,%eax
406112:	74 22                	je     0x406136
406114:	3b d8                	cmp    %eax,%ebx
406116:	8b fb                	mov    %ebx,%edi
406118:	72 02                	jb     0x40611c
40611a:	8b f8                	mov    %eax,%edi
40611c:	57                   	push   %edi
40611d:	ff 75 08             	push   0x8(%ebp)
406120:	ff 36                	push   (%esi)
406122:	e8 39 fc ff ff       	call   0x405d60
406127:	29 7e 04             	sub    %edi,0x4(%esi)
40612a:	01 3e                	add    %edi,(%esi)
40612c:	83 c4 0c             	add    $0xc,%esp
40612f:	2b df                	sub    %edi,%ebx
406131:	01 7d 08             	add    %edi,0x8(%ebp)
406134:	eb 46                	jmp    0x40617c
406136:	3b 5d 14             	cmp    0x14(%ebp),%ebx
406139:	72 46                	jb     0x406181
40613b:	85 c9                	test   %ecx,%ecx
40613d:	74 0b                	je     0x40614a
40613f:	56                   	push   %esi
406140:	e8 8b 03 00 00       	call   0x4064d0
406145:	85 c0                	test   %eax,%eax
406147:	59                   	pop    %ecx
406148:	75 79                	jne    0x4061c3
40614a:	83 7d 14 00          	cmpl   $0x0,0x14(%ebp)
40614e:	74 0d                	je     0x40615d
406150:	8b c3                	mov    %ebx,%eax
406152:	33 d2                	xor    %edx,%edx
406154:	f7 75 14             	divl   0x14(%ebp)
406157:	8b fb                	mov    %ebx,%edi
406159:	2b fa                	sub    %edx,%edi
40615b:	eb 02                	jmp    0x40615f
40615d:	8b fb                	mov    %ebx,%edi
40615f:	57                   	push   %edi
406160:	ff 75 08             	push   0x8(%ebp)
406163:	ff 76 10             	push   0x10(%esi)
406166:	e8 28 33 00 00       	call   0x409493
40616b:	83 c4 0c             	add    $0xc,%esp
40616e:	83 f8 ff             	cmp    $0xffffffff,%eax
406171:	74 47                	je     0x4061ba
406173:	01 45 08             	add    %eax,0x8(%ebp)
406176:	2b d8                	sub    %eax,%ebx
406178:	3b c7                	cmp    %edi,%eax
40617a:	72 3e                	jb     0x4061ba
40617c:	8b 7d fc             	mov    -0x4(%ebp),%edi
40617f:	eb 29                	jmp    0x4061aa
406181:	8b 45 08             	mov    0x8(%ebp),%eax
406184:	56                   	push   %esi
406185:	0f be 00             	movsbl (%eax),%eax
406188:	50                   	push   %eax
406189:	e8 f6 1b 00 00       	call   0x407d84
40618e:	59                   	pop    %ecx
40618f:	83 f8 ff             	cmp    $0xffffffff,%eax
406192:	59                   	pop    %ecx
406193:	74 2e                	je     0x4061c3
406195:	ff 45 08             	incl   0x8(%ebp)
406198:	8b 46 18             	mov    0x18(%esi),%eax
40619b:	4b                   	dec    %ebx
40619c:	89 45 14             	mov    %eax,0x14(%ebp)
40619f:	85 c0                	test   %eax,%eax
4061a1:	7f 07                	jg     0x4061aa
4061a3:	c7 45 14 01 00 00 00 	movl   $0x1,0x14(%ebp)
4061aa:	85 db                	test   %ebx,%ebx
4061ac:	0f 85 50 ff ff ff    	jne    0x406102
4061b2:	8b 45 10             	mov    0x10(%ebp),%eax
4061b5:	5f                   	pop    %edi
4061b6:	5e                   	pop    %esi
4061b7:	5b                   	pop    %ebx
4061b8:	c9                   	leave
4061b9:	c3                   	ret
4061ba:	83 4e 0c 20          	orl    $0x20,0xc(%esi)
4061be:	8b 45 fc             	mov    -0x4(%ebp),%eax
4061c1:	eb 02                	jmp    0x4061c5
4061c3:	8b c7                	mov    %edi,%eax
4061c5:	2b c3                	sub    %ebx,%eax
4061c7:	33 d2                	xor    %edx,%edx
4061c9:	f7 75 0c             	divl   0xc(%ebp)
4061cc:	eb e7                	jmp    0x4061b5
4061ce:	56                   	push   %esi
4061cf:	8b 74 24 0c          	mov    0xc(%esp),%esi
4061d3:	57                   	push   %edi
4061d4:	56                   	push   %esi
4061d5:	e8 ec f6 ff ff       	call   0x4058c6
4061da:	ff 4e 04             	decl   0x4(%esi)
4061dd:	59                   	pop    %ecx
4061de:	78 0f                	js     0x4061ef
4061e0:	8b 0e                	mov    (%esi),%ecx
4061e2:	8a 44 24 0c          	mov    0xc(%esp),%al
4061e6:	0f b6 f8             	movzbl %al,%edi
4061e9:	88 01                	mov    %al,(%ecx)
4061eb:	ff 06                	incl   (%esi)
4061ed:	eb 0e                	jmp    0x4061fd
4061ef:	56                   	push   %esi
4061f0:	ff 74 24 10          	push   0x10(%esp)
4061f4:	e8 8b 1b 00 00       	call   0x407d84
4061f9:	59                   	pop    %ecx
4061fa:	8b f8                	mov    %eax,%edi
4061fc:	59                   	pop    %ecx
4061fd:	56                   	push   %esi
4061fe:	e8 15 f7 ff ff       	call   0x405918
406203:	59                   	pop    %ecx
406204:	8b c7                	mov    %edi,%eax
406206:	5f                   	pop    %edi
406207:	5e                   	pop    %esi
406208:	c3                   	ret
406209:	56                   	push   %esi
40620a:	ff 74 24 0c          	push   0xc(%esp)
40620e:	e8 b3 f6 ff ff       	call   0x4058c6
406213:	ff 74 24 10          	push   0x10(%esp)
406217:	ff 74 24 10          	push   0x10(%esp)
40621b:	e8 12 00 00 00       	call   0x406232
406220:	ff 74 24 18          	push   0x18(%esp)
406224:	8b f0                	mov    %eax,%esi
406226:	e8 ed f6 ff ff       	call   0x405918
40622b:	83 c4 10             	add    $0x10,%esp
40622e:	8b c6                	mov    %esi,%eax
406230:	5e                   	pop    %esi
406231:	c3                   	ret
406232:	53                   	push   %ebx
406233:	8b 5c 24 08          	mov    0x8(%esp),%ebx
406237:	83 fb ff             	cmp    $0xffffffff,%ebx
40623a:	56                   	push   %esi
40623b:	74 41                	je     0x40627e
40623d:	8b 74 24 10          	mov    0x10(%esp),%esi
406241:	8b 46 0c             	mov    0xc(%esi),%eax
406244:	a8 01                	test   $0x1,%al
406246:	75 08                	jne    0x406250
406248:	a8 80                	test   $0x80,%al
40624a:	74 32                	je     0x40627e
40624c:	a8 02                	test   $0x2,%al
40624e:	75 2e                	jne    0x40627e
406250:	83 7e 08 00          	cmpl   $0x0,0x8(%esi)
406254:	75 07                	jne    0x40625d
406256:	56                   	push   %esi
406257:	e8 27 34 00 00       	call   0x409683
40625c:	59                   	pop    %ecx
40625d:	8b 06                	mov    (%esi),%eax
40625f:	3b 46 08             	cmp    0x8(%esi),%eax
406262:	75 09                	jne    0x40626d
406264:	83 7e 04 00          	cmpl   $0x0,0x4(%esi)
406268:	75 14                	jne    0x40627e
40626a:	40                   	inc    %eax
40626b:	89 06                	mov    %eax,(%esi)
40626d:	f6 46 0c 40          	testb  $0x40,0xc(%esi)
406271:	74 11                	je     0x406284
406273:	ff 0e                	decl   (%esi)
406275:	8b 06                	mov    (%esi),%eax
406277:	38 18                	cmp    %bl,(%eax)
406279:	74 0f                	je     0x40628a
40627b:	40                   	inc    %eax
40627c:	89 06                	mov    %eax,(%esi)
40627e:	83 c8 ff             	or     $0xffffffff,%eax
406281:	5e                   	pop    %esi
406282:	5b                   	pop    %ebx
406283:	c3                   	ret
406284:	ff 0e                	decl   (%esi)
406286:	8b 06                	mov    (%esi),%eax
406288:	88 18                	mov    %bl,(%eax)
40628a:	8b 46 0c             	mov    0xc(%esi),%eax
40628d:	ff 46 04             	incl   0x4(%esi)
406290:	24 ef                	and    $0xef,%al
406292:	0c 01                	or     $0x1,%al
406294:	89 46 0c             	mov    %eax,0xc(%esi)
406297:	8b c3                	mov    %ebx,%eax
406299:	25 ff 00 00 00       	and    $0xff,%eax
40629e:	eb e1                	jmp    0x406281
4062a0:	56                   	push   %esi
4062a1:	8b 74 24 08          	mov    0x8(%esp),%esi
4062a5:	57                   	push   %edi
4062a6:	56                   	push   %esi
4062a7:	e8 1a f6 ff ff       	call   0x4058c6
4062ac:	ff 4e 04             	decl   0x4(%esi)
4062af:	59                   	pop    %ecx
4062b0:	78 0a                	js     0x4062bc
4062b2:	8b 06                	mov    (%esi),%eax
4062b4:	0f b6 38             	movzbl (%eax),%edi
4062b7:	40                   	inc    %eax
4062b8:	89 06                	mov    %eax,(%esi)
4062ba:	eb 09                	jmp    0x4062c5
4062bc:	56                   	push   %esi
4062bd:	e8 05 34 00 00       	call   0x4096c7
4062c2:	59                   	pop    %ecx
4062c3:	8b f8                	mov    %eax,%edi
4062c5:	56                   	push   %esi
4062c6:	e8 4d f6 ff ff       	call   0x405918
4062cb:	59                   	pop    %ecx
4062cc:	8b c7                	mov    %edi,%eax
4062ce:	5f                   	pop    %edi
4062cf:	5e                   	pop    %esi
4062d0:	c3                   	ret
4062d1:	ff 74 24 04          	push   0x4(%esp)
4062d5:	e8 c9 34 00 00       	call   0x4097a3
4062da:	59                   	pop    %ecx
4062db:	8b 4c 24 08          	mov    0x8(%esp),%ecx
4062df:	89 01                	mov    %eax,(%ecx)
4062e1:	89 51 04             	mov    %edx,0x4(%ecx)
4062e4:	8b 11                	mov    (%ecx),%edx
4062e6:	83 c8 ff             	or     $0xffffffff,%eax
4062e9:	23 51 04             	and    0x4(%ecx),%edx
4062ec:	3b d0                	cmp    %eax,%edx
4062ee:	74 02                	je     0x4062f2
4062f0:	33 c0                	xor    %eax,%eax
4062f2:	c3                   	ret
4062f3:	55                   	push   %ebp
4062f4:	8b ec                	mov    %esp,%ebp
4062f6:	56                   	push   %esi
4062f7:	ff 75 08             	push   0x8(%ebp)
4062fa:	e8 c7 f5 ff ff       	call   0x4058c6
4062ff:	ff 75 10             	push   0x10(%ebp)
406302:	ff 75 0c             	push   0xc(%ebp)
406305:	ff 75 08             	push   0x8(%ebp)
406308:	e8 12 00 00 00       	call   0x40631f
40630d:	ff 75 08             	push   0x8(%ebp)
406310:	8b f0                	mov    %eax,%esi
406312:	e8 01 f6 ff ff       	call   0x405918
406317:	83 c4 14             	add    $0x14,%esp
40631a:	8b c6                	mov    %esi,%eax
40631c:	5e                   	pop    %esi
40631d:	5d                   	pop    %ebp
40631e:	c3                   	ret
40631f:	56                   	push   %esi
406320:	8b 74 24 08          	mov    0x8(%esp),%esi
406324:	57                   	push   %edi
406325:	8b 46 0c             	mov    0xc(%esi),%eax
406328:	a8 83                	test   $0x83,%al
40632a:	74 6f                	je     0x40639b
40632c:	8b 7c 24 14          	mov    0x14(%esp),%edi
406330:	85 ff                	test   %edi,%edi
406332:	74 0a                	je     0x40633e
406334:	83 ff 01             	cmp    $0x1,%edi
406337:	74 05                	je     0x40633e
406339:	83 ff 02             	cmp    $0x2,%edi
40633c:	75 5d                	jne    0x40639b
40633e:	24 ef                	and    $0xef,%al
406340:	83 ff 01             	cmp    $0x1,%edi
406343:	89 46 0c             	mov    %eax,0xc(%esi)
406346:	75 0d                	jne    0x406355
406348:	56                   	push   %esi
406349:	e8 e5 36 00 00       	call   0x409a33
40634e:	01 44 24 14          	add    %eax,0x14(%esp)
406352:	59                   	pop    %ecx
406353:	33 ff                	xor    %edi,%edi
406355:	56                   	push   %esi
406356:	e8 75 01 00 00       	call   0x4064d0
40635b:	8b 46 0c             	mov    0xc(%esi),%eax