401e99:	83 c4 04             	add    $0x4,%esp
401e9c:	8d 54 24 10          	lea    0x10(%esp),%edx
401ea0:	52                   	push   %edx
401ea1:	56                   	push   %esi
401ea2:	50                   	push   %eax
401ea3:	89 44 24 30          	mov    %eax,0x30(%esp)
401ea7:	8b 44 24 6c          	mov    0x6c(%esp),%eax
401eab:	50                   	push   %eax
401eac:	57                   	push   %edi
401ead:	ff d3                	call   *%ebx
401eaf:	85 c0                	test   %eax,%eax
401eb1:	0f 84 d0 00 00 00    	je     0x401f87
401eb7:	0f b7 44 24 5c       	movzwl 0x5c(%esp),%eax
401ebc:	39 44 24 10          	cmp    %eax,0x10(%esp)
401ec0:	0f 85 c1 00 00 00    	jne    0x401f87
401ec6:	8b 54 24 24          	mov    0x24(%esp),%edx
401eca:	d1 e8                	shr    $1,%eax
401ecc:	33 c9                	xor    %ecx,%ecx
401ece:	66 89 0c 42          	mov    %cx,(%edx,%eax,2)
401ed2:	0f b7 74 24 64       	movzwl 0x64(%esp),%esi
401ed7:	8d 46 02             	lea    0x2(%esi),%eax
401eda:	50                   	push   %eax
401edb:	e8 36 eb 02 00       	call   0x430a16
401ee0:	8b 54 24 6c          	mov    0x6c(%esp),%edx
401ee4:	83 c4 04             	add    $0x4,%esp
401ee7:	8d 4c 24 10          	lea    0x10(%esp),%ecx
401eeb:	51                   	push   %ecx
401eec:	56                   	push   %esi
401eed:	50                   	push   %eax
401eee:	52                   	push   %edx
401eef:	57                   	push   %edi
401ef0:	89 44 24 3c          	mov    %eax,0x3c(%esp)
401ef4:	ff d3                	call   *%ebx
401ef6:	85 c0                	test   %eax,%eax
401ef8:	0f 84 89 00 00 00    	je     0x401f87
401efe:	0f b7 44 24 64       	movzwl 0x64(%esp),%eax
401f03:	39 44 24 10          	cmp    %eax,0x10(%esp)
401f07:	75 7e                	jne    0x401f87
401f09:	8b 54 24 28          	mov    0x28(%esp),%edx
401f0d:	d1 e8                	shr    $1,%eax
401f0f:	33 c9                	xor    %ecx,%ecx
401f11:	66 89 0c 42          	mov    %cx,(%edx,%eax,2)
401f15:	8b 84 24 58 03 00 00 	mov    0x358(%esp),%eax
401f1c:	50                   	push   %eax
401f1d:	8d 4c 24 1c          	lea    0x1c(%esp),%ecx
401f21:	51                   	push   %ecx
401f22:	ff 94 24 5c 03 00 00 	call   *0x35c(%esp)
401f29:	8b 54 24 2c          	mov    0x2c(%esp),%edx
401f2d:	52                   	push   %edx
401f2e:	8b f0                	mov    %eax,%esi
401f30:	e8 68 ea 02 00       	call   0x43099d
401f35:	8b 44 24 34          	mov    0x34(%esp),%eax
401f39:	50                   	push   %eax
401f3a:	e8 5e ea 02 00       	call   0x43099d
401f3f:	83 c4 10             	add    $0x10,%esp
401f42:	85 f6                	test   %esi,%esi
401f44:	74 19                	je     0x401f5f
401f46:	8b 44 24 38          	mov    0x38(%esp),%eax
401f4a:	3b 44 24 14          	cmp    0x14(%esp),%eax
401f4e:	74 0f                	je     0x401f5f
401f50:	8b cd                	mov    %ebp,%ecx
401f52:	45                   	inc    %ebp
401f53:	81 f9 00 08 00 00    	cmp    $0x800,%ecx
401f59:	0f 8c c4 fe ff ff    	jl     0x401e23
401f5f:	33 d2                	xor    %edx,%edx
401f61:	81 fd 00 08 00 00    	cmp    $0x800,%ebp
401f67:	0f 9c c2             	setl   %dl
401f6a:	5b                   	pop    %ebx
401f6b:	57                   	push   %edi
401f6c:	8d 72 ff             	lea    -0x1(%edx),%esi
401f6f:	81 e6 d6 00 00 00    	and    $0xd6,%esi
401f75:	ff 15 2c 34 47 00    	call   *0x47342c
401f7b:	5f                   	pop    %edi
401f7c:	8b c6                	mov    %esi,%eax
401f7e:	5e                   	pop    %esi
401f7f:	5d                   	pop    %ebp
401f80:	81 c4 3c 03 00 00    	add    $0x33c,%esp
401f86:	c3                   	ret
401f87:	ff 15 24 34 47 00    	call   *0x473424
401f8d:	8b f0                	mov    %eax,%esi
401f8f:	5b                   	pop    %ebx
401f90:	57                   	push   %edi
401f91:	ff 15 2c 34 47 00    	call   *0x47342c
401f97:	5f                   	pop    %edi
401f98:	8b c6                	mov    %esi,%eax
401f9a:	5e                   	pop    %esi
401f9b:	5d                   	pop    %ebp
401f9c:	81 c4 3c 03 00 00    	add    $0x33c,%esp
401fa2:	c3                   	ret
401fa3:	cc                   	int3
401fa4:	cc                   	int3
401fa5:	cc                   	int3
401fa6:	cc                   	int3
401fa7:	cc                   	int3
401fa8:	cc                   	int3
401fa9:	cc                   	int3
401faa:	cc                   	int3
401fab:	cc                   	int3
401fac:	cc                   	int3
401fad:	cc                   	int3
401fae:	cc                   	int3
401faf:	cc                   	int3
401fb0:	8b 44 24 04          	mov    0x4(%esp),%eax
401fb4:	8b 48 28             	mov    0x28(%eax),%ecx
401fb7:	85 c9                	test   %ecx,%ecx
401fb9:	74 14                	je     0x401fcf
401fbb:	8b 44 24 08          	mov    0x8(%esp),%eax
401fbf:	8b 50 04             	mov    0x4(%eax),%edx
401fc2:	8b 00                	mov    (%eax),%eax
401fc4:	52                   	push   %edx
401fc5:	50                   	push   %eax
401fc6:	51                   	push   %ecx
401fc7:	e8 b4 fd ff ff       	call   0x401d80
401fcc:	83 c4 0c             	add    $0xc,%esp
401fcf:	b8 01 00 00 00       	mov    $0x1,%eax
401fd4:	c3                   	ret
401fd5:	cc                   	int3
401fd6:	cc                   	int3
401fd7:	cc                   	int3
401fd8:	cc                   	int3
401fd9:	cc                   	int3
401fda:	cc                   	int3
401fdb:	cc                   	int3
401fdc:	cc                   	int3
401fdd:	cc                   	int3
401fde:	cc                   	int3
401fdf:	cc                   	int3
401fe0:	83 ec 08             	sub    $0x8,%esp
401fe3:	8b 44 24 0c          	mov    0xc(%esp),%eax
401fe7:	8b 4c 24 10          	mov    0x10(%esp),%ecx
401feb:	8d 14 24             	lea    (%esp),%edx
401fee:	52                   	push   %edx
401fef:	68 b0 1f 40 00       	push   $0x401fb0
401ff4:	89 44 24 08          	mov    %eax,0x8(%esp)
401ff8:	89 4c 24 0c          	mov    %ecx,0xc(%esp)
401ffc:	e8 bf fb ff ff       	call   0x401bc0
402001:	83 c4 10             	add    $0x10,%esp
402004:	c3                   	ret
402005:	cc                   	int3
402006:	cc                   	int3
402007:	cc                   	int3
402008:	cc                   	int3
402009:	cc                   	int3
40200a:	cc                   	int3
40200b:	cc                   	int3
40200c:	cc                   	int3
40200d:	cc                   	int3
40200e:	cc                   	int3
40200f:	cc                   	int3
402010:	56                   	push   %esi
402011:	57                   	push   %edi
402012:	33 ff                	xor    %edi,%edi
402014:	e8 f7 13 00 00       	call   0x403410
402019:	8b 44 24 0c          	mov    0xc(%esp),%eax
40201d:	50                   	push   %eax
40201e:	57                   	push   %edi
40201f:	6a 01                	push   $0x1
402021:	ff 15 30 34 47 00    	call   *0x473430
402027:	8b f0                	mov    %eax,%esi
402029:	e8 92 14 00 00       	call   0x4034c0
40202e:	85 f6                	test   %esi,%esi
402030:	75 08                	jne    0x40203a
402032:	5f                   	pop    %edi
402033:	5e                   	pop    %esi
402034:	ff 25 24 34 47 00    	jmp    *0x473424
40203a:	6a ff                	push   $0xffffffff
40203c:	56                   	push   %esi
40203d:	ff 15 3c 34 47 00    	call   *0x47343c
402043:	85 c0                	test   %eax,%eax
402045:	75 08                	jne    0x40204f
402047:	ff 15 24 34 47 00    	call   *0x473424
40204d:	8b f8                	mov    %eax,%edi
40204f:	56                   	push   %esi
402050:	ff 15 2c 34 47 00    	call   *0x47342c
402056:	8b c7                	mov    %edi,%eax
402058:	5f                   	pop    %edi
402059:	5e                   	pop    %esi
40205a:	c3                   	ret
40205b:	cc                   	int3
40205c:	cc                   	int3
40205d:	cc                   	int3
40205e:	cc                   	int3
40205f:	cc                   	int3
402060:	57                   	push   %edi
402061:	8b 7c 24 0c          	mov    0xc(%esp),%edi
402065:	8b 07                	mov    (%edi),%eax
402067:	85 c0                	test   %eax,%eax
402069:	75 02                	jne    0x40206d
40206b:	5f                   	pop    %edi
40206c:	c3                   	ret
40206d:	56                   	push   %esi
40206e:	8b 74 24 0c          	mov    0xc(%esp),%esi
402072:	8b 4e 20             	mov    0x20(%esi),%ecx
402075:	51                   	push   %ecx
402076:	50                   	push   %eax
402077:	e8 1b 15 03 00       	call   0x433597
40207c:	83 c4 08             	add    $0x8,%esp
40207f:	85 c0                	test   %eax,%eax
402081:	75 18                	jne    0x40209b
402083:	8b 56 28             	mov    0x28(%esi),%edx
402086:	52                   	push   %edx
402087:	e8 84 ff ff ff       	call   0x402010
40208c:	83 c4 04             	add    $0x4,%esp
40208f:	89 47 04             	mov    %eax,0x4(%edi)
402092:	85 c0                	test   %eax,%eax
402094:	74 05                	je     0x40209b
402096:	5e                   	pop    %esi
402097:	33 c0                	xor    %eax,%eax
402099:	5f                   	pop    %edi
40209a:	c3                   	ret
40209b:	5e                   	pop    %esi
40209c:	b8 01 00 00 00       	mov    $0x1,%eax
4020a1:	5f                   	pop    %edi
4020a2:	c3                   	ret
4020a3:	cc                   	int3
4020a4:	cc                   	int3
4020a5:	cc                   	int3
4020a6:	cc                   	int3
4020a7:	cc                   	int3
4020a8:	cc                   	int3
4020a9:	cc                   	int3
4020aa:	cc                   	int3
4020ab:	cc                   	int3
4020ac:	cc                   	int3
4020ad:	cc                   	int3
4020ae:	cc                   	int3
4020af:	cc                   	int3
4020b0:	83 ec 08             	sub    $0x8,%esp
4020b3:	8b 44 24 0c          	mov    0xc(%esp),%eax
4020b7:	8d 0c 24             	lea    (%esp),%ecx
4020ba:	51                   	push   %ecx
4020bb:	68 60 20 40 00       	push   $0x402060
4020c0:	89 44 24 08          	mov    %eax,0x8(%esp)
4020c4:	c7 44 24 0c 00 00 00 	movl   $0x0,0xc(%esp)
4020cb:	00
4020cc:	e8 ef fa ff ff       	call   0x401bc0
4020d1:	8b 44 24 0c          	mov    0xc(%esp),%eax
4020d5:	83 c4 10             	add    $0x10,%esp
4020d8:	c3                   	ret
4020d9:	cc                   	int3
4020da:	cc                   	int3
4020db:	cc                   	int3
4020dc:	cc                   	int3
4020dd:	cc                   	int3
4020de:	cc                   	int3
4020df:	cc                   	int3
4020e0:	8b 54 24 04          	mov    0x4(%esp),%edx
4020e4:	81 ec 30 08 00 00    	sub    $0x830,%esp
4020ea:	8d 04 24             	lea    (%esp),%eax
4020ed:	50                   	push   %eax
4020ee:	6a 00                	push   $0x0
4020f0:	8d 4c 24 0c          	lea    0xc(%esp),%ecx
4020f4:	51                   	push   %ecx
4020f5:	52                   	push   %edx
4020f6:	e8 75 f5 ff ff       	call   0x401670
4020fb:	83 c4 10             	add    $0x10,%esp
4020fe:	85 c0                	test   %eax,%eax
402100:	75 47                	jne    0x402149
402102:	8b 04 24             	mov    (%esp),%eax
402105:	83 f8 02             	cmp    $0x2,%eax
402108:	74 3f                	je     0x402149
40210a:	83 f8 01             	cmp    $0x1,%eax
40210d:	75 09                	jne    0x402118
40210f:	33 c0                	xor    %eax,%eax
402111:	81 c4 30 08 00 00    	add    $0x830,%esp
402117:	c3                   	ret
402118:	85 c0                	test   %eax,%eax
40211a:	75 2d                	jne    0x402149
40211c:	8a 44 24 14          	mov    0x14(%esp),%al
402120:	a8 04                	test   $0x4,%al
402122:	74 0c                	je     0x402130
402124:	b8 04 00 00 00       	mov    $0x4,%eax
402129:	81 c4 30 08 00 00    	add    $0x830,%esp
40212f:	c3                   	ret
402130:	a8 01                	test   $0x1,%al
402132:	74 0c                	je     0x402140
402134:	b8 02 00 00 00       	mov    $0x2,%eax
402139:	81 c4 30 08 00 00    	add    $0x830,%esp
40213f:	c3                   	ret
402140:	a8 02                	test   $0x2,%al
402142:	b8 03 00 00 00       	mov    $0x3,%eax
402147:	75 05                	jne    0x40214e
402149:	b8 01 00 00 00       	mov    $0x1,%eax
40214e:	81 c4 30 08 00 00    	add    $0x830,%esp
402154:	c3                   	ret
402155:	cc                   	int3
402156:	cc                   	int3
402157:	cc                   	int3
402158:	cc                   	int3
402159:	cc                   	int3
40215a:	cc                   	int3
40215b:	cc                   	int3
40215c:	cc                   	int3
40215d:	cc                   	int3
40215e:	cc                   	int3
40215f:	cc                   	int3
402160:	53                   	push   %ebx
402161:	8b 5c 24 10          	mov    0x10(%esp),%ebx
402165:	56                   	push   %esi
402166:	8b 74 24 0c          	mov    0xc(%esp),%esi
40216a:	33 c0                	xor    %eax,%eax
40216c:	57                   	push   %edi
40216d:	8b 7c 24 14          	mov    0x14(%esp),%edi
402171:	85 f6                	test   %esi,%esi
402173:	75 04                	jne    0x402179
402175:	89 03                	mov    %eax,(%ebx)
402177:	eb 0a                	jmp    0x402183
402179:	57                   	push   %edi
40217a:	56                   	push   %esi
40217b:	e8 30 4e 00 00       	call   0x406fb0
402180:	83 c4 08             	add    $0x8,%esp
402183:	8b 4c 24 20          	mov    0x20(%esp),%ecx
402187:	85 c9                	test   %ecx,%ecx
402189:	74 02                	je     0x40218d
40218b:	89 01                	mov    %eax,(%ecx)
40218d:	85 c0                	test   %eax,%eax
40218f:	75 04                	jne    0x402195
402191:	33 f6                	xor    %esi,%esi
402193:	eb 39                	jmp    0x4021ce
402195:	68 e8 be 45 00       	push   $0x45bee8
40219a:	50                   	push   %eax
40219b:	e8 20 40 00 00       	call   0x4061c0
4021a0:	83 c4 08             	add    $0x8,%esp
4021a3:	85 c0                	test   %eax,%eax
4021a5:	75 19                	jne    0x4021c0
4021a7:	68 e8 be 45 00       	push   $0x45bee8
4021ac:	56                   	push   %esi
4021ad:	e8 0e 40 00 00       	call   0x4061c0
4021b2:	83 c4 08             	add    $0x8,%esp
4021b5:	85 c0                	test   %eax,%eax
4021b7:	75 07                	jne    0x4021c0
4021b9:	5f                   	pop    %edi
4021ba:	5e                   	pop    %esi
4021bb:	83 c8 ff             	or     $0xffffffff,%eax
4021be:	5b                   	pop    %ebx
4021bf:	c3                   	ret
4021c0:	50                   	push   %eax
4021c1:	e8 5f e9 02 00       	call   0x430b25
4021c6:	8b f0                	mov    %eax,%esi
4021c8:	83 c4 04             	add    $0x4,%esp
4021cb:	83 e6 01             	and    $0x1,%esi
4021ce:	57                   	push   %edi
4021cf:	e8 0c ff ff ff       	call   0x4020e0
4021d4:	8b 4c 24 20          	mov    0x20(%esp),%ecx
4021d8:	83 c4 04             	add    $0x4,%esp
4021db:	85 c9                	test   %ecx,%ecx
4021dd:	74 02                	je     0x4021e1
4021df:	89 01                	mov    %eax,(%ecx)
4021e1:	83 f8 01             	cmp    $0x1,%eax
4021e4:	75 09                	jne    0x4021ef