401e04:	eb 10                	jmp    0x401e16
401e06:	c7 45 e8 01 00 00 00 	movl   $0x1,-0x18(%ebp)
401e0d:	eb 07                	jmp    0x401e16
401e0f:	c7 45 e4 01 00 00 00 	movl   $0x1,-0x1c(%ebp)
401e16:	8d 45 ec             	lea    -0x14(%ebp),%eax
401e19:	47                   	inc    %edi
401e1a:	50                   	push   %eax
401e1b:	8d 45 f0             	lea    -0x10(%ebp),%eax
401e1e:	50                   	push   %eax
401e1f:	6a 00                	push   $0x0
401e21:	ff 15 18 41 40 00    	call   *0x404118
401e27:	8b f0                	mov    %eax,%esi
401e29:	83 c4 0c             	add    $0xc,%esp
401e2c:	85 f6                	test   %esi,%esi
401e2e:	0f 85 fb fe ff ff    	jne    0x401d2f
401e34:	83 ff 01             	cmp    $0x1,%edi
401e37:	74 28                	je     0x401e61
401e39:	83 ff 02             	cmp    $0x2,%edi
401e3c:	0f 85 07 01 00 00    	jne    0x401f49
401e42:	8b ce                	mov    %esi,%ecx
401e44:	ba 50 11 40 00       	mov    $0x401150,%edx
401e49:	b8 8c 33 40 00       	mov    $0x40338c,%eax
401e4e:	8b 04 88             	mov    (%eax,%ecx,4),%eax
401e51:	3b 04 8a             	cmp    (%edx,%ecx,4),%eax
401e54:	75 0d                	jne    0x401e63
401e56:	41                   	inc    %ecx
401e57:	83 f9 04             	cmp    $0x4,%ecx
401e5a:	75 ed                	jne    0x401e49
401e5c:	e9 e8 00 00 00       	jmp    0x401f49
401e61:	33 f6                	xor    %esi,%esi
401e63:	83 7d e8 00          	cmpl   $0x0,-0x18(%ebp)
401e67:	75 06                	jne    0x401e6f
401e69:	83 7d e4 00          	cmpl   $0x0,-0x1c(%ebp)
401e6d:	74 0a                	je     0x401e79
401e6f:	bb 01 40 00 80       	mov    $0x80004001,%ebx
401e74:	e9 d0 00 00 00       	jmp    0x401f49
401e79:	83 7d e0 00          	cmpl   $0x0,-0x20(%ebp)
401e7d:	0f 84 bb 00 00 00    	je     0x401f3e
401e83:	56                   	push   %esi
401e84:	56                   	push   %esi
401e85:	6a 01                	push   $0x1
401e87:	56                   	push   %esi
401e88:	ff 15 08 40 40 00    	call   *0x404008
401e8e:	a3 78 33 40 00       	mov    %eax,0x403378
401e93:	85 c0                	test   %eax,%eax
401e95:	0f 84 8c 00 00 00    	je     0x401f27
401e9b:	56                   	push   %esi
401e9c:	56                   	push   %esi
401e9d:	ff 15 40 41 40 00    	call   *0x404140
401ea3:	8b d8                	mov    %eax,%ebx
401ea5:	85 db                	test   %ebx,%ebx
401ea7:	78 70                	js     0x401f19
401ea9:	8b 4d cc             	mov    -0x34(%ebp),%ecx
401eac:	33 d2                	xor    %edx,%edx
401eae:	42                   	inc    %edx
401eaf:	e8 01 01 00 00       	call   0x401fb5
401eb4:	85 c0                	test   %eax,%eax
401eb6:	74 5b                	je     0x401f13
401eb8:	56                   	push   %esi
401eb9:	56                   	push   %esi
401eba:	56                   	push   %esi
401ebb:	6a 03                	push   $0x3
401ebd:	6a 02                	push   $0x2
401ebf:	56                   	push   %esi
401ec0:	56                   	push   %esi
401ec1:	83 cf ff             	or     $0xffffffff,%edi
401ec4:	57                   	push   %edi
401ec5:	56                   	push   %esi
401ec6:	ff 15 2c 41 40 00    	call   *0x40412c
401ecc:	8b d8                	mov    %eax,%ebx
401ece:	85 db                	test   %ebx,%ebx
401ed0:	78 1c                	js     0x401eee
401ed2:	e8 0a f9 ff ff       	call   0x4017e1
401ed7:	8b d8                	mov    %eax,%ebx
401ed9:	85 db                	test   %ebx,%ebx
401edb:	78 11                	js     0x401eee
401edd:	e8 4a 02 00 00       	call   0x40212c
401ee2:	8b de                	mov    %esi,%ebx
401ee4:	e8 c6 f7 ff ff       	call   0x4016af
401ee9:	e8 36 f9 ff ff       	call   0x401824
401eee:	a1 10 30 40 00       	mov    0x403010,%eax
401ef3:	3b c7                	cmp    %edi,%eax
401ef5:	74 0d                	je     0x401f04
401ef7:	50                   	push   %eax
401ef8:	ff 15 5c 40 40 00    	call   *0x40405c
401efe:	89 3d 10 30 40 00    	mov    %edi,0x403010
401f04:	83 3d 9c 33 40 00 00 	cmpl   $0x0,0x40339c
401f0b:	74 06                	je     0x401f13
401f0d:	89 3d 9c 33 40 00    	mov    %edi,0x40339c
401f13:	ff 15 30 41 40 00    	call   *0x404130
401f19:	ff 35 78 33 40 00    	push   0x403378
401f1f:	ff 15 28 40 40 00    	call   *0x404028
401f25:	eb 22                	jmp    0x401f49
401f27:	ff 15 3c 40 40 00    	call   *0x40403c
401f2d:	8b d8                	mov    %eax,%ebx
401f2f:	85 db                	test   %ebx,%ebx
401f31:	7e 16                	jle    0x401f49
401f33:	0f b7 db             	movzwl %bx,%ebx
401f36:	81 cb 00 00 07 80    	or     $0x80070000,%ebx
401f3c:	eb 0b                	jmp    0x401f49
401f3e:	83 7d dc 00          	cmpl   $0x0,-0x24(%ebp)
401f42:	74 05                	je     0x401f49
401f44:	e8 f7 fb ff ff       	call   0x401b40
401f49:	8b 4d fc             	mov    -0x4(%ebp),%ecx
401f4c:	8b c3                	mov    %ebx,%eax
401f4e:	5f                   	pop    %edi
401f4f:	5e                   	pop    %esi
401f50:	33 cd                	xor    %ebp,%ecx
401f52:	5b                   	pop    %ebx
401f53:	e8 58 09 00 00       	call   0x4028b0
401f58:	c9                   	leave
401f59:	c2 10 00             	ret    $0x10
401f5c:	8b ff                	mov    %edi,%edi
401f5e:	56                   	push   %esi
401f5f:	8b f1                	mov    %ecx,%esi
401f61:	83 26 00             	andl   $0x0,(%esi)
401f64:	a1 10 30 40 00       	mov    0x403010,%eax
401f69:	83 f8 ff             	cmp    $0xffffffff,%eax
401f6c:	75 2c                	jne    0x401f9a
401f6e:	8b 0d 9c 33 40 00    	mov    0x40339c,%ecx
401f74:	85 c9                	test   %ecx,%ecx
401f76:	74 1d                	je     0x401f95
401f78:	3b c8                	cmp    %eax,%ecx
401f7a:	75 04                	jne    0x401f80
401f7c:	33 c0                	xor    %eax,%eax
401f7e:	5e                   	pop    %esi
401f7f:	c3                   	ret
401f80:	8b 15 a0 33 40 00    	mov    0x4033a0,%edx
401f86:	e8 2a 00 00 00       	call   0x401fb5
401f8b:	a1 10 30 40 00       	mov    0x403010,%eax
401f90:	83 f8 ff             	cmp    $0xffffffff,%eax
401f93:	75 05                	jne    0x401f9a
401f95:	33 c0                	xor    %eax,%eax
401f97:	40                   	inc    %eax
401f98:	5e                   	pop    %esi
401f99:	c3                   	ret
401f9a:	83 26 00             	andl   $0x0,(%esi)
401f9d:	56                   	push   %esi
401f9e:	50                   	push   %eax
401f9f:	ff 15 58 40 40 00    	call   *0x404058
401fa5:	5e                   	pop    %esi
401fa6:	c3                   	ret
401fa7:	85 c9                	test   %ecx,%ecx
401fa9:	74 09                	je     0x401fb4
401fab:	51                   	push   %ecx
401fac:	6a 00                	push   $0x0
401fae:	ff 15 54 40 40 00    	call   *0x404054
401fb4:	c3                   	ret
401fb5:	8b ff                	mov    %edi,%edi
401fb7:	55                   	push   %ebp
401fb8:	8b ec                	mov    %esp,%ebp
401fba:	81 ec 2c 02 00 00    	sub    $0x22c,%esp
401fc0:	a1 04 30 40 00       	mov    0x403004,%eax
401fc5:	33 c5                	xor    %ebp,%eax
401fc7:	89 45 fc             	mov    %eax,-0x4(%ebp)
401fca:	53                   	push   %ebx
401fcb:	56                   	push   %esi
401fcc:	83 cb ff             	or     $0xffffffff,%ebx
401fcf:	8b f1                	mov    %ecx,%esi
401fd1:	57                   	push   %edi
401fd2:	8b fa                	mov    %edx,%edi
401fd4:	39 1d 10 30 40 00    	cmp    %ebx,0x403010
401fda:	0f 85 93 00 00 00    	jne    0x402073
401fe0:	33 c0                	xor    %eax,%eax
401fe2:	89 85 e0 fd ff ff    	mov    %eax,-0x220(%ebp)
401fe8:	89 85 e4 fd ff ff    	mov    %eax,-0x21c(%ebp)
401fee:	89 85 ec fd ff ff    	mov    %eax,-0x214(%ebp)
401ff4:	85 f6                	test   %esi,%esi
401ff6:	75 09                	jne    0x402001
401ff8:	50                   	push   %eax
401ff9:	ff 15 0c 40 40 00    	call   *0x40400c
401fff:	8b f0                	mov    %eax,%esi
402001:	68 04 01 00 00       	push   $0x104
402006:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
40200c:	50                   	push   %eax
40200d:	56                   	push   %esi
40200e:	ff 15 50 40 40 00    	call   *0x404050
402014:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
40201a:	c7 85 d4 fd ff ff 20 	movl   $0x20,-0x22c(%ebp)
402021:	00 00 00
402024:	89 85 dc fd ff ff    	mov    %eax,-0x224(%ebp)
40202a:	0f b7 c7             	movzwl %di,%eax
40202d:	89 85 e8 fd ff ff    	mov    %eax,-0x218(%ebp)
402033:	8d 85 d4 fd ff ff    	lea    -0x22c(%ebp),%eax
402039:	50                   	push   %eax
40203a:	c7 85 d8 fd ff ff 88 	movl   $0x88,-0x228(%ebp)
402041:	00 00 00
402044:	89 b5 f0 fd ff ff    	mov    %esi,-0x210(%ebp)
40204a:	ff 15 60 40 40 00    	call   *0x404060
402050:	8b d0                	mov    %eax,%edx
402052:	3b d3                	cmp    %ebx,%edx
402054:	74 1d                	je     0x402073
402056:	8b ca                	mov    %edx,%ecx
402058:	be 10 30 40 00       	mov    $0x403010,%esi
40205d:	8b c3                	mov    %ebx,%eax
40205f:	f0 0f b1 0e          	lock cmpxchg %ecx,(%esi)
402063:	3b c3                	cmp    %ebx,%eax
402065:	74 07                	je     0x40206e
402067:	52                   	push   %edx
402068:	ff 15 5c 40 40 00    	call   *0x40405c
40206e:	e8 54 00 00 00       	call   0x4020c7
402073:	8b 4d fc             	mov    -0x4(%ebp),%ecx
402076:	33 c0                	xor    %eax,%eax
402078:	39 1d 10 30 40 00    	cmp    %ebx,0x403010
40207e:	5f                   	pop    %edi
40207f:	0f 95 c0             	setne  %al
402082:	33 cd                	xor    %ebp,%ecx
402084:	5e                   	pop    %esi
402085:	5b                   	pop    %ebx
402086:	e8 25 08 00 00       	call   0x4028b0
40208b:	c9                   	leave
40208c:	c3                   	ret
40208d:	8b ff                	mov    %edi,%edi
40208f:	55                   	push   %ebp
402090:	8b ec                	mov    %esp,%ebp
402092:	51                   	push   %ecx
402093:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
402097:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40209a:	e8 bd fe ff ff       	call   0x401f5c
40209f:	85 c0                	test   %eax,%eax
4020a1:	75 02                	jne    0x4020a5
4020a3:	c9                   	leave
4020a4:	c3                   	ret
4020a5:	56                   	push   %esi
4020a6:	68 00 40 00 00       	push   $0x4000
4020ab:	6a 00                	push   $0x0
4020ad:	68 28 12 40 00       	push   $0x401228
4020b2:	ff 15 14 40 40 00    	call   *0x404014
4020b8:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4020bb:	8b f0                	mov    %eax,%esi
4020bd:	e8 e5 fe ff ff       	call   0x401fa7
4020c2:	8b c6                	mov    %esi,%eax
4020c4:	5e                   	pop    %esi
4020c5:	c9                   	leave
4020c6:	c3                   	ret
4020c7:	8b 0d 7c 33 40 00    	mov    0x40337c,%ecx
4020cd:	85 c9                	test   %ecx,%ecx
4020cf:	75 2a                	jne    0x4020fb
4020d1:	e8 b7 ff ff ff       	call   0x40208d
4020d6:	8b c8                	mov    %eax,%ecx
4020d8:	89 0d 7c 33 40 00    	mov    %ecx,0x40337c
4020de:	85 c9                	test   %ecx,%ecx
4020e0:	75 19                	jne    0x4020fb
4020e2:	68 00 40 00 00       	push   $0x4000
4020e7:	50                   	push   %eax
4020e8:	68 28 12 40 00       	push   $0x401228
4020ed:	ff 15 14 40 40 00    	call   *0x404014
4020f3:	8b c8                	mov    %eax,%ecx
4020f5:	89 0d 7c 33 40 00    	mov    %ecx,0x40337c
4020fb:	33 c0                	xor    %eax,%eax
4020fd:	85 c9                	test   %ecx,%ecx
4020ff:	0f 95 c0             	setne  %al
402102:	c3                   	ret
402103:	8b ff                	mov    %edi,%edi
402105:	55                   	push   %ebp
402106:	8b ec                	mov    %esp,%ebp
402108:	51                   	push   %ecx
402109:	8d 45 fc             	lea    -0x4(%ebp),%eax
40210c:	50                   	push   %eax
40210d:	ff 15 18 40 40 00    	call   *0x404018
402113:	50                   	push   %eax
402114:	ff 15 48 40 40 00    	call   *0x404048
40211a:	85 c0                	test   %eax,%eax
40211c:	74 0a                	je     0x402128
40211e:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
402122:	74 04                	je     0x402128
402124:	b0 01                	mov    $0x1,%al
402126:	c9                   	leave
402127:	c3                   	ret
402128:	32 c0                	xor    %al,%al
40212a:	c9                   	leave
40212b:	c3                   	ret
40212c:	8b ff                	mov    %edi,%edi
40212e:	53                   	push   %ebx
40212f:	56                   	push   %esi
402130:	57                   	push   %edi
402131:	6a 00                	push   $0x0
402133:	6a 00                	push   $0x0
402135:	33 f6                	xor    %esi,%esi
402137:	68 44 12 40 00       	push   $0x401244
40213c:	46                   	inc    %esi
40213d:	ff 15 14 40 40 00    	call   *0x404014
402143:	8b f8                	mov    %eax,%edi
402145:	85 ff                	test   %edi,%edi
402147:	74 32                	je     0x40217b
402149:	68 5c 12 40 00       	push   $0x40125c
40214e:	57                   	push   %edi
40214f:	ff 15 2c 40 40 00    	call   *0x40402c
402155:	8b d8                	mov    %eax,%ebx
402157:	85 db                	test   %ebx,%ebx
402159:	74 19                	je     0x402174
40215b:	8b cb                	mov    %ebx,%ecx
40215d:	ff 15 48 41 40 00    	call   *0x404148
402163:	8b f4                	mov    %esp,%esi
402165:	ff d3                	call   *%ebx
402167:	3b f4                	cmp    %esp,%esi
402169:	74 07                	je     0x402172
40216b:	b9 04 00 00 00       	mov    $0x4,%ecx
402170:	cd 29                	int    $0x29
402172:	8b f0                	mov    %eax,%esi
402174:	57                   	push   %edi
402175:	ff 15 10 40 40 00    	call   *0x404010
40217b:	5f                   	pop    %edi
40217c:	8b c6                	mov    %esi,%eax
40217e:	5e                   	pop    %esi
40217f:	5b                   	pop    %ebx
402180:	c3                   	ret
402181:	8b ff                	mov    %edi,%edi
402183:	55                   	push   %ebp
402184:	8b ec                	mov    %esp,%ebp
402186:	8b 45 0c             	mov    0xc(%ebp),%eax
402189:	56                   	push   %esi
40218a:	33 f6                	xor    %esi,%esi
40218c:	85 c0                	test   %eax,%eax
40218e:	74 07                	je     0x402197
402190:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
402195:	76 05                	jbe    0x40219c
402197:	be 57 00 07 80       	mov    $0x80070057,%esi
40219c:	85 f6                	test   %esi,%esi
40219e:	78 37                	js     0x4021d7
4021a0:	53                   	push   %ebx
4021a1:	8b 5d 08             	mov    0x8(%ebp),%ebx
4021a4:	33 f6                	xor    %esi,%esi
4021a6:	57                   	push   %edi
4021a7:	8d 78 ff             	lea    -0x1(%eax),%edi
4021aa:	8d 45 14             	lea    0x14(%ebp),%eax
4021ad:	50                   	push   %eax
4021ae:	ff 75 10             	push   0x10(%ebp)
4021b1:	57                   	push   %edi
4021b2:	53                   	push   %ebx
4021b3:	ff 15 1c 41 40 00    	call   *0x40411c
4021b9:	83 c4 10             	add    $0x10,%esp
4021bc:	85 c0                	test   %eax,%eax
4021be:	78 08                	js     0x4021c8
4021c0:	3b c7                	cmp    %edi,%eax
4021c2:	77 04                	ja     0x4021c8
4021c4:	75 0d                	jne    0x4021d3
4021c6:	eb 05                	jmp    0x4021cd
4021c8:	be 7a 00 07 80       	mov    $0x8007007a,%esi
4021cd:	33 c0                	xor    %eax,%eax
4021cf:	66 89 04 7b          	mov    %ax,(%ebx,%edi,2)
4021d3:	5f                   	pop    %edi
4021d4:	5b                   	pop    %ebx
4021d5:	eb 0c                	jmp    0x4021e3
4021d7:	85 c0                	test   %eax,%eax
4021d9:	74 08                	je     0x4021e3
4021db:	8b 4d 08             	mov    0x8(%ebp),%ecx
4021de:	33 c0                	xor    %eax,%eax
4021e0:	66 89 01             	mov    %ax,(%ecx)
4021e3:	8b c6                	mov    %esi,%eax