40601e:	59                   	pop    %ecx
40601f:	84 c0                	test   %al,%al
406021:	75 2e                	jne    0x406051
406023:	83 cb ff             	or     $0xffffffff,%ebx
406026:	eb 29                	jmp    0x406051
406028:	8b 75 d0             	mov    -0x30(%ebp),%esi
40602b:	8d 45 dc             	lea    -0x24(%ebp),%eax
40602e:	2b f0                	sub    %eax,%esi
406030:	74 13                	je     0x406045
406032:	ff 77 4c             	push   0x4c(%edi)
406035:	56                   	push   %esi
406036:	6a 01                	push   $0x1
406038:	50                   	push   %eax
406039:	e8 c2 80 00 00       	call   0x40e100
40603e:	83 c4 10             	add    $0x10,%esp
406041:	3b f0                	cmp    %eax,%esi
406043:	75 10                	jne    0x406055
406045:	8d 45 d8             	lea    -0x28(%ebp),%eax
406048:	c6 47 3d 01          	movb   $0x1,0x3d(%edi)
40604c:	39 45 cc             	cmp    %eax,-0x34(%ebp)
40604f:	74 04                	je     0x406055
406051:	8b c3                	mov    %ebx,%eax
406053:	eb 03                	jmp    0x406058
406055:	83 c8 ff             	or     $0xffffffff,%eax
406058:	5e                   	pop    %esi
406059:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40605c:	5f                   	pop    %edi
40605d:	33 cd                	xor    %ebp,%ecx
40605f:	5b                   	pop    %ebx
406060:	e8 a7 13 00 00       	call   0x40740c
406065:	c9                   	leave
406066:	c2 04 00             	ret    $0x4
406069:	83 c8 ff             	or     $0xffffffff,%eax
40606c:	c2 04 00             	ret    $0x4
40606f:	55                   	push   %ebp
406070:	8b ec                	mov    %esp,%ebp
406072:	53                   	push   %ebx
406073:	8b 5d 08             	mov    0x8(%ebp),%ebx
406076:	56                   	push   %esi
406077:	8b f1                	mov    %ecx,%esi
406079:	8b 46 1c             	mov    0x1c(%esi),%eax
40607c:	8b 08                	mov    (%eax),%ecx
40607e:	85 c9                	test   %ecx,%ecx
406080:	74 29                	je     0x4060ab
406082:	8b 46 0c             	mov    0xc(%esi),%eax
406085:	39 08                	cmp    %ecx,(%eax)
406087:	73 22                	jae    0x4060ab
406089:	83 fb ff             	cmp    $0xffffffff,%ebx
40608c:	74 08                	je     0x406096
40608e:	0f b6 41 ff          	movzbl -0x1(%ecx),%eax
406092:	3b c3                	cmp    %ebx,%eax
406094:	75 15                	jne    0x4060ab
406096:	8b 46 2c             	mov    0x2c(%esi),%eax
406099:	ff 00                	incl   (%eax)
40609b:	8b 46 1c             	mov    0x1c(%esi),%eax
40609e:	ff 08                	decl   (%eax)
4060a0:	8d 43 01             	lea    0x1(%ebx),%eax
4060a3:	f7 d8                	neg    %eax
4060a5:	1b c0                	sbb    %eax,%eax
4060a7:	23 c3                	and    %ebx,%eax
4060a9:	eb 40                	jmp    0x4060eb
4060ab:	83 7e 4c 00          	cmpl   $0x0,0x4c(%esi)
4060af:	74 37                	je     0x4060e8
4060b1:	83 fb ff             	cmp    $0xffffffff,%ebx
4060b4:	74 32                	je     0x4060e8
4060b6:	83 7e 38 00          	cmpl   $0x0,0x38(%esi)
4060ba:	75 17                	jne    0x4060d3
4060bc:	ff 76 4c             	push   0x4c(%esi)
4060bf:	0f b6 c3             	movzbl %bl,%eax
4060c2:	50                   	push   %eax
4060c3:	e8 42 83 00 00       	call   0x40e40a
4060c8:	59                   	pop    %ecx
4060c9:	59                   	pop    %ecx
4060ca:	83 f8 ff             	cmp    $0xffffffff,%eax
4060cd:	74 04                	je     0x4060d3
4060cf:	8b c3                	mov    %ebx,%eax
4060d1:	eb 18                	jmp    0x4060eb
4060d3:	8b 46 1c             	mov    0x1c(%esi),%eax
4060d6:	8d 4e 3c             	lea    0x3c(%esi),%ecx
4060d9:	39 08                	cmp    %ecx,(%eax)
4060db:	74 0b                	je     0x4060e8
4060dd:	88 19                	mov    %bl,(%ecx)
4060df:	8b ce                	mov    %esi,%ecx
4060e1:	e8 1a fd ff ff       	call   0x405e00
4060e6:	eb e7                	jmp    0x4060cf
4060e8:	83 c8 ff             	or     $0xffffffff,%eax
4060eb:	5e                   	pop    %esi
4060ec:	5b                   	pop    %ebx
4060ed:	5d                   	pop    %ebp
4060ee:	c2 04 00             	ret    $0x4
4060f1:	55                   	push   %ebp
4060f2:	8b ec                	mov    %esp,%ebp
4060f4:	51                   	push   %ecx
4060f5:	8b 51 10             	mov    0x10(%ecx),%edx
4060f8:	3b 51 14             	cmp    0x14(%ecx),%edx
4060fb:	73 1b                	jae    0x406118
4060fd:	83 79 14 10          	cmpl   $0x10,0x14(%ecx)
406101:	8d 42 01             	lea    0x1(%edx),%eax
406104:	89 41 10             	mov    %eax,0x10(%ecx)
406107:	72 02                	jb     0x40610b
406109:	8b 09                	mov    (%ecx),%ecx
40610b:	8a 45 08             	mov    0x8(%ebp),%al
40610e:	88 04 11             	mov    %al,(%ecx,%edx,1)
406111:	c6 44 11 01 00       	movb   $0x0,0x1(%ecx,%edx,1)
406116:	eb 0d                	jmp    0x406125
406118:	ff 75 08             	push   0x8(%ebp)
40611b:	ff 75 fc             	push   -0x4(%ebp)
40611e:	6a 01                	push   $0x1
406120:	e8 3d f5 ff ff       	call   0x405662
406125:	c9                   	leave
406126:	c2 04 00             	ret    $0x4
406129:	55                   	push   %ebp
40612a:	8b ec                	mov    %esp,%ebp
40612c:	51                   	push   %ecx
40612d:	51                   	push   %ecx
40612e:	53                   	push   %ebx
40612f:	56                   	push   %esi
406130:	57                   	push   %edi
406131:	8b f9                	mov    %ecx,%edi
406133:	8b 57 1c             	mov    0x1c(%edi),%edx
406136:	8d 47 3c             	lea    0x3c(%edi),%eax
406139:	39 02                	cmp    %eax,(%edx)
40613b:	75 1a                	jne    0x406157
40613d:	83 7d 14 01          	cmpl   $0x1,0x14(%ebp)
406141:	75 14                	jne    0x406157
406143:	83 7f 38 00          	cmpl   $0x0,0x38(%edi)
406147:	75 0e                	jne    0x406157
406149:	8b 75 0c             	mov    0xc(%ebp),%esi
40614c:	8b 5d 10             	mov    0x10(%ebp),%ebx
40614f:	83 c6 ff             	add    $0xffffffff,%esi
406152:	83 d3 ff             	adc    $0xffffffff,%ebx
406155:	eb 06                	jmp    0x40615d
406157:	8b 5d 10             	mov    0x10(%ebp),%ebx
40615a:	8b 75 0c             	mov    0xc(%ebp),%esi
40615d:	83 7f 4c 00          	cmpl   $0x0,0x4c(%edi)
406161:	74 66                	je     0x4061c9
406163:	e8 bb f9 ff ff       	call   0x405b23
406168:	84 c0                	test   %al,%al
40616a:	74 5d                	je     0x4061c9
40616c:	8b c6                	mov    %esi,%eax
40616e:	0b c3                	or     %ebx,%eax
406170:	75 06                	jne    0x406178
406172:	83 7d 14 01          	cmpl   $0x1,0x14(%ebp)
406176:	74 14                	je     0x40618c
406178:	ff 75 14             	push   0x14(%ebp)
40617b:	53                   	push   %ebx
40617c:	56                   	push   %esi
40617d:	ff 77 4c             	push   0x4c(%edi)
406180:	e8 41 7d 00 00       	call   0x40dec6
406185:	83 c4 10             	add    $0x10,%esp
406188:	85 c0                	test   %eax,%eax
40618a:	75 3d                	jne    0x4061c9
40618c:	8d 45 f8             	lea    -0x8(%ebp),%eax
40618f:	50                   	push   %eax
406190:	ff 77 4c             	push   0x4c(%edi)
406193:	e8 88 75 00 00       	call   0x40d720
406198:	59                   	pop    %ecx
406199:	59                   	pop    %ecx
40619a:	85 c0                	test   %eax,%eax
40619c:	75 2b                	jne    0x4061c9
40619e:	8b cf                	mov    %edi,%ecx
4061a0:	e8 38 fc ff ff       	call   0x405ddd
4061a5:	8b 45 08             	mov    0x8(%ebp),%eax
4061a8:	8b 77 40             	mov    0x40(%edi),%esi
4061ab:	8b 7f 44             	mov    0x44(%edi),%edi
4061ae:	8b 4d f8             	mov    -0x8(%ebp),%ecx
4061b1:	8b 55 fc             	mov    -0x4(%ebp),%edx
4061b4:	83 60 08 00          	andl   $0x0,0x8(%eax)
4061b8:	83 60 0c 00          	andl   $0x0,0xc(%eax)
4061bc:	89 08                	mov    %ecx,(%eax)
4061be:	89 50 04             	mov    %edx,0x4(%eax)
4061c1:	89 70 10             	mov    %esi,0x10(%eax)
4061c4:	89 78 14             	mov    %edi,0x14(%eax)
4061c7:	eb 1a                	jmp    0x4061e3
4061c9:	8b 45 08             	mov    0x8(%ebp),%eax
4061cc:	83 08 ff             	orl    $0xffffffff,(%eax)
4061cf:	83 48 04 ff          	orl    $0xffffffff,0x4(%eax)
4061d3:	83 60 08 00          	andl   $0x0,0x8(%eax)
4061d7:	83 60 0c 00          	andl   $0x0,0xc(%eax)
4061db:	83 60 10 00          	andl   $0x0,0x10(%eax)
4061df:	83 60 14 00          	andl   $0x0,0x14(%eax)
4061e3:	5f                   	pop    %edi
4061e4:	5e                   	pop    %esi
4061e5:	5b                   	pop    %ebx
4061e6:	c9                   	leave
4061e7:	c2 14 00             	ret    $0x14
4061ea:	55                   	push   %ebp
4061eb:	8b ec                	mov    %esp,%ebp
4061ed:	8b 45 08             	mov    0x8(%ebp),%eax
4061f0:	83 08 ff             	orl    $0xffffffff,(%eax)
4061f3:	83 48 04 ff          	orl    $0xffffffff,0x4(%eax)
4061f7:	33 c9                	xor    %ecx,%ecx
4061f9:	89 48 08             	mov    %ecx,0x8(%eax)
4061fc:	89 48 0c             	mov    %ecx,0xc(%eax)
4061ff:	89 48 10             	mov    %ecx,0x10(%eax)
406202:	89 48 14             	mov    %ecx,0x14(%eax)
406205:	5d                   	pop    %ebp
406206:	c2 14 00             	ret    $0x14
406209:	55                   	push   %ebp
40620a:	8b ec                	mov    %esp,%ebp
40620c:	51                   	push   %ecx
40620d:	51                   	push   %ecx
40620e:	8b 55 0c             	mov    0xc(%ebp),%edx
406211:	03 55 14             	add    0x14(%ebp),%edx
406214:	8b 45 10             	mov    0x10(%ebp),%eax
406217:	13 45 18             	adc    0x18(%ebp),%eax
40621a:	53                   	push   %ebx
40621b:	57                   	push   %edi
40621c:	8b f9                	mov    %ecx,%edi
40621e:	89 55 f8             	mov    %edx,-0x8(%ebp)
406221:	33 db                	xor    %ebx,%ebx
406223:	89 45 fc             	mov    %eax,-0x4(%ebp)
406226:	39 5f 4c             	cmp    %ebx,0x4c(%edi)
406229:	74 52                	je     0x40627d
40622b:	e8 f3 f8 ff ff       	call   0x405b23
406230:	84 c0                	test   %al,%al
406232:	74 49                	je     0x40627d
406234:	8d 45 f8             	lea    -0x8(%ebp),%eax
406237:	50                   	push   %eax
406238:	ff 77 4c             	push   0x4c(%edi)
40623b:	e8 8f 79 00 00       	call   0x40dbcf
406240:	59                   	pop    %ecx
406241:	59                   	pop    %ecx
406242:	85 c0                	test   %eax,%eax
406244:	75 37                	jne    0x40627d
406246:	8b 4d 20             	mov    0x20(%ebp),%ecx
406249:	8b 45 1c             	mov    0x1c(%ebp),%eax
40624c:	89 4f 44             	mov    %ecx,0x44(%edi)
40624f:	8b cf                	mov    %edi,%ecx
406251:	56                   	push   %esi
406252:	89 47 40             	mov    %eax,0x40(%edi)
406255:	e8 83 fb ff ff       	call   0x405ddd
40625a:	8b 45 08             	mov    0x8(%ebp),%eax
40625d:	8b 77 40             	mov    0x40(%edi),%esi
406260:	8b 7f 44             	mov    0x44(%edi),%edi
406263:	8b 4d f8             	mov    -0x8(%ebp),%ecx
406266:	8b 55 fc             	mov    -0x4(%ebp),%edx
406269:	89 70 10             	mov    %esi,0x10(%eax)
40626c:	89 08                	mov    %ecx,(%eax)
40626e:	89 50 04             	mov    %edx,0x4(%eax)
406271:	89 58 08             	mov    %ebx,0x8(%eax)
406274:	89 58 0c             	mov    %ebx,0xc(%eax)
406277:	89 78 14             	mov    %edi,0x14(%eax)
40627a:	5e                   	pop    %esi
40627b:	eb 16                	jmp    0x406293
40627d:	8b 45 08             	mov    0x8(%ebp),%eax
406280:	83 08 ff             	orl    $0xffffffff,(%eax)
406283:	83 48 04 ff          	orl    $0xffffffff,0x4(%eax)
406287:	89 58 08             	mov    %ebx,0x8(%eax)
40628a:	89 58 0c             	mov    %ebx,0xc(%eax)
40628d:	89 58 10             	mov    %ebx,0x10(%eax)
406290:	89 58 14             	mov    %ebx,0x14(%eax)
406293:	5f                   	pop    %edi
406294:	5b                   	pop    %ebx
406295:	c9                   	leave
406296:	c2 20 00             	ret    $0x20
406299:	55                   	push   %ebp
40629a:	8b ec                	mov    %esp,%ebp
40629c:	8b 45 08             	mov    0x8(%ebp),%eax
40629f:	83 08 ff             	orl    $0xffffffff,(%eax)
4062a2:	83 48 04 ff          	orl    $0xffffffff,0x4(%eax)
4062a6:	33 c9                	xor    %ecx,%ecx
4062a8:	89 48 08             	mov    %ecx,0x8(%eax)
4062ab:	89 48 0c             	mov    %ecx,0xc(%eax)
4062ae:	89 48 10             	mov    %ecx,0x10(%eax)
4062b1:	89 48 14             	mov    %ecx,0x14(%eax)
4062b4:	5d                   	pop    %ebp
4062b5:	c2 20 00             	ret    $0x20
4062b8:	55                   	push   %ebp
4062b9:	8b ec                	mov    %esp,%ebp
4062bb:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
4062bf:	56                   	push   %esi
4062c0:	8b f1                	mov    %ecx,%esi
4062c2:	75 0d                	jne    0x4062d1
4062c4:	8b 45 0c             	mov    0xc(%ebp),%eax
4062c7:	0b 45 10             	or     0x10(%ebp),%eax
4062ca:	75 05                	jne    0x4062d1
4062cc:	6a 04                	push   $0x4
4062ce:	58                   	pop    %eax
4062cf:	eb 02                	jmp    0x4062d3
4062d1:	33 c0                	xor    %eax,%eax
4062d3:	83 7e 4c 00          	cmpl   $0x0,0x4c(%esi)
4062d7:	74 26                	je     0x4062ff
4062d9:	ff 75 0c             	push   0xc(%ebp)
4062dc:	50                   	push   %eax
4062dd:	ff 75 08             	push   0x8(%ebp)
4062e0:	ff 76 4c             	push   0x4c(%esi)
4062e3:	e8 a6 7f 00 00       	call   0x40e28e
4062e8:	83 c4 10             	add    $0x10,%esp
4062eb:	85 c0                	test   %eax,%eax
4062ed:	75 10                	jne    0x4062ff
4062ef:	6a 01                	push   $0x1
4062f1:	ff 76 4c             	push   0x4c(%esi)
4062f4:	8b ce                	mov    %esi,%ecx
4062f6:	e8 7f f9 ff ff       	call   0x405c7a
4062fb:	8b c6                	mov    %esi,%eax
4062fd:	eb 02                	jmp    0x406301
4062ff:	33 c0                	xor    %eax,%eax
406301:	5e                   	pop    %esi
406302:	5d                   	pop    %ebp
406303:	c2 0c 00             	ret    $0xc
406306:	8b c1                	mov    %ecx,%eax
406308:	c2 0c 00             	ret    $0xc
40630b:	33 c0                	xor    %eax,%eax
40630d:	33 d2                	xor    %edx,%edx
40630f:	c3                   	ret
406310:	57                   	push   %edi
406311:	8b f9                	mov    %ecx,%edi
406313:	83 7f 4c 00          	cmpl   $0x0,0x4c(%edi)
406317:	74 2c                	je     0x406345
406319:	8b 07                	mov    (%edi),%eax
40631b:	56                   	push   %esi
40631c:	6a ff                	push   $0xffffffff
40631e:	8b 70 0c             	mov    0xc(%eax),%esi
406321:	8b ce                	mov    %esi,%ecx
406323:	ff 15 54 41 42 00    	call   *0x424154
406329:	8b cf                	mov    %edi,%ecx
40632b:	ff d6                	call   *%esi
40632d:	5e                   	pop    %esi
40632e:	83 f8 ff             	cmp    $0xffffffff,%eax
406331:	74 12                	je     0x406345
406333:	ff 77 4c             	push   0x4c(%edi)
406336:	e8 4c 72 00 00       	call   0x40d587
40633b:	59                   	pop    %ecx
40633c:	85 c0                	test   %eax,%eax
40633e:	79 05                	jns    0x406345
406340:	83 c8 ff             	or     $0xffffffff,%eax
406343:	5f                   	pop    %edi
406344:	c3                   	ret
406345:	33 c0                	xor    %eax,%eax
406347:	5f                   	pop    %edi
406348:	c3                   	ret
406349:	33 c0                	xor    %eax,%eax
40634b:	c3                   	ret
40634c:	6a 34                	push   $0x34
40634e:	b8 00 2f 42 00       	mov    $0x422f00,%eax
406353:	e8 17 18 00 00       	call   0x407b6f
406358:	8b f9                	mov    %ecx,%edi
40635a:	8b 47 1c             	mov    0x1c(%edi),%eax
40635d:	8b 08                	mov    (%eax),%ecx
40635f:	85 c9                	test   %ecx,%ecx
406361:	74 23                	je     0x406386
406363:	8b 57 2c             	mov    0x2c(%edi),%edx
406366:	8b 32                	mov    (%edx),%esi
406368:	8d 04 0e             	lea    (%esi,%ecx,1),%eax
40636b:	3b c8                	cmp    %eax,%ecx
40636d:	73 17                	jae    0x406386
40636f:	8d 46 ff             	lea    -0x1(%esi),%eax
406372:	89 02                	mov    %eax,(%edx)
406374:	8b 4f 1c             	mov    0x1c(%edi),%ecx