403fcb:	89 45 f0             	mov    %eax,-0x10(%ebp)
403fce:	53                   	push   %ebx
403fcf:	56                   	push   %esi
403fd0:	57                   	push   %edi
403fd1:	50                   	push   %eax
403fd2:	8d 45 f4             	lea    -0xc(%ebp),%eax
403fd5:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
403fdb:	8b 5d 24             	mov    0x24(%ebp),%ebx
403fde:	8b 45 0c             	mov    0xc(%ebp),%eax
403fe1:	8b 4d 18             	mov    0x18(%ebp),%ecx
403fe4:	8b 7d 20             	mov    0x20(%ebp),%edi
403fe7:	89 45 94             	mov    %eax,-0x6c(%ebp)
403fea:	89 4d ac             	mov    %ecx,-0x54(%ebp)
403fed:	89 7d 9c             	mov    %edi,-0x64(%ebp)
403ff0:	85 db                	test   %ebx,%ebx
403ff2:	74 11                	je     0x404005
403ff4:	8a 07                	mov    (%edi),%al
403ff6:	3c 2b                	cmp    $0x2b,%al
403ff8:	74 04                	je     0x403ffe
403ffa:	3c 2d                	cmp    $0x2d,%al
403ffc:	75 07                	jne    0x404005
403ffe:	be 01 00 00 00       	mov    $0x1,%esi
404003:	eb 02                	jmp    0x404007
404005:	33 f6                	xor    %esi,%esi
404007:	8b 41 14             	mov    0x14(%ecx),%eax
40400a:	25 00 30 00 00       	and    $0x3000,%eax
40400f:	89 75 bc             	mov    %esi,-0x44(%ebp)
404012:	3d 00 30 00 00       	cmp    $0x3000,%eax
404017:	74 07                	je     0x404020
404019:	ba 20 fc 42 00       	mov    $0x42fc20,%edx
40401e:	eb 25                	jmp    0x404045
404020:	8d 46 02             	lea    0x2(%esi),%eax
404023:	ba 24 fc 42 00       	mov    $0x42fc24,%edx
404028:	3b c3                	cmp    %ebx,%eax
40402a:	77 19                	ja     0x404045
40402c:	80 3c 37 30          	cmpb   $0x30,(%edi,%esi,1)
404030:	75 13                	jne    0x404045
404032:	8a 4c 37 01          	mov    0x1(%edi,%esi,1),%cl
404036:	80 f9 78             	cmp    $0x78,%cl
404039:	74 05                	je     0x404040
40403b:	80 f9 58             	cmp    $0x58,%cl
40403e:	75 05                	jne    0x404045
404040:	8b f0                	mov    %eax,%esi
404042:	89 75 bc             	mov    %esi,-0x44(%ebp)
404045:	52                   	push   %edx
404046:	57                   	push   %edi
404047:	e8 64 77 00 00       	call   0x40b7b0
40404c:	89 45 a4             	mov    %eax,-0x5c(%ebp)
40404f:	b8 2e 00 00 00       	mov    $0x2e,%eax
404054:	66 89 45 b8          	mov    %ax,-0x48(%ebp)
404058:	e8 8e 8b 00 00       	call   0x40cbeb
40405d:	8b 00                	mov    (%eax),%eax
40405f:	8a 00                	mov    (%eax),%al
404061:	88 45 b8             	mov    %al,-0x48(%ebp)
404064:	8d 45 b8             	lea    -0x48(%ebp),%eax
404067:	50                   	push   %eax
404068:	57                   	push   %edi
404069:	e8 42 77 00 00       	call   0x40b7b0
40406e:	8b f8                	mov    %eax,%edi
404070:	83 c4 10             	add    $0x10,%esp
404073:	8b 45 ac             	mov    -0x54(%ebp),%eax
404076:	8b 40 30             	mov    0x30(%eax),%eax
404079:	8b 48 04             	mov    0x4(%eax),%ecx
40407c:	89 4d a8             	mov    %ecx,-0x58(%ebp)
40407f:	89 4d b4             	mov    %ecx,-0x4c(%ebp)
404082:	8b 01                	mov    (%ecx),%eax
404084:	ff 50 04             	call   *0x4(%eax)
404087:	8d 45 b0             	lea    -0x50(%ebp),%eax
40408a:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
404091:	50                   	push   %eax
404092:	e8 19 07 00 00       	call   0x4047b0
404097:	c7 45 fc ff ff ff ff 	movl   $0xffffffff,-0x4(%ebp)
40409e:	83 c4 04             	add    $0x4,%esp
4040a1:	8b 4d a8             	mov    -0x58(%ebp),%ecx
4040a4:	89 45 b4             	mov    %eax,-0x4c(%ebp)
4040a7:	85 c9                	test   %ecx,%ecx
4040a9:	74 11                	je     0x4040bc
4040ab:	8b 01                	mov    (%ecx),%eax
4040ad:	ff 50 08             	call   *0x8(%eax)
4040b0:	8b c8                	mov    %eax,%ecx
4040b2:	85 c9                	test   %ecx,%ecx
4040b4:	74 06                	je     0x4040bc
4040b6:	8b 01                	mov    (%ecx),%eax
4040b8:	6a 01                	push   $0x1
4040ba:	ff 10                	call   *(%eax)
4040bc:	6a 00                	push   $0x0
4040be:	c7 45 d8 00 00 00 00 	movl   $0x0,-0x28(%ebp)
4040c5:	8d 4d d8             	lea    -0x28(%ebp),%ecx
4040c8:	53                   	push   %ebx
4040c9:	c7 45 e8 00 00 00 00 	movl   $0x0,-0x18(%ebp)
4040d0:	c7 45 ec 0f 00 00 00 	movl   $0xf,-0x14(%ebp)
4040d7:	c6 45 d8 00          	movb   $0x0,-0x28(%ebp)
4040db:	e8 90 05 00 00       	call   0x404670
4040e0:	c7 45 fc 01 00 00 00 	movl   $0x1,-0x4(%ebp)
4040e7:	8d 45 d8             	lea    -0x28(%ebp),%eax
4040ea:	83 7d ec 10          	cmpl   $0x10,-0x14(%ebp)
4040ee:	8b 4d 9c             	mov    -0x64(%ebp),%ecx
4040f1:	0f 43 45 d8          	cmovae -0x28(%ebp),%eax
4040f5:	8b 55 b4             	mov    -0x4c(%ebp),%edx
4040f8:	50                   	push   %eax
4040f9:	8d 04 19             	lea    (%ecx,%ebx,1),%eax
4040fc:	50                   	push   %eax
4040fd:	8b 12                	mov    (%edx),%edx
4040ff:	51                   	push   %ecx
404100:	8b 4d b4             	mov    -0x4c(%ebp),%ecx
404103:	ff 52 1c             	call   *0x1c(%edx)
404106:	8b 4d ac             	mov    -0x54(%ebp),%ecx
404109:	8b 41 30             	mov    0x30(%ecx),%eax
40410c:	8b 48 04             	mov    0x4(%eax),%ecx
40410f:	89 4d 9c             	mov    %ecx,-0x64(%ebp)
404112:	8b 01                	mov    (%ecx),%eax
404114:	ff 50 04             	call   *0x4(%eax)
404117:	8d 45 98             	lea    -0x68(%ebp),%eax
40411a:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40411e:	50                   	push   %eax
40411f:	e8 8c 0b 00 00       	call   0x404cb0
404124:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
404128:	83 c4 04             	add    $0x4,%esp
40412b:	8b 55 9c             	mov    -0x64(%ebp),%edx
40412e:	8b c8                	mov    %eax,%ecx
404130:	89 4d b4             	mov    %ecx,-0x4c(%ebp)
404133:	85 d2                	test   %edx,%edx
404135:	74 16                	je     0x40414d
404137:	8b 02                	mov    (%edx),%eax
404139:	8b ca                	mov    %edx,%ecx
40413b:	ff 50 08             	call   *0x8(%eax)
40413e:	8b c8                	mov    %eax,%ecx
404140:	85 c9                	test   %ecx,%ecx
404142:	74 06                	je     0x40414a
404144:	8b 01                	mov    (%ecx),%eax
404146:	6a 01                	push   $0x1
404148:	ff 10                	call   *(%eax)
40414a:	8b 4d b4             	mov    -0x4c(%ebp),%ecx
40414d:	8b 01                	mov    (%ecx),%eax
40414f:	8d 55 c0             	lea    -0x40(%ebp),%edx
404152:	52                   	push   %edx
404153:	ff 50 14             	call   *0x14(%eax)
404156:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
40415a:	8b 4d b4             	mov    -0x4c(%ebp),%ecx
40415d:	8b 01                	mov    (%ecx),%eax
40415f:	8b 40 10             	mov    0x10(%eax),%eax
404162:	ff d0                	call   *%eax
404164:	88 45 a8             	mov    %al,-0x58(%ebp)
404167:	3b fb                	cmp    %ebx,%edi
404169:	74 1c                	je     0x404187
40416b:	8b 4d b4             	mov    -0x4c(%ebp),%ecx
40416e:	8b 01                	mov    (%ecx),%eax
404170:	8b 40 0c             	mov    0xc(%eax),%eax
404173:	ff d0                	call   *%eax
404175:	83 7d ec 10          	cmpl   $0x10,-0x14(%ebp)
404179:	8a c8                	mov    %al,%cl
40417b:	8d 45 d8             	lea    -0x28(%ebp),%eax
40417e:	0f 43 45 d8          	cmovae -0x28(%ebp),%eax
404182:	3b fb                	cmp    %ebx,%edi
404184:	88 0c 38             	mov    %cl,(%eax,%edi,1)
404187:	0f 44 7d a4          	cmove  -0x5c(%ebp),%edi
40418b:	8d 5d c0             	lea    -0x40(%ebp),%ebx
40418e:	83 7d d4 10          	cmpl   $0x10,-0x2c(%ebp)
404192:	0f 43 5d c0          	cmovae -0x40(%ebp),%ebx
404196:	8a 03                	mov    (%ebx),%al
404198:	3c 7f                	cmp    $0x7f,%al
40419a:	0f 84 8f 00 00 00    	je     0x40422f
4041a0:	84 c0                	test   %al,%al
4041a2:	0f 8e 87 00 00 00    	jle    0x40422f
4041a8:	0f be c8             	movsbl %al,%ecx
4041ab:	8b c7                	mov    %edi,%eax
4041ad:	2b c6                	sub    %esi,%eax
4041af:	3b c8                	cmp    %eax,%ecx
4041b1:	73 7c                	jae    0x40422f
4041b3:	2b f9                	sub    %ecx,%edi
4041b5:	8b 4d e8             	mov    -0x18(%ebp),%ecx
4041b8:	3b cf                	cmp    %edi,%ecx
4041ba:	0f 82 34 02 00 00    	jb     0x4043f4
4041c0:	8b 55 ec             	mov    -0x14(%ebp),%edx
4041c3:	8b c2                	mov    %edx,%eax
4041c5:	2b c1                	sub    %ecx,%eax
4041c7:	83 f8 01             	cmp    $0x1,%eax
4041ca:	72 38                	jb     0x404204
4041cc:	8d 41 01             	lea    0x1(%ecx),%eax
4041cf:	83 fa 10             	cmp    $0x10,%edx
4041d2:	8d 75 d8             	lea    -0x28(%ebp),%esi
4041d5:	89 45 e8             	mov    %eax,-0x18(%ebp)
4041d8:	0f 43 75 d8          	cmovae -0x28(%ebp),%esi
4041dc:	2b cf                	sub    %edi,%ecx
4041de:	03 f7                	add    %edi,%esi
4041e0:	41                   	inc    %ecx
4041e1:	51                   	push   %ecx
4041e2:	56                   	push   %esi
4041e3:	8d 46 01             	lea    0x1(%esi),%eax
4041e6:	50                   	push   %eax
4041e7:	e8 84 47 00 00       	call   0x408970
4041ec:	0f be 4d a8          	movsbl -0x58(%ebp),%ecx
4041f0:	83 c4 0c             	add    $0xc,%esp
4041f3:	0f b6 c1             	movzbl %cl,%eax
4041f6:	66 c1 e1 08          	shl    $0x8,%cx
4041fa:	66 0b c8             	or     %ax,%cx
4041fd:	88 0e                	mov    %cl,(%esi)
4041ff:	8b 75 bc             	mov    -0x44(%ebp),%esi
404202:	eb 17                	jmp    0x40421b
404204:	ff 75 a8             	push   -0x58(%ebp)
404207:	c6 45 a4 00          	movb   $0x0,-0x5c(%ebp)
40420b:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40420e:	6a 01                	push   $0x1
404210:	57                   	push   %edi
404211:	ff 75 a4             	push   -0x5c(%ebp)
404214:	6a 01                	push   $0x1
404216:	e8 a5 0e 00 00       	call   0x4050c0
40421b:	80 7b 01 00          	cmpb   $0x0,0x1(%ebx)
40421f:	8d 43 01             	lea    0x1(%ebx),%eax
404222:	0f 4f d8             	cmovg  %eax,%ebx
404225:	8a 03                	mov    (%ebx),%al
404227:	3c 7f                	cmp    $0x7f,%al
404229:	0f 85 71 ff ff ff    	jne    0x4041a0
40422f:	8b 4d ac             	mov    -0x54(%ebp),%ecx
404232:	8b 45 e8             	mov    -0x18(%ebp),%eax
404235:	89 45 bc             	mov    %eax,-0x44(%ebp)
404238:	83 79 24 00          	cmpl   $0x0,0x24(%ecx)
40423c:	8b 79 20             	mov    0x20(%ecx),%edi
40423f:	7c 0e                	jl     0x40424f
404241:	7f 04                	jg     0x404247
404243:	85 ff                	test   %edi,%edi
404245:	74 08                	je     0x40424f
404247:	3b f8                	cmp    %eax,%edi
404249:	76 04                	jbe    0x40424f
40424b:	2b f8                	sub    %eax,%edi
40424d:	eb 02                	jmp    0x404251
40424f:	33 ff                	xor    %edi,%edi
404251:	8b 41 14             	mov    0x14(%ecx),%eax
404254:	8b 5d 08             	mov    0x8(%ebp),%ebx
404257:	25 c0 01 00 00       	and    $0x1c0,%eax
40425c:	83 f8 40             	cmp    $0x40,%eax
40425f:	0f 84 85 00 00 00    	je     0x4042ea
404265:	3d 00 01 00 00       	cmp    $0x100,%eax
40426a:	74 3f                	je     0x4042ab
40426c:	57                   	push   %edi
40426d:	ff 75 1c             	push   0x1c(%ebp)
404270:	8d 45 a0             	lea    -0x60(%ebp),%eax
404273:	ff 75 14             	push   0x14(%ebp)
404276:	ff 75 10             	push   0x10(%ebp)
404279:	50                   	push   %eax
40427a:	53                   	push   %ebx
40427b:	e8 b0 f7 ff ff       	call   0x403a30
404280:	33 ff                	xor    %edi,%edi
404282:	83 7d ec 10          	cmpl   $0x10,-0x14(%ebp)
404286:	56                   	push   %esi
404287:	8b 10                	mov    (%eax),%edx
404289:	8b 48 04             	mov    0x4(%eax),%ecx
40428c:	8d 45 d8             	lea    -0x28(%ebp),%eax
40428f:	0f 43 45 d8          	cmovae -0x28(%ebp),%eax
404293:	50                   	push   %eax
404294:	51                   	push   %ecx
404295:	52                   	push   %edx
404296:	8d 45 a0             	lea    -0x60(%ebp),%eax
404299:	89 55 10             	mov    %edx,0x10(%ebp)
40429c:	50                   	push   %eax
40429d:	53                   	push   %ebx
40429e:	89 4d 14             	mov    %ecx,0x14(%ebp)
4042a1:	e8 fa f7 ff ff       	call   0x403aa0
4042a6:	83 c4 30             	add    $0x30,%esp
4042a9:	eb 5f                	jmp    0x40430a
4042ab:	83 7d ec 10          	cmpl   $0x10,-0x14(%ebp)
4042af:	8d 45 d8             	lea    -0x28(%ebp),%eax
4042b2:	56                   	push   %esi
4042b3:	0f 43 45 d8          	cmovae -0x28(%ebp),%eax
4042b7:	50                   	push   %eax
4042b8:	ff 75 14             	push   0x14(%ebp)
4042bb:	8d 45 a0             	lea    -0x60(%ebp),%eax
4042be:	ff 75 10             	push   0x10(%ebp)
4042c1:	50                   	push   %eax
4042c2:	53                   	push   %ebx
4042c3:	e8 d8 f7 ff ff       	call   0x403aa0
4042c8:	57                   	push   %edi
4042c9:	ff 75 1c             	push   0x1c(%ebp)
4042cc:	8b 08                	mov    (%eax),%ecx
4042ce:	8b 40 04             	mov    0x4(%eax),%eax
4042d1:	50                   	push   %eax
4042d2:	89 45 14             	mov    %eax,0x14(%ebp)
4042d5:	8d 45 a0             	lea    -0x60(%ebp),%eax
4042d8:	51                   	push   %ecx
4042d9:	50                   	push   %eax
4042da:	53                   	push   %ebx
4042db:	89 4d 10             	mov    %ecx,0x10(%ebp)
4042de:	e8 4d f7 ff ff       	call   0x403a30
4042e3:	83 c4 30             	add    $0x30,%esp
4042e6:	33 ff                	xor    %edi,%edi
4042e8:	eb 20                	jmp    0x40430a
4042ea:	83 7d ec 10          	cmpl   $0x10,-0x14(%ebp)
4042ee:	8d 45 d8             	lea    -0x28(%ebp),%eax
4042f1:	56                   	push   %esi
4042f2:	0f 43 45 d8          	cmovae -0x28(%ebp),%eax
4042f6:	50                   	push   %eax
4042f7:	ff 75 14             	push   0x14(%ebp)
4042fa:	8d 45 a0             	lea    -0x60(%ebp),%eax
4042fd:	ff 75 10             	push   0x10(%ebp)
404300:	50                   	push   %eax
404301:	53                   	push   %ebx
404302:	e8 99 f7 ff ff       	call   0x403aa0
404307:	83 c4 18             	add    $0x18,%esp
40430a:	8b 10                	mov    (%eax),%edx
40430c:	8b 48 04             	mov    0x4(%eax),%ecx
40430f:	8d 45 d8             	lea    -0x28(%ebp),%eax
404312:	83 7d ec 10          	cmpl   $0x10,-0x14(%ebp)
404316:	89 55 10             	mov    %edx,0x10(%ebp)
404319:	0f 43 45 d8          	cmovae -0x28(%ebp),%eax
40431d:	29 75 bc             	sub    %esi,-0x44(%ebp)
404320:	03 c6                	add    %esi,%eax
404322:	ff 75 bc             	push   -0x44(%ebp)
404325:	89 4d 14             	mov    %ecx,0x14(%ebp)
404328:	50                   	push   %eax
404329:	51                   	push   %ecx
40432a:	52                   	push   %edx
40432b:	8d 45 a0             	lea    -0x60(%ebp),%eax
40432e:	50                   	push   %eax
40432f:	53                   	push   %ebx
404330:	e8 6b f7 ff ff       	call   0x403aa0
404335:	8b 55 ac             	mov    -0x54(%ebp),%edx
404338:	8b 75 94             	mov    -0x6c(%ebp),%esi
40433b:	57                   	push   %edi
40433c:	8b 08                	mov    (%eax),%ecx
40433e:	8b 40 04             	mov    0x4(%eax),%eax
404341:	ff 75 1c             	push   0x1c(%ebp)
404344:	89 4d 10             	mov    %ecx,0x10(%ebp)
404347:	50                   	push   %eax
404348:	51                   	push   %ecx
404349:	56                   	push   %esi
40434a:	53                   	push   %ebx
40434b:	89 45 14             	mov    %eax,0x14(%ebp)
40434e:	c7 42 20 00 00 00 00 	movl   $0x0,0x20(%edx)
404355:	c7 42 24 00 00 00 00 	movl   $0x0,0x24(%edx)
40435c:	e8 cf f6 ff ff       	call   0x403a30
404361:	8b 55 d4             	mov    -0x2c(%ebp),%edx
404364:	83 c4 30             	add    $0x30,%esp
404367:	83 fa 10             	cmp    $0x10,%edx
40436a:	72 28                	jb     0x404394
40436c:	8b 4d c0             	mov    -0x40(%ebp),%ecx
40436f:	42                   	inc    %edx
404370:	8b c1                	mov    %ecx,%eax
404372:	81 fa 00 10 00 00    	cmp    $0x1000,%edx
404378:	72 10                	jb     0x40438a
40437a:	8b 49 fc             	mov    -0x4(%ecx),%ecx
40437d:	83 c2 23             	add    $0x23,%edx
404380:	2b c1                	sub    %ecx,%eax
404382:	83 c0 fc             	add    $0xfffffffc,%eax
404385:	83 f8 1f             	cmp    $0x1f,%eax
404388:	77 6f                	ja     0x4043f9
40438a:	52                   	push   %edx
40438b:	51                   	push   %ecx
40438c:	e8 bb 32 00 00       	call   0x40764c
404391:	83 c4 08             	add    $0x8,%esp
404394:	8b 55 ec             	mov    -0x14(%ebp),%edx