401e7c:	75 70                	jne    0x401eee
401e7e:	8b 45 ec             	mov    -0x14(%ebp),%eax
401e81:	8b 4d e8             	mov    -0x18(%ebp),%ecx
401e84:	3b cf                	cmp    %edi,%ecx
401e86:	7c 29                	jl     0x401eb1
401e88:	7f 04                	jg     0x401e8e
401e8a:	3b c7                	cmp    %edi,%eax
401e8c:	76 23                	jbe    0x401eb1
401e8e:	8b 03                	mov    (%ebx),%eax
401e90:	8b 48 04             	mov    0x4(%eax),%ecx
401e93:	8a 44 19 40          	mov    0x40(%ecx,%ebx,1),%al
401e97:	8b 4c 19 38          	mov    0x38(%ecx,%ebx,1),%ecx
401e9b:	88 45 d4             	mov    %al,-0x2c(%ebp)
401e9e:	ff 75 d4             	push   -0x2c(%ebp)
401ea1:	e8 98 fd ff ff       	call   0x401c3e
401ea6:	83 f8 ff             	cmp    $0xffffffff,%eax
401ea9:	75 2f                	jne    0x401eda
401eab:	83 ce 04             	or     $0x4,%esi
401eae:	89 75 e4             	mov    %esi,-0x1c(%ebp)
401eb1:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
401eb4:	8b 03                	mov    (%ebx),%eax
401eb6:	8b 40 04             	mov    0x4(%eax),%eax
401eb9:	89 7c 18 20          	mov    %edi,0x20(%eax,%ebx,1)
401ebd:	89 7c 18 24          	mov    %edi,0x24(%eax,%ebx,1)
401ec1:	eb 64                	jmp    0x401f27
401ec3:	8b 45 ec             	mov    -0x14(%ebp),%eax
401ec6:	8b 4d e8             	mov    -0x18(%ebp),%ecx
401ec9:	83 c0 ff             	add    $0xffffffff,%eax
401ecc:	83 d1 ff             	adc    $0xffffffff,%ecx
401ecf:	89 45 ec             	mov    %eax,-0x14(%ebp)
401ed2:	89 4d e8             	mov    %ecx,-0x18(%ebp)
401ed5:	e9 50 ff ff ff       	jmp    0x401e2a
401eda:	8b 45 ec             	mov    -0x14(%ebp),%eax
401edd:	8b 4d e8             	mov    -0x18(%ebp),%ecx
401ee0:	83 c0 ff             	add    $0xffffffff,%eax
401ee3:	83 d1 ff             	adc    $0xffffffff,%ecx
401ee6:	89 45 ec             	mov    %eax,-0x14(%ebp)
401ee9:	89 4d e8             	mov    %ecx,-0x18(%ebp)
401eec:	eb 96                	jmp    0x401e84
401eee:	6a 04                	push   $0x4
401ef0:	59                   	pop    %ecx
401ef1:	eb c1                	jmp    0x401eb4
401ef3:	8b 4d dc             	mov    -0x24(%ebp),%ecx
401ef6:	6a 01                	push   $0x1
401ef8:	8b 01                	mov    (%ecx),%eax
401efa:	8b 70 04             	mov    0x4(%eax),%esi
401efd:	03 f1                	add    %ecx,%esi
401eff:	8b ce                	mov    %esi,%ecx
401f01:	8b 56 0c             	mov    0xc(%esi),%edx
401f04:	83 ca 04             	or     $0x4,%edx
401f07:	8b c2                	mov    %edx,%eax
401f09:	83 c8 04             	or     $0x4,%eax
401f0c:	83 7e 38 00          	cmpl   $0x0,0x38(%esi)
401f10:	0f 44 d0             	cmove  %eax,%edx
401f13:	52                   	push   %edx
401f14:	e8 4d f7 ff ff       	call   0x401666
401f19:	b8 1f 1f 40 00       	mov    $0x401f1f,%eax
401f1e:	c3                   	ret
401f1f:	8b 5d dc             	mov    -0x24(%ebp),%ebx
401f22:	8b 4d d8             	mov    -0x28(%ebp),%ecx
401f25:	33 ff                	xor    %edi,%edi
401f27:	89 7d fc             	mov    %edi,-0x4(%ebp)
401f2a:	8b 03                	mov    (%ebx),%eax
401f2c:	8b 40 04             	mov    0x4(%eax),%eax
401f2f:	03 c3                	add    %ebx,%eax
401f31:	85 c9                	test   %ecx,%ecx
401f33:	74 19                	je     0x401f4e
401f35:	8b 70 0c             	mov    0xc(%eax),%esi
401f38:	0b f1                	or     %ecx,%esi
401f3a:	8b d6                	mov    %esi,%edx
401f3c:	83 ca 04             	or     $0x4,%edx
401f3f:	39 78 38             	cmp    %edi,0x38(%eax)
401f42:	57                   	push   %edi
401f43:	0f 44 f2             	cmove  %edx,%esi
401f46:	56                   	push   %esi
401f47:	8b c8                	mov    %eax,%ecx
401f49:	e8 18 f7 ff ff       	call   0x401666
401f4e:	8d 4d c8             	lea    -0x38(%ebp),%ecx
401f51:	e8 83 fd ff ff       	call   0x401cd9
401f56:	8b c3                	mov    %ebx,%eax
401f58:	e8 79 3e 00 00       	call   0x405dd6
401f5d:	c3                   	ret
401f5e:	6a 4c                	push   $0x4c
401f60:	b8 77 7d 41 00       	mov    $0x417d77,%eax
401f65:	e8 c2 3e 00 00       	call   0x405e2c
401f6a:	8b f9                	mov    %ecx,%edi
401f6c:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
401f70:	83 7d 1c 10          	cmpl   $0x10,0x1c(%ebp)
401f74:	8b 45 18             	mov    0x18(%ebp),%eax
401f77:	8d 55 08             	lea    0x8(%ebp),%edx
401f7a:	0f 43 55 08          	cmovae 0x8(%ebp),%edx
401f7e:	03 c2                	add    %edx,%eax
401f80:	83 7d 1c 10          	cmpl   $0x10,0x1c(%ebp)
401f84:	8d 4d 08             	lea    0x8(%ebp),%ecx
401f87:	0f 43 4d 08          	cmovae 0x8(%ebp),%ecx
401f8b:	89 7d ac             	mov    %edi,-0x54(%ebp)
401f8e:	33 d2                	xor    %edx,%edx
401f90:	eb 07                	jmp    0x401f99
401f92:	80 39 20             	cmpb   $0x20,(%ecx)
401f95:	75 01                	jne    0x401f98
401f97:	42                   	inc    %edx
401f98:	41                   	inc    %ecx
401f99:	3b c8                	cmp    %eax,%ecx
401f9b:	75 f5                	jne    0x401f92
401f9d:	68 d6 d4 41 00       	push   $0x41d4d6
401fa2:	8d 4d c0             	lea    -0x40(%ebp),%ecx
401fa5:	8d 5a 01             	lea    0x1(%edx),%ebx
401fa8:	e8 c0 f1 ff ff       	call   0x40116d
401fad:	68 d8 d4 41 00       	push   $0x41d4d8
401fb2:	8d 4d d8             	lea    -0x28(%ebp),%ecx
401fb5:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
401fb9:	e8 af f1 ff ff       	call   0x40116d
401fbe:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
401fc2:	33 f6                	xor    %esi,%esi
401fc4:	ff 75 e8             	push   -0x18(%ebp)
401fc7:	83 7d ec 10          	cmpl   $0x10,-0x14(%ebp)
401fcb:	8d 45 d8             	lea    -0x28(%ebp),%eax
401fce:	0f 43 45 d8          	cmovae -0x28(%ebp),%eax
401fd2:	56                   	push   %esi
401fd3:	50                   	push   %eax
401fd4:	8d 4d 08             	lea    0x8(%ebp),%ecx
401fd7:	e8 d4 0f 00 00       	call   0x402fb0
401fdc:	8b f0                	mov    %eax,%esi
401fde:	83 fe ff             	cmp    $0xffffffff,%esi
401fe1:	74 19                	je     0x401ffc
401fe3:	6a ff                	push   $0xffffffff
401fe5:	6a 00                	push   $0x0
401fe7:	8d 45 c0             	lea    -0x40(%ebp),%eax
401fea:	50                   	push   %eax
401feb:	ff 75 e8             	push   -0x18(%ebp)
401fee:	8d 4d 08             	lea    0x8(%ebp),%ecx
401ff1:	56                   	push   %esi
401ff2:	e8 6a 0c 00 00       	call   0x402c61
401ff7:	03 75 d0             	add    -0x30(%ebp),%esi
401ffa:	eb c8                	jmp    0x401fc4
401ffc:	8d 4d d8             	lea    -0x28(%ebp),%ecx
401fff:	e8 98 f1 ff ff       	call   0x40119c
402004:	8d 4d c0             	lea    -0x40(%ebp),%ecx
402007:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
40200b:	e8 8c f1 ff ff       	call   0x40119c
402010:	8d 55 08             	lea    0x8(%ebp),%edx
402013:	8d 4d b0             	lea    -0x50(%ebp),%ecx
402016:	e8 a5 07 00 00       	call   0x4027c0
40201b:	8b 45 b0             	mov    -0x50(%ebp),%eax
40201e:	89 45 a8             	mov    %eax,-0x58(%ebp)
402021:	b8 00 f0 ff ff       	mov    $0xfffff000,%eax
402026:	23 f8                	and    %eax,%edi
402028:	8d b3 ff 0f 00 00    	lea    0xfff(%ebx),%esi
40202e:	23 f0                	and    %eax,%esi
402030:	8d 45 bc             	lea    -0x44(%ebp),%eax
402033:	50                   	push   %eax
402034:	6a 40                	push   $0x40
402036:	56                   	push   %esi
402037:	57                   	push   %edi
402038:	ff 15 1c 90 41 00    	call   *0x41901c
40203e:	85 c0                	test   %eax,%eax
402040:	74 39                	je     0x40207b
402042:	53                   	push   %ebx
402043:	ff 75 a8             	push   -0x58(%ebp)
402046:	ff 75 ac             	push   -0x54(%ebp)
402049:	e8 52 36 00 00       	call   0x4056a0
40204e:	83 c4 0c             	add    $0xc,%esp
402051:	8d 45 bc             	lea    -0x44(%ebp),%eax
402054:	50                   	push   %eax
402055:	ff 75 bc             	push   -0x44(%ebp)
402058:	56                   	push   %esi
402059:	57                   	push   %edi
40205a:	ff 15 1c 90 41 00    	call   *0x41901c
402060:	85 c0                	test   %eax,%eax
402062:	74 17                	je     0x40207b
402064:	56                   	push   %esi
402065:	57                   	push   %edi
402066:	ff 15 04 90 41 00    	call   *0x419004
40206c:	50                   	push   %eax
40206d:	ff 15 14 90 41 00    	call   *0x419014
402073:	85 c0                	test   %eax,%eax
402075:	74 04                	je     0x40207b
402077:	33 f6                	xor    %esi,%esi
402079:	eb 08                	jmp    0x402083
40207b:	ff 15 18 90 41 00    	call   *0x419018
402081:	8b f0                	mov    %eax,%esi
402083:	83 7d b0 00          	cmpl   $0x0,-0x50(%ebp)
402087:	74 14                	je     0x40209d
402089:	ff 75 b0             	push   -0x50(%ebp)
40208c:	e8 67 2e 00 00       	call   0x404ef8
402091:	33 c0                	xor    %eax,%eax
402093:	59                   	pop    %ecx
402094:	89 45 b0             	mov    %eax,-0x50(%ebp)
402097:	89 45 b4             	mov    %eax,-0x4c(%ebp)
40209a:	89 45 b8             	mov    %eax,-0x48(%ebp)
40209d:	8d 4d 08             	lea    0x8(%ebp),%ecx
4020a0:	e8 f7 f0 ff ff       	call   0x40119c
4020a5:	8b c6                	mov    %esi,%eax
4020a7:	e8 3e 3d 00 00       	call   0x405dea
4020ac:	c2 18 00             	ret    $0x18
4020af:	56                   	push   %esi
4020b0:	8b f1                	mov    %ecx,%esi
4020b2:	83 3e 00             	cmpl   $0x0,(%esi)
4020b5:	74 12                	je     0x4020c9
4020b7:	ff 36                	push   (%esi)
4020b9:	e8 3a 2e 00 00       	call   0x404ef8
4020be:	33 c0                	xor    %eax,%eax
4020c0:	59                   	pop    %ecx
4020c1:	89 06                	mov    %eax,(%esi)
4020c3:	89 46 04             	mov    %eax,0x4(%esi)
4020c6:	89 46 08             	mov    %eax,0x8(%esi)
4020c9:	5e                   	pop    %esi
4020ca:	c3                   	ret
4020cb:	53                   	push   %ebx
4020cc:	56                   	push   %esi
4020cd:	8b f1                	mov    %ecx,%esi
4020cf:	bb dc d4 41 00       	mov    $0x41d4dc,%ebx
4020d4:	eb 0b                	jmp    0x4020e1
4020d6:	68 c4 09 00 00       	push   $0x9c4
4020db:	ff 15 20 90 41 00    	call   *0x419020
4020e1:	53                   	push   %ebx
4020e2:	53                   	push   %ebx
4020e3:	ff 15 40 91 41 00    	call   *0x419140
4020e9:	85 c0                	test   %eax,%eax
4020eb:	74 e9                	je     0x4020d6
4020ed:	51                   	push   %ecx
4020ee:	68 ec d4 41 00       	push   $0x41d4ec
4020f3:	e8 28 01 00 00       	call   0x402220
4020f8:	89 46 1c             	mov    %eax,0x1c(%esi)
4020fb:	c7 04 24 08 d5 41 00 	movl   $0x41d508,(%esp)
402102:	e8 19 01 00 00       	call   0x402220
402107:	83 c0 05             	add    $0x5,%eax
40210a:	89 06                	mov    %eax,(%esi)
40210c:	c7 04 24 24 d5 41 00 	movl   $0x41d524,(%esp)
402113:	e8 08 01 00 00       	call   0x402220
402118:	8d 88 10 01 00 00    	lea    0x110(%eax),%ecx
40211e:	89 4e 04             	mov    %ecx,0x4(%esi)
402121:	8d 88 09 01 00 00    	lea    0x109(%eax),%ecx
402127:	89 4e 08             	mov    %ecx,0x8(%esi)
40212a:	8d 88 9d 00 00 00    	lea    0x9d(%eax),%ecx
402130:	89 4e 0c             	mov    %ecx,0xc(%esi)
402133:	8d 88 d1 00 00 00    	lea    0xd1(%eax),%ecx
402139:	05 96 00 00 00       	add    $0x96,%eax
40213e:	89 4e 10             	mov    %ecx,0x10(%esi)
402141:	89 46 14             	mov    %eax,0x14(%esi)
402144:	c7 04 24 54 d5 41 00 	movl   $0x41d554,(%esp)
40214b:	e8 d0 00 00 00       	call   0x402220
402150:	59                   	pop    %ecx
402151:	59                   	pop    %ecx
402152:	83 e8 34             	sub    $0x34,%eax
402155:	89 46 18             	mov    %eax,0x18(%esi)
402158:	5e                   	pop    %esi
402159:	c6 05 c8 29 42 00 01 	movb   $0x1,0x4229c8
402160:	5b                   	pop    %ebx
402161:	c3                   	ret
402162:	55                   	push   %ebp
402163:	8b ec                	mov    %esp,%ebp
402165:	83 e4 f8             	and    $0xfffffff8,%esp
402168:	51                   	push   %ecx
402169:	80 3d c8 29 42 00 00 	cmpb   $0x0,0x4229c8
402170:	56                   	push   %esi
402171:	8b f1                	mov    %ecx,%esi
402173:	0f 84 a2 00 00 00    	je     0x40221b
402179:	83 ec 18             	sub    $0x18,%esp
40217c:	8b cc                	mov    %esp,%ecx
40217e:	68 68 d5 41 00       	push   $0x41d568
402183:	e8 e5 ef ff ff       	call   0x40116d
402188:	b9 00 a3 41 00       	mov    $0x41a300,%ecx
40218d:	e8 cc fd ff ff       	call   0x401f5e
402192:	83 ec 18             	sub    $0x18,%esp
402195:	8b cc                	mov    %esp,%ecx
402197:	68 80 d5 41 00       	push   $0x41d580
40219c:	e8 cc ef ff ff       	call   0x40116d
4021a1:	8b 0e                	mov    (%esi),%ecx
4021a3:	e8 b6 fd ff ff       	call   0x401f5e
4021a8:	83 ec 18             	sub    $0x18,%esp
4021ab:	8b cc                	mov    %esp,%ecx
4021ad:	68 84 d5 41 00       	push   $0x41d584
4021b2:	e8 b6 ef ff ff       	call   0x40116d
4021b7:	8b 4e 04             	mov    0x4(%esi),%ecx
4021ba:	e8 9f fd ff ff       	call   0x401f5e
4021bf:	83 ec 18             	sub    $0x18,%esp
4021c2:	8b cc                	mov    %esp,%ecx
4021c4:	68 8c d5 41 00       	push   $0x41d58c
4021c9:	e8 9f ef ff ff       	call   0x40116d
4021ce:	8b 4e 08             	mov    0x8(%esi),%ecx
4021d1:	e8 88 fd ff ff       	call   0x401f5e
4021d6:	83 ec 18             	sub    $0x18,%esp
4021d9:	8b cc                	mov    %esp,%ecx
4021db:	68 94 d5 41 00       	push   $0x41d594
4021e0:	e8 88 ef ff ff       	call   0x40116d
4021e5:	8b 4e 0c             	mov    0xc(%esi),%ecx
4021e8:	e8 71 fd ff ff       	call   0x401f5e
4021ed:	83 ec 18             	sub    $0x18,%esp
4021f0:	8b cc                	mov    %esp,%ecx
4021f2:	68 ac d5 41 00       	push   $0x41d5ac
4021f7:	e8 71 ef ff ff       	call   0x40116d
4021fc:	8b 4e 10             	mov    0x10(%esi),%ecx
4021ff:	e8 5a fd ff ff       	call   0x401f5e
402204:	83 ec 18             	sub    $0x18,%esp
402207:	8b cc                	mov    %esp,%ecx
402209:	68 bc d5 41 00       	push   $0x41d5bc
40220e:	e8 5a ef ff ff       	call   0x40116d
402213:	8b 4e 14             	mov    0x14(%esi),%ecx
402216:	e8 43 fd ff ff       	call   0x401f5e
40221b:	5e                   	pop    %esi
40221c:	8b e5                	mov    %ebp,%esp
40221e:	5d                   	pop    %ebp
40221f:	c3                   	ret
402220:	6a 24                	push   $0x24
402222:	68 38 eb 41 00       	push   $0x41eb38
402227:	e8 84 8b 00 00       	call   0x40adb0
40222c:	c7 45 d0 01 00 00 00 	movl   $0x1,-0x30(%ebp)
402233:	c7 45 d4 ff ff 7f 00 	movl   $0x7fffff,-0x2c(%ebp)
40223a:	b8 00 00 40 00       	mov    $0x400000,%eax
40223f:	89 45 cc             	mov    %eax,-0x34(%ebp)
402242:	8b 4d 08             	mov    0x8(%ebp),%ecx
402245:	89 4d dc             	mov    %ecx,-0x24(%ebp)
402248:	83 65 d8 00          	andl   $0x0,-0x28(%ebp)
40224c:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
402250:	89 45 e0             	mov    %eax,-0x20(%ebp)
402253:	6a fe                	push   $0xfffffffe
402255:	5e                   	pop    %esi
402256:	8b 45 e0             	mov    -0x20(%ebp),%eax
402259:	3b 45 d4             	cmp    -0x2c(%ebp),%eax
40225c:	0f 83 e8 00 00 00    	jae    0x40234a
402262:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
402266:	8a 19                	mov    (%ecx),%bl
402268:	84 db                	test   %bl,%bl
40226a:	75 0b                	jne    0x402277
40226c:	89 75 fc             	mov    %esi,-0x4(%ebp)
40226f:	8b 45 e4             	mov    -0x1c(%ebp),%eax
402272:	e9 d6 00 00 00       	jmp    0x40234d
402277:	80 fb 3f             	cmp    $0x3f,%bl
40227a:	74 75                	je     0x4022f1
40227c:	8a c3                	mov    %bl,%al
40227e:	24 df                	and    $0xdf,%al
402280:	3c 41                	cmp    $0x41,%al
402282:	7c 0f                	jl     0x402293
402284:	3c 46                	cmp    $0x46,%al
402286:	7f 0b                	jg     0x402293
402288:	0f be d3             	movsbl %bl,%edx
40228b:	83 e2 df             	and    $0xffffffdf,%edx
40228e:	83 ea 37             	sub    $0x37,%edx
402291:	eb 14                	jmp    0x4022a7
402293:	80 fb 30             	cmp    $0x30,%bl
402296:	7c 0d                	jl     0x4022a5
402298:	80 fb 39             	cmp    $0x39,%bl
40229b:	7f 08                	jg     0x4022a5
40229d:	0f be d3             	movsbl %bl,%edx
4022a0:	83 ea 30             	sub    $0x30,%edx
4022a3:	eb 02                	jmp    0x4022a7
4022a5:	33 d2                	xor    %edx,%edx
4022a7:	8a 41 01             	mov    0x1(%ecx),%al
4022aa:	8a e0                	mov    %al,%ah