40afd0:	8b ff                	mov    %edi,%edi
40afd2:	55                   	push   %ebp
40afd3:	8b ec                	mov    %esp,%ebp
40afd5:	8d 41 10             	lea    0x10(%ecx),%eax
40afd8:	50                   	push   %eax
40afd9:	68 00 00 10 00       	push   $0x100000
40afde:	68 00 04 00 00       	push   $0x400
40afe3:	ff 75 08             	push   0x8(%ebp)
40afe6:	e8 81 99 00 00       	call   0x41496c
40afeb:	5d                   	pop    %ebp
40afec:	c2 04 00             	ret    $0x4
40afef:	68 1c 43 40 00       	push   $0x40431c
40aff4:	e8 68 0f 00 00       	call   0x40bf61
40aff9:	f7 d8                	neg    %eax
40affb:	1b c0                	sbb    %eax,%eax
40affd:	40                   	inc    %eax
40affe:	c2 04 00             	ret    $0x4
40b001:	cc                   	int3
40b002:	cc                   	int3
40b003:	cc                   	int3
40b004:	cc                   	int3
40b005:	cc                   	int3
40b006:	cc                   	int3
40b007:	cc                   	int3
40b008:	cc                   	int3
40b009:	cc                   	int3
40b00a:	cc                   	int3
40b00b:	cc                   	int3
40b00c:	cc                   	int3
40b00d:	cc                   	int3
40b00e:	cc                   	int3
40b00f:	cc                   	int3
40b010:	8b ff                	mov    %edi,%edi
40b012:	55                   	push   %ebp
40b013:	8b ec                	mov    %esp,%ebp
40b015:	56                   	push   %esi
40b016:	8b 75 08             	mov    0x8(%ebp),%esi
40b019:	57                   	push   %edi
40b01a:	8b f9                	mov    %ecx,%edi
40b01c:	3b 77 04             	cmp    0x4(%edi),%esi
40b01f:	73 28                	jae    0x40b049
40b021:	8b 47 08             	mov    0x8(%edi),%eax
40b024:	8b 17                	mov    (%edi),%edx
40b026:	03 d6                	add    %esi,%edx
40b028:	8b 40 04             	mov    0x4(%eax),%eax
40b02b:	8d 04 50             	lea    (%eax,%edx,2),%eax
40b02e:	0f b7 08             	movzwl (%eax),%ecx
40b031:	83 f9 2f             	cmp    $0x2f,%ecx
40b034:	74 0e                	je     0x40b044
40b036:	83 f9 5c             	cmp    $0x5c,%ecx
40b039:	74 09                	je     0x40b044
40b03b:	46                   	inc    %esi
40b03c:	83 c0 02             	add    $0x2,%eax
40b03f:	3b 77 04             	cmp    0x4(%edi),%esi
40b042:	72 ea                	jb     0x40b02e
40b044:	3b 77 04             	cmp    0x4(%edi),%esi
40b047:	72 03                	jb     0x40b04c
40b049:	83 ce ff             	or     $0xffffffff,%esi
40b04c:	5f                   	pop    %edi
40b04d:	8b c6                	mov    %esi,%eax
40b04f:	5e                   	pop    %esi
40b050:	5d                   	pop    %ebp
40b051:	c2 04 00             	ret    $0x4
40b054:	6a 08                	push   $0x8
40b056:	b8 00 e1 41 00       	mov    $0x41e100,%eax
40b05b:	e8 ae fd 00 00       	call   0x41ae0e
40b060:	8b fa                	mov    %edx,%edi
40b062:	8b d9                	mov    %ecx,%ebx
40b064:	83 23 00             	andl   $0x0,(%ebx)
40b067:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40b06b:	68 fc 4b 40 00       	push   $0x404bfc
40b070:	6a 58                	push   $0x58
40b072:	e8 04 fd 00 00       	call   0x41ad7b
40b077:	59                   	pop    %ecx
40b078:	59                   	pop    %ecx
40b079:	85 c0                	test   %eax,%eax
40b07b:	74 57                	je     0x40b0d4
40b07d:	8b c8                	mov    %eax,%ecx
40b07f:	e8 6b 02 00 00       	call   0x40b2ef
40b084:	8b f0                	mov    %eax,%esi
40b086:	ff 75 08             	push   0x8(%ebp)
40b089:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40b08d:	8b ce                	mov    %esi,%ecx
40b08f:	ff 37                	push   (%edi)
40b091:	83 65 ec 00          	andl   $0x0,-0x14(%ebp)
40b095:	89 75 f0             	mov    %esi,-0x10(%ebp)
40b098:	e8 3e 00 00 00       	call   0x40b0db
40b09d:	8b f8                	mov    %eax,%edi
40b09f:	85 ff                	test   %edi,%edi
40b0a1:	78 1f                	js     0x40b0c2
40b0a3:	85 f6                	test   %esi,%esi
40b0a5:	74 17                	je     0x40b0be
40b0a7:	8b 06                	mov    (%esi),%eax
40b0a9:	56                   	push   %esi
40b0aa:	8b 78 04             	mov    0x4(%eax),%edi
40b0ad:	81 ff 60 f4 42 00    	cmp    $0x42f460,%edi
40b0b3:	0f 85 8c 4c 01 00    	jne    0x41fd45
40b0b9:	e8 a2 43 02 00       	call   0x42f460
40b0be:	89 33                	mov    %esi,(%ebx)
40b0c0:	33 ff                	xor    %edi,%edi
40b0c2:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40b0c5:	e8 ad 02 00 00       	call   0x40b377
40b0ca:	8b c7                	mov    %edi,%eax
40b0cc:	e8 0b fd 00 00       	call   0x41addc
40b0d1:	c2 04 00             	ret    $0x4
40b0d4:	bf 0e 00 07 80       	mov    $0x8007000e,%edi
40b0d9:	eb ef                	jmp    0x40b0ca
40b0db:	6a 08                	push   $0x8
40b0dd:	b8 1b e1 41 00       	mov    $0x41e11b,%eax
40b0e2:	e8 90 fd 00 00       	call   0x41ae77
40b0e7:	8b f9                	mov    %ecx,%edi
40b0e9:	ff 75 08             	push   0x8(%ebp)
40b0ec:	8d 5f 14             	lea    0x14(%edi),%ebx
40b0ef:	8b cb                	mov    %ebx,%ecx
40b0f1:	e8 3b 05 00 00       	call   0x40b631
40b0f6:	8d 77 18             	lea    0x18(%edi),%esi
40b0f9:	8b ce                	mov    %esi,%ecx
40b0fb:	e8 a1 ec 00 00       	call   0x419da1
40b100:	8b 03                	mov    (%ebx),%eax
40b102:	56                   	push   %esi
40b103:	68 f0 3e 40 00       	push   $0x403ef0
40b108:	50                   	push   %eax
40b109:	8b 08                	mov    (%eax),%ecx
40b10b:	8b 31                	mov    (%ecx),%esi
40b10d:	8b ce                	mov    %esi,%ecx
40b10f:	ff 15 20 a5 43 00    	call   *0x43a520
40b115:	ff d6                	call   *%esi
40b117:	8b f0                	mov    %eax,%esi
40b119:	85 f6                	test   %esi,%esi
40b11b:	0f 88 33 4c 01 00    	js     0x41fd54
40b121:	8d 47 1c             	lea    0x1c(%edi),%eax
40b124:	8b cb                	mov    %ebx,%ecx
40b126:	50                   	push   %eax
40b127:	e8 d5 04 00 00       	call   0x40b601
40b12c:	8b 4d 04             	mov    0x4(%ebp),%ecx
40b12f:	be f0 55 40 00       	mov    $0x4055f0,%esi
40b134:	85 c0                	test   %eax,%eax
40b136:	0f 88 30 4c 01 00    	js     0x41fd6c
40b13c:	8d 47 20             	lea    0x20(%edi),%eax
40b13f:	8b cb                	mov    %ebx,%ecx
40b141:	50                   	push   %eax
40b142:	e8 8a 04 00 00       	call   0x40b5d1
40b147:	8b 4d 04             	mov    0x4(%ebp),%ecx
40b14a:	85 c0                	test   %eax,%eax
40b14c:	0f 88 29 4c 01 00    	js     0x41fd7b
40b152:	6b 47 24 50          	imul   $0x50,0x24(%edi),%eax
40b156:	50                   	push   %eax
40b157:	ff 15 5c a0 43 00    	call   *0x43a05c
40b15d:	8b 4f 3c             	mov    0x3c(%edi),%ecx
40b160:	89 47 3c             	mov    %eax,0x3c(%edi)
40b163:	85 c9                	test   %ecx,%ecx
40b165:	0f 85 1f 4c 01 00    	jne    0x41fd8a
40b16b:	85 c0                	test   %eax,%eax
40b16d:	0f 84 26 4c 01 00    	je     0x41fd99
40b173:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40b176:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40b17a:	e8 32 04 00 00       	call   0x40b5b1
40b17f:	50                   	push   %eax
40b180:	ff 75 0c             	push   0xc(%ebp)
40b183:	8d 4f 40             	lea    0x40(%edi),%ecx
40b186:	e8 0a 00 00 00       	call   0x40b195
40b18b:	33 c0                	xor    %eax,%eax
40b18d:	e8 4a fc 00 00       	call   0x41addc
40b192:	c2 08 00             	ret    $0x8
40b195:	8b ff                	mov    %edi,%edi
40b197:	55                   	push   %ebp
40b198:	8b ec                	mov    %esp,%ebp
40b19a:	56                   	push   %esi
40b19b:	57                   	push   %edi
40b19c:	8b 7d 08             	mov    0x8(%ebp),%edi
40b19f:	8b f1                	mov    %ecx,%esi
40b1a1:	57                   	push   %edi
40b1a2:	e8 cc 03 00 00       	call   0x40b573
40b1a7:	84 c0                	test   %al,%al
40b1a9:	0f 85 24 4c 01 00    	jne    0x41fdd3
40b1af:	53                   	push   %ebx
40b1b0:	8b 5d 0c             	mov    0xc(%ebp),%ebx
40b1b3:	51                   	push   %ecx
40b1b4:	53                   	push   %ebx
40b1b5:	e8 56 00 00 00       	call   0x40b210
40b1ba:	84 c0                	test   %al,%al
40b1bc:	74 22                	je     0x40b1e0
40b1be:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40b1c2:	72 25                	jb     0x40b1e9
40b1c4:	8b 0e                	mov    (%esi),%ecx
40b1c6:	53                   	push   %ebx
40b1c7:	8b d7                	mov    %edi,%edx
40b1c9:	e8 23 00 00 00       	call   0x40b1f1
40b1ce:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40b1d2:	59                   	pop    %ecx
40b1d3:	89 5e 10             	mov    %ebx,0x10(%esi)
40b1d6:	72 15                	jb     0x40b1ed
40b1d8:	8b 06                	mov    (%esi),%eax
40b1da:	33 c9                	xor    %ecx,%ecx
40b1dc:	66 89 0c 58          	mov    %cx,(%eax,%ebx,2)
40b1e0:	8b c6                	mov    %esi,%eax
40b1e2:	5b                   	pop    %ebx
40b1e3:	5f                   	pop    %edi
40b1e4:	5e                   	pop    %esi
40b1e5:	5d                   	pop    %ebp
40b1e6:	c2 08 00             	ret    $0x8
40b1e9:	8b ce                	mov    %esi,%ecx
40b1eb:	eb d9                	jmp    0x40b1c6
40b1ed:	8b c6                	mov    %esi,%eax
40b1ef:	eb e9                	jmp    0x40b1da
40b1f1:	8b ff                	mov    %edi,%edi
40b1f3:	55                   	push   %ebp
40b1f4:	8b ec                	mov    %esp,%ebp
40b1f6:	8b 45 08             	mov    0x8(%ebp),%eax
40b1f9:	85 c0                	test   %eax,%eax
40b1fb:	74 0f                	je     0x40b20c
40b1fd:	03 c0                	add    %eax,%eax
40b1ff:	50                   	push   %eax
40b200:	52                   	push   %edx
40b201:	51                   	push   %ecx
40b202:	e8 df fc 00 00       	call   0x41aee6
40b207:	83 c4 0c             	add    $0xc,%esp
40b20a:	8b c8                	mov    %eax,%ecx
40b20c:	8b c1                	mov    %ecx,%eax
40b20e:	5d                   	pop    %ebp
40b20f:	c3                   	ret
40b210:	8b ff                	mov    %edi,%edi
40b212:	55                   	push   %ebp
40b213:	8b ec                	mov    %esp,%ebp
40b215:	56                   	push   %esi
40b216:	8b 75 08             	mov    0x8(%ebp),%esi
40b219:	81 fe fe ff ff 7f    	cmp    $0x7ffffffe,%esi
40b21f:	77 1c                	ja     0x40b23d
40b221:	39 71 14             	cmp    %esi,0x14(%ecx)
40b224:	0f 83 c8 4b 01 00    	jae    0x41fdf2
40b22a:	ff 71 10             	push   0x10(%ecx)
40b22d:	56                   	push   %esi
40b22e:	e8 0f 00 00 00       	call   0x40b242
40b233:	85 f6                	test   %esi,%esi
40b235:	0f 95 c0             	setne  %al
40b238:	5e                   	pop    %esi
40b239:	5d                   	pop    %ebp
40b23a:	c2 08 00             	ret    $0x8
40b23d:	e8 1b 2f 02 00       	call   0x42e15d
40b242:	6a 10                	push   $0x10
40b244:	b8 36 e1 41 00       	mov    $0x41e136,%eax
40b249:	e8 29 fc 00 00       	call   0x41ae77
40b24e:	8b f9                	mov    %ecx,%edi
40b250:	89 7d ec             	mov    %edi,-0x14(%ebp)
40b253:	8b 5d 08             	mov    0x8(%ebp),%ebx
40b256:	83 cb 07             	or     $0x7,%ebx
40b259:	81 fb fe ff ff 7f    	cmp    $0x7ffffffe,%ebx
40b25f:	0f 87 80 00 00 00    	ja     0x40b2e5
40b265:	33 d2                	xor    %edx,%edx
40b267:	c7 45 e8 03 00 00 00 	movl   $0x3,-0x18(%ebp)
40b26e:	8b c3                	mov    %ebx,%eax
40b270:	8b 77 14             	mov    0x14(%edi),%esi
40b273:	f7 75 e8             	divl   -0x18(%ebp)
40b276:	8b ce                	mov    %esi,%ecx
40b278:	d1 e9                	shr    $1,%ecx
40b27a:	3b c8                	cmp    %eax,%ecx
40b27c:	0f 87 8d 4b 01 00    	ja     0x41fe0f
40b282:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40b286:	8d 43 01             	lea    0x1(%ebx),%eax
40b289:	33 f6                	xor    %esi,%esi
40b28b:	85 c0                	test   %eax,%eax
40b28d:	74 20                	je     0x40b2af
40b28f:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
40b294:	77 54                	ja     0x40b2ea
40b296:	8b 35 3c 1a 40 00    	mov    0x401a3c,%esi
40b29c:	03 c0                	add    %eax,%eax
40b29e:	50                   	push   %eax
40b29f:	8b ce                	mov    %esi,%ecx
40b2a1:	ff 15 20 a5 43 00    	call   *0x43a520
40b2a7:	ff d6                	call   *%esi
40b2a9:	8b f0                	mov    %eax,%esi
40b2ab:	85 f6                	test   %esi,%esi
40b2ad:	74 3b                	je     0x40b2ea
40b2af:	8b 45 0c             	mov    0xc(%ebp),%eax
40b2b2:	85 c0                	test   %eax,%eax
40b2b4:	0f 85 d6 4b 01 00    	jne    0x41fe90
40b2ba:	6a 00                	push   $0x0
40b2bc:	6a 01                	push   $0x1
40b2be:	8b cf                	mov    %edi,%ecx
40b2c0:	e8 5a 02 00 00       	call   0x40b51f
40b2c5:	8b 45 0c             	mov    0xc(%ebp),%eax
40b2c8:	89 37                	mov    %esi,(%edi)
40b2ca:	89 5f 14             	mov    %ebx,0x14(%edi)
40b2cd:	89 47 10             	mov    %eax,0x10(%edi)
40b2d0:	83 fb 08             	cmp    $0x8,%ebx
40b2d3:	72 02                	jb     0x40b2d7
40b2d5:	8b fe                	mov    %esi,%edi
40b2d7:	33 c9                	xor    %ecx,%ecx
40b2d9:	66 89 0c 47          	mov    %cx,(%edi,%eax,2)
40b2dd:	e8 fa fa 00 00       	call   0x41addc
40b2e2:	c2 08 00             	ret    $0x8
40b2e5:	8b 5d 08             	mov    0x8(%ebp),%ebx
40b2e8:	eb 98                	jmp    0x40b282
40b2ea:	e8 e2 f0 00 00       	call   0x41a3d1
40b2ef:	6a 00                	push   $0x0
40b2f1:	b8 51 e1 41 00       	mov    $0x41e151,%eax
40b2f6:	e8 13 fb 00 00       	call   0x41ae0e
40b2fb:	8b f9                	mov    %ecx,%edi
40b2fd:	8b 0d 74 91 43 00    	mov    0x439174,%ecx
40b303:	c7 47 10 01 00 00 00 	movl   $0x1,0x10(%edi)
40b30a:	c7 07 84 10 40 00    	movl   $0x401084,(%edi)
40b310:	c7 47 04 64 10 40 00 	movl   $0x401064,0x4(%edi)
40b317:	c7 47 08 54 10 40 00 	movl   $0x401054,0x8(%edi)
40b31e:	85 c9                	test   %ecx,%ecx
40b320:	0f 85 84 4b 01 00    	jne    0x41feaa
40b326:	33 c0                	xor    %eax,%eax
40b328:	c7 07 30 10 40 00    	movl   $0x401030,(%edi)
40b32e:	89 47 14             	mov    %eax,0x14(%edi)
40b331:	89 47 18             	mov    %eax,0x18(%edi)
40b334:	89 47 1c             	mov    %eax,0x1c(%edi)
40b337:	89 47 20             	mov    %eax,0x20(%edi)
40b33a:	89 47 28             	mov    %eax,0x28(%edi)
40b33d:	89 47 2c             	mov    %eax,0x2c(%edi)
40b340:	89 47 30             	mov    %eax,0x30(%edi)
40b343:	89 47 34             	mov    %eax,0x34(%edi)
40b346:	89 47 38             	mov    %eax,0x38(%edi)
40b349:	89 47 3c             	mov    %eax,0x3c(%edi)
40b34c:	c7 47 04 10 10 40 00 	movl   $0x401010,0x4(%edi)
40b353:	c7 47 08 00 10 40 00 	movl   $0x401000,0x8(%edi)
40b35a:	c7 47 24 00 04 00 00 	movl   $0x400,0x24(%edi)
40b361:	89 47 50             	mov    %eax,0x50(%edi)
40b364:	c7 47 54 07 00 00 00 	movl   $0x7,0x54(%edi)
40b36b:	66 89 47 40          	mov    %ax,0x40(%edi)
40b36f:	8b c7                	mov    %edi,%eax
40b371:	e8 66 fa 00 00       	call   0x41addc
40b376:	c3                   	ret
40b377:	8b 11                	mov    (%ecx),%edx
40b379:	33 c0                	xor    %eax,%eax
40b37b:	85 d2                	test   %edx,%edx
40b37d:	74 1b                	je     0x40b39a
40b37f:	89 01                	mov    %eax,(%ecx)
40b381:	8b 02                	mov    (%edx),%eax
40b383:	56                   	push   %esi
40b384:	52                   	push   %edx
40b385:	8b 70 08             	mov    0x8(%eax),%esi
40b388:	81 fe a0 b3 40 00    	cmp    $0x40b3a0,%esi
40b38e:	0f 85 2b 4b 01 00    	jne    0x41febf
40b394:	e8 07 00 00 00       	call   0x40b3a0
40b399:	5e                   	pop    %esi
40b39a:	c3                   	ret
40b39b:	cc                   	int3
40b39c:	cc                   	int3
40b39d:	cc                   	int3
40b39e:	cc                   	int3
40b39f:	cc                   	int3
40b3a0:	8b ff                	mov    %edi,%edi
40b3a2:	55                   	push   %ebp
40b3a3:	8b ec                	mov    %esp,%ebp
40b3a5:	53                   	push   %ebx
40b3a6:	56                   	push   %esi