402ebc:	8b c8                	mov    %eax,%ecx
402ebe:	e8 89 1a 00 00       	call   0x40494c
402ec3:	8d 4e 40             	lea    0x40(%esi),%ecx
402ec6:	8b d7                	mov    %edi,%edx
402ec8:	51                   	push   %ecx
402ec9:	ff 73 40             	push   0x40(%ebx)
402ecc:	8b c8                	mov    %eax,%ecx
402ece:	e8 0f 1a 00 00       	call   0x4048e2
402ed3:	8d 4e 30             	lea    0x30(%esi),%ecx
402ed6:	8b d7                	mov    %edi,%edx
402ed8:	51                   	push   %ecx
402ed9:	ff 73 30             	push   0x30(%ebx)
402edc:	8b c8                	mov    %eax,%ecx
402ede:	e8 69 1a 00 00       	call   0x40494c
402ee3:	8d 4e 34             	lea    0x34(%esi),%ecx
402ee6:	8b d7                	mov    %edi,%edx
402ee8:	51                   	push   %ecx
402ee9:	ff 73 34             	push   0x34(%ebx)
402eec:	8b c8                	mov    %eax,%ecx
402eee:	e8 ef 19 00 00       	call   0x4048e2
402ef3:	2b f8                	sub    %eax,%edi
402ef5:	57                   	push   %edi
402ef6:	6a 00                	push   $0x0
402ef8:	50                   	push   %eax
402ef9:	e8 ad 79 00 00       	call   0x40a8ab
402efe:	83 c4 0c             	add    $0xc,%esp
402f01:	5f                   	pop    %edi
402f02:	5e                   	pop    %esi
402f03:	5b                   	pop    %ebx
402f04:	c9                   	leave
402f05:	c2 04 00             	ret    $0x4
402f08:	8b ff                	mov    %edi,%edi
402f0a:	55                   	push   %ebp
402f0b:	8b ec                	mov    %esp,%ebp
402f0d:	56                   	push   %esi
402f0e:	8b f1                	mov    %ecx,%esi
402f10:	57                   	push   %edi
402f11:	ff 75 08             	push   0x8(%ebp)
402f14:	33 ff                	xor    %edi,%edi
402f16:	89 7e 04             	mov    %edi,0x4(%esi)
402f19:	8d 4e 0c             	lea    0xc(%esi),%ecx
402f1c:	89 7e 08             	mov    %edi,0x8(%esi)
402f1f:	c7 06 34 10 40 00    	movl   $0x401034,(%esi)
402f25:	89 79 50             	mov    %edi,0x50(%ecx)
402f28:	89 79 54             	mov    %edi,0x54(%ecx)
402f2b:	e8 50 fe ff ff       	call   0x402d80
402f30:	89 7e 64             	mov    %edi,0x64(%esi)
402f33:	8b c6                	mov    %esi,%eax
402f35:	89 7e 68             	mov    %edi,0x68(%esi)
402f38:	5f                   	pop    %edi
402f39:	5e                   	pop    %esi
402f3a:	5d                   	pop    %ebp
402f3b:	c2 04 00             	ret    $0x4
402f3e:	cc                   	int3
402f3f:	cc                   	int3
402f40:	8b ff                	mov    %edi,%edi
402f42:	55                   	push   %ebp
402f43:	8b ec                	mov    %esp,%ebp
402f45:	b8 04 14 00 00       	mov    $0x1404,%eax
402f4a:	e8 41 7d 00 00       	call   0x40ac90
402f4f:	a1 50 d1 40 00       	mov    0x40d150,%eax
402f54:	33 c5                	xor    %ebp,%eax
402f56:	89 45 fc             	mov    %eax,-0x4(%ebp)
402f59:	56                   	push   %esi
402f5a:	8d 71 64             	lea    0x64(%ecx),%esi
402f5d:	8b 06                	mov    (%esi),%eax
402f5f:	85 c0                	test   %eax,%eax
402f61:	75 5a                	jne    0x402fbd
402f63:	8d 41 0c             	lea    0xc(%ecx),%eax
402f66:	ba 00 08 00 00       	mov    $0x800,%edx
402f6b:	50                   	push   %eax
402f6c:	8d 8d fc eb ff ff    	lea    -0x1404(%ebp),%ecx
402f72:	e8 2e f8 ff ff       	call   0x4027a5
402f77:	8d 85 fc eb ff ff    	lea    -0x1404(%ebp),%eax
402f7d:	50                   	push   %eax
402f7e:	68 b0 16 40 00       	push   $0x4016b0
402f83:	8d 85 fc fb ff ff    	lea    -0x404(%ebp),%eax
402f89:	68 00 04 00 00       	push   $0x400
402f8e:	50                   	push   %eax
402f8f:	e8 52 fd ff ff       	call   0x402ce6
402f94:	8d 8d fc fb ff ff    	lea    -0x404(%ebp),%ecx
402f9a:	83 c4 10             	add    $0x10,%esp
402f9d:	8d 51 01             	lea    0x1(%ecx),%edx
402fa0:	8a 01                	mov    (%ecx),%al
402fa2:	41                   	inc    %ecx
402fa3:	84 c0                	test   %al,%al
402fa5:	75 f9                	jne    0x402fa0
402fa7:	2b ca                	sub    %edx,%ecx
402fa9:	8d 41 01             	lea    0x1(%ecx),%eax
402fac:	8b ce                	mov    %esi,%ecx
402fae:	50                   	push   %eax
402faf:	8d 85 fc fb ff ff    	lea    -0x404(%ebp),%eax
402fb5:	50                   	push   %eax
402fb6:	e8 92 fa ff ff       	call   0x402a4d
402fbb:	8b 06                	mov    (%esi),%eax
402fbd:	8d 48 04             	lea    0x4(%eax),%ecx
402fc0:	f7 d8                	neg    %eax
402fc2:	5e                   	pop    %esi
402fc3:	1b c0                	sbb    %eax,%eax
402fc5:	23 c1                	and    %ecx,%eax
402fc7:	8b 4d fc             	mov    -0x4(%ebp),%ecx
402fca:	33 cd                	xor    %ebp,%ecx
402fcc:	e8 8f 6e 00 00       	call   0x409e60
402fd1:	c9                   	leave
402fd2:	c3                   	ret
402fd3:	cc                   	int3
402fd4:	cc                   	int3
402fd5:	cc                   	int3
402fd6:	cc                   	int3
402fd7:	cc                   	int3
402fd8:	cc                   	int3
402fd9:	cc                   	int3
402fda:	cc                   	int3
402fdb:	cc                   	int3
402fdc:	cc                   	int3
402fdd:	cc                   	int3
402fde:	cc                   	int3
402fdf:	cc                   	int3
402fe0:	8b ff                	mov    %edi,%edi
402fe2:	55                   	push   %ebp
402fe3:	8b ec                	mov    %esp,%ebp
402fe5:	56                   	push   %esi
402fe6:	8b f1                	mov    %ecx,%esi
402fe8:	e8 23 00 00 00       	call   0x403010
402fed:	f6 45 08 01          	testb  $0x1,0x8(%ebp)
402ff1:	74 0a                	je     0x402ffd
402ff3:	6a 6c                	push   $0x6c
402ff5:	56                   	push   %esi
402ff6:	e8 44 72 00 00       	call   0x40a23f
402ffb:	59                   	pop    %ecx
402ffc:	59                   	pop    %ecx
402ffd:	8b c6                	mov    %esi,%eax
402fff:	5e                   	pop    %esi
403000:	5d                   	pop    %ebp
403001:	c2 04 00             	ret    $0x4
403004:	cc                   	int3
403005:	cc                   	int3
403006:	cc                   	int3
403007:	cc                   	int3
403008:	cc                   	int3
403009:	cc                   	int3
40300a:	cc                   	int3
40300b:	cc                   	int3
40300c:	cc                   	int3
40300d:	cc                   	int3
40300e:	cc                   	int3
40300f:	cc                   	int3
403010:	8b ff                	mov    %edi,%edi
403012:	56                   	push   %esi
403013:	8b f1                	mov    %ecx,%esi
403015:	8d 4e 64             	lea    0x64(%esi),%ecx
403018:	e8 ff f9 ff ff       	call   0x402a1c
40301d:	8d 4e 5c             	lea    0x5c(%esi),%ecx
403020:	e8 f7 f9 ff ff       	call   0x402a1c
403025:	8d 46 04             	lea    0x4(%esi),%eax
403028:	c7 06 14 10 40 00    	movl   $0x401014,(%esi)
40302e:	50                   	push   %eax
40302f:	e8 e1 77 00 00       	call   0x40a815
403034:	59                   	pop    %ecx
403035:	5e                   	pop    %esi
403036:	c3                   	ret
403037:	8b ff                	mov    %edi,%edi
403039:	56                   	push   %esi
40303a:	8b 35 38 d5 40 00    	mov    0x40d538,%esi
403040:	85 f6                	test   %esi,%esi
403042:	74 0b                	je     0x40304f
403044:	51                   	push   %ecx
403045:	8b ce                	mov    %esi,%ecx
403047:	ff 15 f0 e1 40 00    	call   *0x40e1f0
40304d:	ff d6                	call   *%esi
40304f:	5e                   	pop    %esi
403050:	c3                   	ret
403051:	cc                   	int3
403052:	cc                   	int3
403053:	cc                   	int3
403054:	cc                   	int3
403055:	cc                   	int3
403056:	cc                   	int3
403057:	cc                   	int3
403058:	cc                   	int3
403059:	cc                   	int3
40305a:	cc                   	int3
40305b:	cc                   	int3
40305c:	cc                   	int3
40305d:	cc                   	int3
40305e:	cc                   	int3
40305f:	cc                   	int3
403060:	6a 00                	push   $0x0
403062:	6a 00                	push   $0x0
403064:	e8 d1 7a 00 00       	call   0x40ab3a
403069:	cc                   	int3
40306a:	cc                   	int3
40306b:	cc                   	int3
40306c:	cc                   	int3
40306d:	cc                   	int3
40306e:	cc                   	int3
40306f:	cc                   	int3
403070:	8b ff                	mov    %edi,%edi
403072:	55                   	push   %ebp
403073:	8b ec                	mov    %esp,%ebp
403075:	83 ec 6c             	sub    $0x6c,%esp
403078:	8d 4d 94             	lea    -0x6c(%ebp),%ecx
40307b:	ff 75 08             	push   0x8(%ebp)
40307e:	e8 85 fe ff ff       	call   0x402f08
403083:	68 e0 c6 40 00       	push   $0x40c6e0
403088:	8d 45 94             	lea    -0x6c(%ebp),%eax
40308b:	50                   	push   %eax
40308c:	e8 a9 7a 00 00       	call   0x40ab3a
403091:	cc                   	int3
403092:	cc                   	int3
403093:	cc                   	int3
403094:	cc                   	int3
403095:	cc                   	int3
403096:	cc                   	int3
403097:	cc                   	int3
403098:	cc                   	int3
403099:	cc                   	int3
40309a:	cc                   	int3
40309b:	cc                   	int3
40309c:	cc                   	int3
40309d:	cc                   	int3
40309e:	cc                   	int3
40309f:	cc                   	int3
4030a0:	8b ff                	mov    %edi,%edi
4030a2:	55                   	push   %ebp
4030a3:	8b ec                	mov    %esp,%ebp
4030a5:	51                   	push   %ecx
4030a6:	53                   	push   %ebx
4030a7:	8b 5d 08             	mov    0x8(%ebp),%ebx
4030aa:	56                   	push   %esi
4030ab:	57                   	push   %edi
4030ac:	8b f1                	mov    %ecx,%esi
4030ae:	53                   	push   %ebx
4030af:	89 75 fc             	mov    %esi,-0x4(%ebp)
4030b2:	e8 89 f4 ff ff       	call   0x402540
4030b7:	8d 56 0c             	lea    0xc(%esi),%edx
4030ba:	c7 06 34 10 40 00    	movl   $0x401034,(%esi)
4030c0:	6a 14                	push   $0x14
4030c2:	8d 43 0c             	lea    0xc(%ebx),%eax
4030c5:	8b fa                	mov    %edx,%edi
4030c7:	59                   	pop    %ecx
4030c8:	8b f0                	mov    %eax,%esi
4030ca:	83 c0 50             	add    $0x50,%eax
4030cd:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
4030cf:	50                   	push   %eax
4030d0:	8d 4a 50             	lea    0x50(%edx),%ecx
4030d3:	e8 11 f9 ff ff       	call   0x4029e9
4030d8:	8b 75 fc             	mov    -0x4(%ebp),%esi
4030db:	8d 43 64             	lea    0x64(%ebx),%eax
4030de:	50                   	push   %eax
4030df:	8d 4e 64             	lea    0x64(%esi),%ecx
4030e2:	e8 02 f9 ff ff       	call   0x4029e9
4030e7:	5f                   	pop    %edi
4030e8:	8b c6                	mov    %esi,%eax
4030ea:	5e                   	pop    %esi
4030eb:	5b                   	pop    %ebx
4030ec:	c9                   	leave
4030ed:	c2 04 00             	ret    $0x4
4030f0:	8b ff                	mov    %edi,%edi
4030f2:	55                   	push   %ebp
4030f3:	8b ec                	mov    %esp,%ebp
4030f5:	83 ec 20             	sub    $0x20,%esp
4030f8:	8b 45 08             	mov    0x8(%ebp),%eax
4030fb:	89 45 f8             	mov    %eax,-0x8(%ebp)
4030fe:	8b 45 0c             	mov    0xc(%ebp),%eax
403101:	89 45 f0             	mov    %eax,-0x10(%ebp)
403104:	8b 45 10             	mov    0x10(%ebp),%eax
403107:	89 45 f4             	mov    %eax,-0xc(%ebp)
40310a:	8b 45 14             	mov    0x14(%ebp),%eax
40310d:	53                   	push   %ebx
40310e:	8b 5d 28             	mov    0x28(%ebp),%ebx
403111:	89 45 ec             	mov    %eax,-0x14(%ebp)
403114:	8b 45 30             	mov    0x30(%ebp),%eax
403117:	56                   	push   %esi
403118:	8b 75 38             	mov    0x38(%ebp),%esi
40311b:	57                   	push   %edi
40311c:	33 ff                	xor    %edi,%edi
40311e:	89 45 e0             	mov    %eax,-0x20(%ebp)
403121:	66 89 3b             	mov    %di,(%ebx)
403124:	c6 00 00             	movb   $0x0,(%eax)
403127:	33 c0                	xor    %eax,%eax
403129:	89 45 fc             	mov    %eax,-0x4(%ebp)
40312c:	8b 45 18             	mov    0x18(%ebp),%eax
40312f:	2b c7                	sub    %edi,%eax
403131:	89 55 e8             	mov    %edx,-0x18(%ebp)
403134:	8b 7d 1c             	mov    0x1c(%ebp),%edi
403137:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
40313a:	74 46                	je     0x403182
40313c:	83 e8 01             	sub    $0x1,%eax
40313f:	74 38                	je     0x403179
403141:	83 e8 01             	sub    $0x1,%eax
403144:	74 0d                	je     0x403153
403146:	83 e8 01             	sub    $0x1,%eax
403149:	75 41                	jne    0x40318c
40314b:	57                   	push   %edi
40314c:	e8 9f f9 ff ff       	call   0x402af0
403151:	eb 36                	jmp    0x403189
403153:	85 ff                	test   %edi,%edi
403155:	78 19                	js     0x403170
403157:	bf 9c 02 07 80       	mov    $0x8007029c,%edi
40315c:	57                   	push   %edi
40315d:	6a 02                	push   $0x2
40315f:	ff 75 ec             	push   -0x14(%ebp)
403162:	ff 75 f4             	push   -0xc(%ebp)
403165:	ff 75 f0             	push   -0x10(%ebp)
403168:	ff 75 f8             	push   -0x8(%ebp)
40316b:	e8 fe 02 00 00       	call   0x40346e
403170:	8b cf                	mov    %edi,%ecx
403172:	e8 64 f9 ff ff       	call   0x402adb
403177:	eb 10                	jmp    0x403189
403179:	8b cf                	mov    %edi,%ecx
40317b:	e8 48 f9 ff ff       	call   0x402ac8
403180:	eb 07                	jmp    0x403189
403182:	8b cf                	mov    %edi,%ecx
403184:	e8 2c f9 ff ff       	call   0x402ab5
403189:	89 45 fc             	mov    %eax,-0x4(%ebp)
40318c:	8b 45 18             	mov    0x18(%ebp),%eax
40318f:	89 06                	mov    %eax,(%esi)
403191:	33 c0                	xor    %eax,%eax
403193:	89 7e 04             	mov    %edi,0x4(%esi)
403196:	40                   	inc    %eax
403197:	f0 0f c1 05 bc d5 40 	lock xadd %eax,0x40d5bc
40319e:	00
40319f:	40                   	inc    %eax
4031a0:	89 46 08             	mov    %eax,0x8(%esi)
4031a3:	8b 45 20             	mov    0x20(%ebp),%eax
4031a6:	85 c0                	test   %eax,%eax
4031a8:	74 07                	je     0x4031b1
4031aa:	33 c9                	xor    %ecx,%ecx
4031ac:	66 39 08             	cmp    %cx,(%eax)
4031af:	75 02                	jne    0x4031b3
4031b1:	33 c0                	xor    %eax,%eax
4031b3:	89 46 0c             	mov    %eax,0xc(%esi)
4031b6:	ff 15 b4 e0 40 00    	call   *0x40e0b4
4031bc:	89 46 10             	mov    %eax,0x10(%esi)
4031bf:	8d 7e 2c             	lea    0x2c(%esi),%edi
4031c2:	8b 45 f8             	mov    -0x8(%ebp),%eax
4031c5:	33 d2                	xor    %edx,%edx
4031c7:	89 46 1c             	mov    %eax,0x1c(%esi)
4031ca:	8b 45 e8             	mov    -0x18(%ebp),%eax
4031cd:	89 46 20             	mov    %eax,0x20(%esi)
4031d0:	8b 45 fc             	mov    -0x4(%ebp),%eax
4031d3:	89 46 24             	mov    %eax,0x24(%esi)
4031d6:	8b 45 f4             	mov    -0xc(%ebp),%eax
4031d9:	89 46 14             	mov    %eax,0x14(%esi)
4031dc:	8b 45 f0             	mov    -0x10(%ebp),%eax
4031df:	89 46 18             	mov    %eax,0x18(%esi)
4031e2:	8b 45 ec             	mov    -0x14(%ebp),%eax
4031e5:	89 46 48             	mov    %eax,0x48(%esi)
4031e8:	8b 45 e4             	mov    -0x1c(%ebp),%eax