40ef43:	8b 45 0c             	mov    0xc(%ebp),%eax
40ef46:	8b d6                	mov    %esi,%edx
40ef48:	50                   	push   %eax
40ef49:	89 0e                	mov    %ecx,(%esi)
40ef4b:	89 08                	mov    %ecx,(%eax)
40ef4d:	89 0f                	mov    %ecx,(%edi)
40ef4f:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40ef52:	e8 23 ff ff ff       	call   0x40ee7a
40ef57:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40ef5a:	89 45 e8             	mov    %eax,-0x18(%ebp)
40ef5d:	ff 15 0c 34 42 00    	call   *0x42340c
40ef63:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40ef66:	ff 15 10 34 42 00    	call   *0x423410
40ef6c:	68 e0 43 40 00       	push   $0x4043e0
40ef71:	ff 75 f0             	push   -0x10(%ebp)
40ef74:	ff 15 64 35 42 00    	call   *0x423564
40ef7a:	59                   	pop    %ecx
40ef7b:	59                   	pop    %ecx
40ef7c:	85 c0                	test   %eax,%eax
40ef7e:	75 07                	jne    0x40ef87
40ef80:	33 db                	xor    %ebx,%ebx
40ef82:	43                   	inc    %ebx
40ef83:	89 1f                	mov    %ebx,(%edi)
40ef85:	eb 22                	jmp    0x40efa9
40ef87:	51                   	push   %ecx
40ef88:	8d 45 f0             	lea    -0x10(%ebp),%eax
40ef8b:	89 65 e4             	mov    %esp,-0x1c(%ebp)
40ef8e:	8b cc                	mov    %esp,%ecx
40ef90:	50                   	push   %eax
40ef91:	ff 15 f0 33 42 00    	call   *0x4233f0
40ef97:	33 db                	xor    %ebx,%ebx
40ef99:	43                   	inc    %ebx
40ef9a:	88 5d fc             	mov    %bl,-0x4(%ebp)
40ef9d:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
40efa1:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40efa4:	e8 30 00 00 00       	call   0x40efd9
40efa9:	83 7d e8 00          	cmpl   $0x0,-0x18(%ebp)
40efad:	74 0e                	je     0x40efbd
40efaf:	ff 36                	push   (%esi)
40efb1:	8b 4d 10             	mov    0x10(%ebp),%ecx
40efb4:	e8 0e 5c 00 00       	call   0x414bc7
40efb9:	85 c0                	test   %eax,%eax
40efbb:	75 02                	jne    0x40efbf
40efbd:	33 db                	xor    %ebx,%ebx
40efbf:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40efc3:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40efc6:	ff 15 44 32 42 00    	call   *0x423244
40efcc:	8b c3                	mov    %ebx,%eax
40efce:	e8 33 d4 00 00       	call   0x41c406
40efd3:	c2 0c 00             	ret    $0xc
40efd6:	cc                   	int3
40efd7:	cc                   	int3
40efd8:	cc                   	int3
40efd9:	6a 20                	push   $0x20
40efdb:	b8 01 d3 41 00       	mov    $0x41d301,%eax
40efe0:	e8 53 d4 00 00       	call   0x41c438
40efe5:	8b d9                	mov    %ecx,%ebx
40efe7:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40efeb:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40efee:	ff 15 40 32 42 00    	call   *0x423240
40eff4:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40eff8:	8b cb                	mov    %ebx,%ecx
40effa:	6a ff                	push   $0xffffffff
40effc:	6a 00                	push   $0x0
40effe:	ff 15 f4 33 42 00    	call   *0x4233f4
40f004:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f007:	ff 15 10 34 42 00    	call   *0x423410
40f00d:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f010:	ff 15 0c 34 42 00    	call   *0x42340c
40f016:	8b 45 08             	mov    0x8(%ebp),%eax
40f019:	8b 48 f8             	mov    -0x8(%eax),%ecx
40f01c:	8b f1                	mov    %ecx,%esi
40f01e:	85 f6                	test   %esi,%esi
40f020:	0f 84 c3 01 00 00    	je     0x40f1e9
40f026:	6a 22                	push   $0x22
40f028:	5f                   	pop    %edi
40f029:	85 c9                	test   %ecx,%ecx
40f02b:	7e 05                	jle    0x40f032
40f02d:	0f b7 00             	movzwl (%eax),%eax
40f030:	eb 02                	jmp    0x40f034
40f032:	33 c0                	xor    %eax,%eax
40f034:	66 3b c7             	cmp    %di,%ax
40f037:	0f 85 a8 00 00 00    	jne    0x40f0e5
40f03d:	83 fe 01             	cmp    $0x1,%esi
40f040:	0f 84 a3 01 00 00    	je     0x40f1e9
40f046:	4e                   	dec    %esi
40f047:	8d 45 ec             	lea    -0x14(%ebp),%eax
40f04a:	56                   	push   %esi
40f04b:	50                   	push   %eax
40f04c:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f04f:	ff 15 38 31 42 00    	call   *0x423138
40f055:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40f059:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f05c:	50                   	push   %eax
40f05d:	ff 15 80 33 42 00    	call   *0x423380
40f063:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40f067:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40f06a:	ff 15 44 32 42 00    	call   *0x423244
40f070:	57                   	push   %edi
40f071:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f074:	ff 15 e0 33 42 00    	call   *0x4233e0
40f07a:	8b f8                	mov    %eax,%edi
40f07c:	85 ff                	test   %edi,%edi
40f07e:	0f 88 65 01 00 00    	js     0x40f1e9
40f084:	7e 2b                	jle    0x40f0b1
40f086:	57                   	push   %edi
40f087:	8d 45 e8             	lea    -0x18(%ebp),%eax
40f08a:	50                   	push   %eax
40f08b:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f08e:	ff 15 68 31 42 00    	call   *0x423168
40f094:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
40f098:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40f09b:	50                   	push   %eax
40f09c:	ff 15 80 33 42 00    	call   *0x423380
40f0a2:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40f0a6:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40f0a9:	ff 15 44 32 42 00    	call   *0x423244
40f0af:	eb 09                	jmp    0x40f0ba
40f0b1:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40f0b4:	ff 15 f8 33 42 00    	call   *0x4233f8
40f0ba:	2b f7                	sub    %edi,%esi
40f0bc:	8d 45 e4             	lea    -0x1c(%ebp),%eax
40f0bf:	4e                   	dec    %esi
40f0c0:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f0c3:	56                   	push   %esi
40f0c4:	50                   	push   %eax
40f0c5:	ff 15 38 31 42 00    	call   *0x423138
40f0cb:	c6 45 fc 04          	movb   $0x4,-0x4(%ebp)
40f0cf:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f0d2:	50                   	push   %eax
40f0d3:	ff 15 80 33 42 00    	call   *0x423380
40f0d9:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40f0dd:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
40f0e0:	e9 89 00 00 00       	jmp    0x40f16e
40f0e5:	6a 20                	push   $0x20
40f0e7:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f0ea:	ff 15 e0 33 42 00    	call   *0x4233e0
40f0f0:	8b f8                	mov    %eax,%edi
40f0f2:	85 ff                	test   %edi,%edi
40f0f4:	79 29                	jns    0x40f11f
40f0f6:	6a 09                	push   $0x9
40f0f8:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f0fb:	ff 15 e0 33 42 00    	call   *0x4233e0
40f101:	8b f8                	mov    %eax,%edi
40f103:	85 ff                	test   %edi,%edi
40f105:	79 18                	jns    0x40f11f
40f107:	8d 45 08             	lea    0x8(%ebp),%eax
40f10a:	50                   	push   %eax
40f10b:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40f10e:	ff 15 80 33 42 00    	call   *0x423380
40f114:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f117:	ff 15 f8 33 42 00    	call   *0x4233f8
40f11d:	eb 55                	jmp    0x40f174
40f11f:	57                   	push   %edi
40f120:	8d 45 e0             	lea    -0x20(%ebp),%eax
40f123:	50                   	push   %eax
40f124:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f127:	ff 15 68 31 42 00    	call   *0x423168
40f12d:	c6 45 fc 05          	movb   $0x5,-0x4(%ebp)
40f131:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40f134:	50                   	push   %eax
40f135:	ff 15 80 33 42 00    	call   *0x423380
40f13b:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40f13f:	8d 4d e0             	lea    -0x20(%ebp),%ecx
40f142:	ff 15 44 32 42 00    	call   *0x423244
40f148:	2b f7                	sub    %edi,%esi
40f14a:	8d 45 dc             	lea    -0x24(%ebp),%eax
40f14d:	4e                   	dec    %esi
40f14e:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f151:	56                   	push   %esi
40f152:	50                   	push   %eax
40f153:	ff 15 38 31 42 00    	call   *0x423138
40f159:	c6 45 fc 06          	movb   $0x6,-0x4(%ebp)
40f15d:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f160:	50                   	push   %eax
40f161:	ff 15 80 33 42 00    	call   *0x423380
40f167:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40f16b:	8d 4d dc             	lea    -0x24(%ebp),%ecx
40f16e:	ff 15 44 32 42 00    	call   *0x423244
40f174:	8b 75 f0             	mov    -0x10(%ebp),%esi
40f177:	89 75 d4             	mov    %esi,-0x2c(%ebp)
40f17a:	83 7e f8 00          	cmpl   $0x0,-0x8(%esi)
40f17e:	7e 4d                	jle    0x40f1cd
40f180:	8b 7b 08             	mov    0x8(%ebx),%edi
40f183:	85 ff                	test   %edi,%edi
40f185:	7e 39                	jle    0x40f1c0
40f187:	4f                   	dec    %edi
40f188:	8d 45 d8             	lea    -0x28(%ebp),%eax
40f18b:	57                   	push   %edi
40f18c:	50                   	push   %eax
40f18d:	8b cb                	mov    %ebx,%ecx
40f18f:	e8 38 40 00 00       	call   0x4131cc
40f194:	c6 45 fc 07          	movb   $0x7,-0x4(%ebp)
40f198:	56                   	push   %esi
40f199:	ff 30                	push   (%eax)
40f19b:	ff 15 64 35 42 00    	call   *0x423564
40f1a1:	59                   	pop    %ecx
40f1a2:	59                   	pop    %ecx
40f1a3:	8b f0                	mov    %eax,%esi
40f1a5:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40f1a9:	8d 4d d8             	lea    -0x28(%ebp),%ecx
40f1ac:	ff 15 44 32 42 00    	call   *0x423244
40f1b2:	85 f6                	test   %esi,%esi
40f1b4:	74 17                	je     0x40f1cd
40f1b6:	8b 75 d4             	mov    -0x2c(%ebp),%esi
40f1b9:	85 ff                	test   %edi,%edi
40f1bb:	7f ca                	jg     0x40f187
40f1bd:	8b 7b 08             	mov    0x8(%ebx),%edi
40f1c0:	8d 45 f0             	lea    -0x10(%ebp),%eax
40f1c3:	8b cb                	mov    %ebx,%ecx
40f1c5:	50                   	push   %eax
40f1c6:	57                   	push   %edi
40f1c7:	ff 15 fc 33 42 00    	call   *0x4233fc
40f1cd:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f1d0:	ff 15 0c 34 42 00    	call   *0x42340c
40f1d6:	8b 45 08             	mov    0x8(%ebp),%eax
40f1d9:	6a 22                	push   $0x22
40f1db:	5f                   	pop    %edi
40f1dc:	8b 48 f8             	mov    -0x8(%eax),%ecx
40f1df:	8b f1                	mov    %ecx,%esi
40f1e1:	85 f6                	test   %esi,%esi
40f1e3:	0f 85 40 fe ff ff    	jne    0x40f029
40f1e9:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
40f1ed:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40f1f0:	ff 15 44 32 42 00    	call   *0x423244
40f1f6:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40f1fa:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f1fd:	ff 15 44 32 42 00    	call   *0x423244
40f203:	e8 fe d1 00 00       	call   0x41c406
40f208:	c2 04 00             	ret    $0x4
40f20b:	6a 30                	push   $0x30
40f20d:	b8 5b d3 41 00       	mov    $0x41d35b,%eax
40f212:	e8 21 d2 00 00       	call   0x41c438
40f217:	8b f1                	mov    %ecx,%esi
40f219:	89 75 e0             	mov    %esi,-0x20(%ebp)
40f21c:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40f220:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40f223:	ff 15 40 32 42 00    	call   *0x423240
40f229:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40f22d:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40f230:	ff 15 40 32 42 00    	call   *0x423240
40f236:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40f23a:	8d 4d c4             	lea    -0x3c(%ebp),%ecx
40f23d:	ff 15 d0 33 42 00    	call   *0x4233d0
40f243:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
40f247:	8d 45 08             	lea    0x8(%ebp),%eax
40f24a:	51                   	push   %ecx
40f24b:	8b cc                	mov    %esp,%ecx
40f24d:	89 65 d8             	mov    %esp,-0x28(%ebp)
40f250:	33 db                	xor    %ebx,%ebx
40f252:	8d 7d c4             	lea    -0x3c(%ebp),%edi
40f255:	50                   	push   %eax
40f256:	43                   	inc    %ebx
40f257:	ff 15 f0 33 42 00    	call   *0x4233f0
40f25d:	c6 45 fc 04          	movb   $0x4,-0x4(%ebp)
40f261:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
40f265:	8b cf                	mov    %edi,%ecx
40f267:	e8 6d fd ff ff       	call   0x40efd9
40f26c:	8b 45 cc             	mov    -0x34(%ebp),%eax
40f26f:	8b 4e 08             	mov    0x8(%esi),%ecx
40f272:	89 45 d8             	mov    %eax,-0x28(%ebp)
40f275:	89 4d e8             	mov    %ecx,-0x18(%ebp)
40f278:	3b c1                	cmp    %ecx,%eax
40f27a:	0f 85 84 00 00 00    	jne    0x40f304
40f280:	33 db                	xor    %ebx,%ebx
40f282:	33 f6                	xor    %esi,%esi
40f284:	85 c0                	test   %eax,%eax
40f286:	7e 7c                	jle    0x40f304
40f288:	56                   	push   %esi
40f289:	8d 45 e4             	lea    -0x1c(%ebp),%eax
40f28c:	50                   	push   %eax
40f28d:	8d 4d c4             	lea    -0x3c(%ebp),%ecx
40f290:	e8 37 3f 00 00       	call   0x4131cc
40f295:	c6 45 fc 05          	movb   $0x5,-0x4(%ebp)
40f299:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40f29c:	50                   	push   %eax
40f29d:	ff 15 80 33 42 00    	call   *0x423380
40f2a3:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
40f2a7:	8d 4d e4             	lea    -0x1c(%ebp),%ecx
40f2aa:	ff 15 44 32 42 00    	call   *0x423244
40f2b0:	33 db                	xor    %ebx,%ebx
40f2b2:	33 ff                	xor    %edi,%edi
40f2b4:	43                   	inc    %ebx
40f2b5:	39 7d e8             	cmp    %edi,-0x18(%ebp)
40f2b8:	7e 4a                	jle    0x40f304
40f2ba:	8b 4d e0             	mov    -0x20(%ebp),%ecx
40f2bd:	8d 45 dc             	lea    -0x24(%ebp),%eax
40f2c0:	57                   	push   %edi
40f2c1:	50                   	push   %eax
40f2c2:	e8 05 3f 00 00       	call   0x4131cc
40f2c7:	c6 45 fc 06          	movb   $0x6,-0x4(%ebp)
40f2cb:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40f2ce:	50                   	push   %eax
40f2cf:	ff 15 80 33 42 00    	call   *0x423380
40f2d5:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
40f2d9:	8d 4d dc             	lea    -0x24(%ebp),%ecx
40f2dc:	ff 15 44 32 42 00    	call   *0x423244
40f2e2:	ff 75 f0             	push   -0x10(%ebp)
40f2e5:	ff 75 ec             	push   -0x14(%ebp)
40f2e8:	ff 15 64 35 42 00    	call   *0x423564
40f2ee:	59                   	pop    %ecx
40f2ef:	59                   	pop    %ecx
40f2f0:	85 c0                	test   %eax,%eax
40f2f2:	74 08                	je     0x40f2fc
40f2f4:	47                   	inc    %edi
40f2f5:	3b 7d e8             	cmp    -0x18(%ebp),%edi
40f2f8:	7c c0                	jl     0x40f2ba
40f2fa:	eb 08                	jmp    0x40f304
40f2fc:	33 db                	xor    %ebx,%ebx
40f2fe:	46                   	inc    %esi
40f2ff:	3b 75 d8             	cmp    -0x28(%ebp),%esi
40f302:	7c 84                	jl     0x40f288
40f304:	c6 45 fc 02          	movb   $0x2,-0x4(%ebp)
40f308:	8d 4d c4             	lea    -0x3c(%ebp),%ecx
40f30b:	ff 15 d4 33 42 00    	call   *0x4233d4
40f311:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
40f315:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40f318:	ff 15 44 32 42 00    	call   *0x423244
40f31e:	c6 45 fc 00          	movb   $0x0,-0x4(%ebp)
40f322:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40f325:	ff 15 44 32 42 00    	call   *0x423244
40f32b:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40f32f:	8d 4d 08             	lea    0x8(%ebp),%ecx
40f332:	ff 15 44 32 42 00    	call   *0x423244
40f338:	8b c3                	mov    %ebx,%eax
40f33a:	e8 c7 d0 00 00       	call   0x41c406
40f33f:	c2 04 00             	ret    $0x4
40f342:	8b ff                	mov    %edi,%edi
40f344:	55                   	push   %ebp
40f345:	8b ec                	mov    %esp,%ebp
40f347:	51                   	push   %ecx
40f348:	51                   	push   %ecx
40f349:	53                   	push   %ebx
40f34a:	56                   	push   %esi
40f34b:	57                   	push   %edi
40f34c:	8b 7d 08             	mov    0x8(%ebp),%edi
40f34f:	8d 45 fc             	lea    -0x4(%ebp),%eax
40f352:	50                   	push   %eax
40f353:	57                   	push   %edi
40f354:	8d 45 f8             	lea    -0x8(%ebp),%eax
40f357:	c7 45 fc 04 00 00 00 	movl   $0x4,-0x4(%ebp)
40f35e:	50                   	push   %eax
40f35f:	33 f6                	xor    %esi,%esi
40f361:	8b da                	mov    %edx,%ebx
40f363:	56                   	push   %esi
40f364:	53                   	push   %ebx
40f365:	51                   	push   %ecx
40f366:	ff 15 14 30 42 00    	call   *0x423014
40f36c:	83 f8 02             	cmp    $0x2,%eax
40f36f:	75 07                	jne    0x40f378