402f18:	83 c4 0c             	add    $0xc,%esp
402f1b:	8b 45 14             	mov    0x14(%ebp),%eax
402f1e:	8b 4d 10             	mov    0x10(%ebp),%ecx
402f21:	01 c8                	add    %ecx,%eax
402f23:	8b 55 d8             	mov    -0x28(%ebp),%edx
402f26:	29 c2                	sub    %eax,%edx
402f28:	8d 04 4f             	lea    (%edi,%ecx,2),%eax
402f2b:	8b 4d 14             	mov    0x14(%ebp),%ecx
402f2e:	8d 04 48             	lea    (%eax,%ecx,2),%eax
402f31:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
402f34:	8d 0c 4e             	lea    (%esi,%ecx,2),%ecx
402f37:	8d 54 12 02          	lea    0x2(%edx,%edx,1),%edx
402f3b:	52                   	push   %edx
402f3c:	50                   	push   %eax
402f3d:	51                   	push   %ecx
402f3e:	e8 ed 13 00 00       	call   0x404330
402f43:	83 c4 0c             	add    $0xc,%esp
402f46:	89 1f                	mov    %ebx,(%edi)
402f48:	8b 45 e8             	mov    -0x18(%ebp),%eax
402f4b:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
402f51:	89 f8                	mov    %edi,%eax
402f53:	83 c4 1c             	add    $0x1c,%esp
402f56:	5e                   	pop    %esi
402f57:	5f                   	pop    %edi
402f58:	5b                   	pop    %ebx
402f59:	5d                   	pop    %ebp
402f5a:	c2 18 00             	ret    $0x18
402f5d:	e8 3e fb ff ff       	call   0x402aa0
402f62:	e8 29 fb ff ff       	call   0x402a90
402f67:	c7 45 f0 00 00 00 00 	movl   $0x0,-0x10(%ebp)
402f6e:	e8 66 45 00 00       	call   0x4074d9
402f73:	66 66 66 66 2e 0f 1f 	data16 data16 data16 nopw %cs:0x0(%eax,%eax,1)
402f7a:	84 00 00 00 00 00
402f80:	55                   	push   %ebp
402f81:	83 ec 0c             	sub    $0xc,%esp
402f84:	83 c5 0c             	add    $0xc,%ebp
402f87:	e8 dd 1a 00 00       	call   0x404a69
402f8c:	cc                   	int3
402f8d:	cc                   	int3
402f8e:	cc                   	int3
402f8f:	cc                   	int3
402f90:	68 b6 94 41 00       	push   $0x4194b6
402f95:	e8 6f 13 00 00       	call   0x404309
402f9a:	cc                   	int3
402f9b:	cc                   	int3
402f9c:	cc                   	int3
402f9d:	cc                   	int3
402f9e:	cc                   	int3
402f9f:	cc                   	int3
402fa0:	b8 28 1a 42 00       	mov    $0x421a28,%eax
402fa5:	c3                   	ret
402fa6:	cc                   	int3
402fa7:	cc                   	int3
402fa8:	cc                   	int3
402fa9:	cc                   	int3
402faa:	cc                   	int3
402fab:	cc                   	int3
402fac:	cc                   	int3
402fad:	cc                   	int3
402fae:	cc                   	int3
402faf:	cc                   	int3
402fb0:	55                   	push   %ebp
402fb1:	53                   	push   %ebx
402fb2:	57                   	push   %edi
402fb3:	56                   	push   %esi
402fb4:	8b 5c 24 18          	mov    0x18(%esp),%ebx
402fb8:	81 fb ff ff ff 7f    	cmp    $0x7fffffff,%ebx
402fbe:	0f 83 a6 00 00 00    	jae    0x40306a
402fc4:	89 ce                	mov    %ecx,%esi
402fc6:	83 fb 07             	cmp    $0x7,%ebx
402fc9:	77 20                	ja     0x402feb
402fcb:	89 5e 10             	mov    %ebx,0x10(%esi)
402fce:	c7 46 14 07 00 00 00 	movl   $0x7,0x14(%esi)
402fd5:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
402fd8:	50                   	push   %eax
402fd9:	ff 74 24 18          	push   0x18(%esp)
402fdd:	56                   	push   %esi
402fde:	e8 4d 13 00 00       	call   0x404330
402fe3:	83 c4 0c             	add    $0xc,%esp
402fe6:	8d 04 5e             	lea    (%esi,%ebx,2),%eax
402fe9:	eb 73                	jmp    0x40305e
402feb:	c7 46 14 07 00 00 00 	movl   $0x7,0x14(%esi)
402ff2:	89 d8                	mov    %ebx,%eax
402ff4:	83 c8 07             	or     $0x7,%eax
402ff7:	3d fe ff ff 7f       	cmp    $0x7ffffffe,%eax
402ffc:	77 71                	ja     0x40306f
402ffe:	83 f8 0b             	cmp    $0xb,%eax
403001:	bd 0a 00 00 00       	mov    $0xa,%ebp
403006:	0f 43 e8             	cmovae %eax,%ebp
403009:	89 e8                	mov    %ebp,%eax
40300b:	01 e8                	add    %ebp,%eax
40300d:	81 fd ff 07 00 00    	cmp    $0x7ff,%ebp
403013:	72 1f                	jb     0x403034
403015:	81 fd ee ff ff 7f    	cmp    $0x7fffffee,%ebp
40301b:	73 52                	jae    0x40306f
40301d:	83 c0 25             	add    $0x25,%eax
403020:	50                   	push   %eax
403021:	e8 d3 05 00 00       	call   0x4035f9
403026:	83 c4 04             	add    $0x4,%esp
403029:	8d 78 23             	lea    0x23(%eax),%edi
40302c:	83 e7 e0             	and    $0xffffffe0,%edi
40302f:	89 47 fc             	mov    %eax,-0x4(%edi)
403032:	eb 0e                	jmp    0x403042
403034:	83 c0 02             	add    $0x2,%eax
403037:	50                   	push   %eax
403038:	e8 bc 05 00 00       	call   0x4035f9
40303d:	83 c4 04             	add    $0x4,%esp
403040:	89 c7                	mov    %eax,%edi
403042:	89 3e                	mov    %edi,(%esi)
403044:	89 5e 10             	mov    %ebx,0x10(%esi)
403047:	89 6e 14             	mov    %ebp,0x14(%esi)
40304a:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
40304d:	50                   	push   %eax
40304e:	ff 74 24 18          	push   0x18(%esp)
403052:	57                   	push   %edi
403053:	e8 d8 12 00 00       	call   0x404330
403058:	83 c4 0c             	add    $0xc,%esp
40305b:	8d 04 5f             	lea    (%edi,%ebx,2),%eax
40305e:	66 c7 00 00 00       	movw   $0x0,(%eax)
403063:	5e                   	pop    %esi
403064:	5f                   	pop    %edi
403065:	5b                   	pop    %ebx
403066:	5d                   	pop    %ebp
403067:	c2 08 00             	ret    $0x8
40306a:	e8 21 fa ff ff       	call   0x402a90
40306f:	e8 2c fa ff ff       	call   0x402aa0
403074:	cc                   	int3
403075:	cc                   	int3
403076:	cc                   	int3
403077:	cc                   	int3
403078:	cc                   	int3
403079:	cc                   	int3
40307a:	cc                   	int3
40307b:	cc                   	int3
40307c:	cc                   	int3
40307d:	cc                   	int3
40307e:	cc                   	int3
40307f:	cc                   	int3
403080:	83 ec 0c             	sub    $0xc,%esp
403083:	c7 44 24 08 00 00 00 	movl   $0x0,0x8(%esp)
40308a:	00
40308b:	c7 44 24 04 00 00 00 	movl   $0x0,0x4(%esp)
403092:	00
403093:	c7 04 24 d4 94 41 00 	movl   $0x4194d4,(%esp)
40309a:	89 e0                	mov    %esp,%eax
40309c:	68 18 f9 41 00       	push   $0x41f918
4030a1:	50                   	push   %eax
4030a2:	e8 23 1b 00 00       	call   0x404bca
4030a7:	cc                   	int3
4030a8:	cc                   	int3
4030a9:	cc                   	int3
4030aa:	cc                   	int3
4030ab:	cc                   	int3
4030ac:	cc                   	int3
4030ad:	cc                   	int3
4030ae:	cc                   	int3
4030af:	cc                   	int3
4030b0:	55                   	push   %ebp
4030b1:	89 e5                	mov    %esp,%ebp
4030b3:	53                   	push   %ebx
4030b4:	57                   	push   %edi
4030b5:	56                   	push   %esi
4030b6:	83 ec 14             	sub    $0x14,%esp
4030b9:	8b 45 08             	mov    0x8(%ebp),%eax
4030bc:	89 65 e4             	mov    %esp,-0x1c(%ebp)
4030bf:	c7 45 f0 ff ff ff ff 	movl   $0xffffffff,-0x10(%ebp)
4030c6:	8d 75 e8             	lea    -0x18(%ebp),%esi
4030c9:	c7 45 ec 90 35 40 00 	movl   $0x403590,-0x14(%ebp)
4030d0:	64 8b 15 00 00 00 00 	mov    %fs:0x0,%edx
4030d7:	89 55 e8             	mov    %edx,-0x18(%ebp)
4030da:	64 89 35 00 00 00 00 	mov    %esi,%fs:0x0
4030e1:	c7 01 88 94 41 00    	movl   $0x419488,(%ecx)
4030e7:	8d 51 04             	lea    0x4(%ecx),%edx
4030ea:	c7 41 08 00 00 00 00 	movl   $0x0,0x8(%ecx)
4030f1:	89 4d e0             	mov    %ecx,-0x20(%ebp)
4030f4:	c7 41 04 00 00 00 00 	movl   $0x0,0x4(%ecx)
4030fb:	83 c0 04             	add    $0x4,%eax
4030fe:	c7 45 f0 00 00 00 00 	movl   $0x0,-0x10(%ebp)
403105:	52                   	push   %edx
403106:	50                   	push   %eax
403107:	e8 2a 1b 00 00       	call   0x404c36
40310c:	83 c4 08             	add    $0x8,%esp
40310f:	8b 45 e0             	mov    -0x20(%ebp),%eax
403112:	c7 00 d4 94 41 00    	movl   $0x4194d4,(%eax)
403118:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40311b:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
403122:	83 c4 14             	add    $0x14,%esp
403125:	5e                   	pop    %esi
403126:	5f                   	pop    %edi
403127:	5b                   	pop    %ebx
403128:	5d                   	pop    %ebp
403129:	c2 04 00             	ret    $0x4
40312c:	0f 1f 40 00          	nopl   0x0(%eax)
403130:	55                   	push   %ebp
403131:	83 ec 08             	sub    $0x8,%esp
403134:	83 c5 0c             	add    $0xc,%ebp
403137:	e8 2d 19 00 00       	call   0x404a69
40313c:	cc                   	int3
40313d:	cc                   	int3
40313e:	cc                   	int3
40313f:	cc                   	int3
403140:	b8 2c 95 41 00       	mov    $0x41952c,%eax
403145:	c3                   	ret
403146:	cc                   	int3
403147:	cc                   	int3
403148:	cc                   	int3
403149:	cc                   	int3
40314a:	cc                   	int3
40314b:	cc                   	int3
40314c:	cc                   	int3
40314d:	cc                   	int3
40314e:	cc                   	int3
40314f:	cc                   	int3
403150:	55                   	push   %ebp
403151:	89 e5                	mov    %esp,%ebp
403153:	53                   	push   %ebx
403154:	57                   	push   %edi
403155:	56                   	push   %esi
403156:	83 ec 1c             	sub    $0x1c,%esp
403159:	8b 75 08             	mov    0x8(%ebp),%esi
40315c:	89 65 e4             	mov    %esp,-0x1c(%ebp)
40315f:	c7 45 f0 ff ff ff ff 	movl   $0xffffffff,-0x10(%ebp)
403166:	8d 45 e8             	lea    -0x18(%ebp),%eax
403169:	c7 45 ec a0 35 40 00 	movl   $0x4035a0,-0x14(%ebp)
403170:	64 8b 15 00 00 00 00 	mov    %fs:0x0,%edx
403177:	89 55 e8             	mov    %edx,-0x18(%ebp)
40317a:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
403180:	8b 59 10             	mov    0x10(%ecx),%ebx
403183:	b8 fe ff ff 7f       	mov    $0x7ffffffe,%eax
403188:	29 d8                	sub    %ebx,%eax
40318a:	39 f0                	cmp    %esi,%eax
40318c:	0f 82 51 01 00 00    	jb     0x4032e3
403192:	01 de                	add    %ebx,%esi
403194:	89 75 e0             	mov    %esi,-0x20(%ebp)
403197:	89 f0                	mov    %esi,%eax
403199:	83 c8 07             	or     $0x7,%eax
40319c:	3d fe ff ff 7f       	cmp    $0x7ffffffe,%eax
4031a1:	0f 87 37 01 00 00    	ja     0x4032de
4031a7:	8b 79 14             	mov    0x14(%ecx),%edi
4031aa:	89 fe                	mov    %edi,%esi
4031ac:	d1 ee                	shr    $1,%esi
4031ae:	ba fe ff ff 7f       	mov    $0x7ffffffe,%edx
4031b3:	29 f2                	sub    %esi,%edx
4031b5:	39 fa                	cmp    %edi,%edx
4031b7:	0f 82 21 01 00 00    	jb     0x4032de
4031bd:	01 fe                	add    %edi,%esi
4031bf:	39 f0                	cmp    %esi,%eax
4031c1:	0f 47 f0             	cmova  %eax,%esi
4031c4:	89 f2                	mov    %esi,%edx
4031c6:	42                   	inc    %edx
4031c7:	0f 88 11 01 00 00    	js     0x4032de
4031cd:	8d 04 12             	lea    (%edx,%edx,1),%eax
4031d0:	81 fa 00 08 00 00    	cmp    $0x800,%edx
4031d6:	89 7d d8             	mov    %edi,-0x28(%ebp)
4031d9:	72 27                	jb     0x403202
4031db:	81 fa ef ff ff 7f    	cmp    $0x7fffffef,%edx
4031e1:	0f 83 f7 00 00 00    	jae    0x4032de
4031e7:	83 c0 23             	add    $0x23,%eax
4031ea:	50                   	push   %eax
4031eb:	89 cf                	mov    %ecx,%edi
4031ed:	e8 07 04 00 00       	call   0x4035f9
4031f2:	89 f9                	mov    %edi,%ecx
4031f4:	83 c4 04             	add    $0x4,%esp
4031f7:	8d 78 23             	lea    0x23(%eax),%edi
4031fa:	83 e7 e0             	and    $0xffffffe0,%edi
4031fd:	89 47 fc             	mov    %eax,-0x4(%edi)
403200:	eb 17                	jmp    0x403219
403202:	85 d2                	test   %edx,%edx
403204:	74 11                	je     0x403217
403206:	50                   	push   %eax
403207:	89 cf                	mov    %ecx,%edi
403209:	e8 eb 03 00 00       	call   0x4035f9
40320e:	89 f9                	mov    %edi,%ecx
403210:	83 c4 04             	add    $0x4,%esp
403213:	89 c7                	mov    %eax,%edi
403215:	eb 02                	jmp    0x403219
403217:	31 ff                	xor    %edi,%edi
403219:	8b 45 e0             	mov    -0x20(%ebp),%eax
40321c:	89 41 10             	mov    %eax,0x10(%ecx)
40321f:	89 71 14             	mov    %esi,0x14(%ecx)
403222:	8b 75 d8             	mov    -0x28(%ebp),%esi
403225:	83 fe 08             	cmp    $0x8,%esi
403228:	72 5d                	jb     0x403287
40322a:	89 4d dc             	mov    %ecx,-0x24(%ebp)
40322d:	8b 09                	mov    (%ecx),%ecx
40322f:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
403232:	50                   	push   %eax
403233:	89 4d e0             	mov    %ecx,-0x20(%ebp)
403236:	51                   	push   %ecx
403237:	57                   	push   %edi
403238:	e8 f3 10 00 00       	call   0x404330
40323d:	83 c4 0c             	add    $0xc,%esp
403240:	8d 04 5f             	lea    (%edi,%ebx,2),%eax
403243:	8b 4d 14             	mov    0x14(%ebp),%ecx
403246:	01 c9                	add    %ecx,%ecx
403248:	51                   	push   %ecx
403249:	ff 75 10             	push   0x10(%ebp)
40324c:	50                   	push   %eax
40324d:	e8 de 10 00 00       	call   0x404330
403252:	83 c4 0c             	add    $0xc,%esp
403255:	03 5d 14             	add    0x14(%ebp),%ebx
403258:	66 c7 04 5f 00 00    	movw   $0x0,(%edi,%ebx,2)
40325e:	8d 0c 36             	lea    (%esi,%esi,1),%ecx
403261:	83 c1 02             	add    $0x2,%ecx
403264:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40326a:	72 4b                	jb     0x4032b7
40326c:	8b 4d e0             	mov    -0x20(%ebp),%ecx
40326f:	8b 41 fc             	mov    -0x4(%ecx),%eax
403272:	83 c1 fc             	add    $0xfffffffc,%ecx
403275:	29 c1                	sub    %eax,%ecx
403277:	83 f9 20             	cmp    $0x20,%ecx
40327a:	73 6c                	jae    0x4032e8
40327c:	89 f2                	mov    %esi,%edx
40327e:	89 f1                	mov    %esi,%ecx
403280:	01 d1                	add    %edx,%ecx
403282:	83 c1 25             	add    $0x25,%ecx
403285:	eb 33                	jmp    0x4032ba
403287:	8d 04 1b             	lea    (%ebx,%ebx,1),%eax
40328a:	50                   	push   %eax
40328b:	51                   	push   %ecx
40328c:	57                   	push   %edi
40328d:	89 ce                	mov    %ecx,%esi
40328f:	e8 9c 10 00 00       	call   0x404330
403294:	83 c4 0c             	add    $0xc,%esp
403297:	8d 04 5f             	lea    (%edi,%ebx,2),%eax
40329a:	8b 4d 14             	mov    0x14(%ebp),%ecx
40329d:	01 c9                	add    %ecx,%ecx
40329f:	51                   	push   %ecx
4032a0:	ff 75 10             	push   0x10(%ebp)
4032a3:	50                   	push   %eax
4032a4:	e8 87 10 00 00       	call   0x404330
4032a9:	83 c4 0c             	add    $0xc,%esp
4032ac:	03 5d 14             	add    0x14(%ebp),%ebx
4032af:	66 c7 04 5f 00 00    	movw   $0x0,(%edi,%ebx,2)
4032b5:	eb 10                	jmp    0x4032c7
4032b7:	8b 45 e0             	mov    -0x20(%ebp),%eax
4032ba:	51                   	push   %ecx
4032bb:	50                   	push   %eax
4032bc:	e8 2a 03 00 00       	call   0x4035eb
4032c1:	83 c4 08             	add    $0x8,%esp
4032c4:	8b 75 dc             	mov    -0x24(%ebp),%esi
4032c7:	89 3e                	mov    %edi,(%esi)
4032c9:	8b 45 e8             	mov    -0x18(%ebp),%eax
4032cc:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
4032d2:	89 f0                	mov    %esi,%eax
4032d4:	83 c4 1c             	add    $0x1c,%esp
4032d7:	5e                   	pop    %esi
4032d8:	5f                   	pop    %edi
4032d9:	5b                   	pop    %ebx
4032da:	5d                   	pop    %ebp