40bfc5:	f6 40 1c 01          	testb  $0x1,0x1c(%eax)
40bfc9:	74 13                	je     0x40bfde
40bfcb:	ff 70 14             	push   0x14(%eax)
40bfce:	ba ac 22 40 00       	mov    $0x4022ac,%edx
40bfd3:	ff 70 10             	push   0x10(%eax)
40bfd6:	6a 0a                	push   $0xa
40bfd8:	59                   	pop    %ecx
40bfd9:	e8 d2 b3 ff ff       	call   0x4073b0
40bfde:	b8 57 00 07 80       	mov    $0x80070057,%eax
40bfe3:	e8 4e c0 01 00       	call   0x428036
40bfe8:	c3                   	ret
40bfe9:	6a 14                	push   $0x14
40bfeb:	b8 3b 86 42 00       	mov    $0x42863b,%eax
40bff0:	e8 dc c0 01 00       	call   0x4280d1
40bff5:	8b d9                	mov    %ecx,%ebx
40bff7:	89 5d e8             	mov    %ebx,-0x18(%ebp)
40bffa:	8b 75 0c             	mov    0xc(%ebp),%esi
40bffd:	8d 45 ec             	lea    -0x14(%ebp),%eax
40c000:	33 ff                	xor    %edi,%edi
40c002:	8b ce                	mov    %esi,%ecx
40c004:	50                   	push   %eax
40c005:	89 7d e4             	mov    %edi,-0x1c(%ebp)
40c008:	89 7d ec             	mov    %edi,-0x14(%ebp)
40c00b:	e8 fb 0d 00 00       	call   0x40ce0b
40c010:	85 c0                	test   %eax,%eax
40c012:	79 30                	jns    0x40c044
40c014:	be 16 02 07 80       	mov    $0x80070216,%esi
40c019:	a1 00 b0 42 00       	mov    0x42b000,%eax
40c01e:	3d 00 b0 42 00       	cmp    $0x42b000,%eax
40c023:	0f 84 85 00 00 00    	je     0x40c0ae
40c029:	f6 40 1c 01          	testb  $0x1,0x1c(%eax)
40c02d:	74 7f                	je     0x40c0ae
40c02f:	ff 70 14             	push   0x14(%eax)
40c032:	ba ac 22 40 00       	mov    $0x4022ac,%edx
40c037:	ff 70 10             	push   0x10(%eax)
40c03a:	6a 11                	push   $0x11
40c03c:	59                   	pop    %ecx
40c03d:	e8 6e b3 ff ff       	call   0x4073b0
40c042:	eb 6a                	jmp    0x40c0ae
40c044:	33 c9                	xor    %ecx,%ecx
40c046:	89 7d fc             	mov    %edi,-0x4(%ebp)
40c049:	8b 45 ec             	mov    -0x14(%ebp),%eax
40c04c:	6a 02                	push   $0x2
40c04e:	5a                   	pop    %edx
40c04f:	f7 e2                	mul    %edx
40c051:	0f 90 c1             	seto   %cl
40c054:	f7 d9                	neg    %ecx
40c056:	0b c8                	or     %eax,%ecx
40c058:	51                   	push   %ecx
40c059:	e8 b4 bc 01 00       	call   0x427d12
40c05e:	59                   	pop    %ecx
40c05f:	8b f8                	mov    %eax,%edi
40c061:	eb 0f                	jmp    0x40c072
40c063:	b8 69 c0 40 00       	mov    $0x40c069,%eax
40c068:	c3                   	ret
40c069:	8b 5d e8             	mov    -0x18(%ebp),%ebx
40c06c:	8b 75 0c             	mov    0xc(%ebp),%esi
40c06f:	8b 7d e4             	mov    -0x1c(%ebp),%edi
40c072:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
40c076:	85 ff                	test   %edi,%edi
40c078:	75 07                	jne    0x40c081
40c07a:	be 0e 00 07 80       	mov    $0x8007000e,%esi
40c07f:	eb 2d                	jmp    0x40c0ae
40c081:	8b 55 ec             	mov    -0x14(%ebp),%edx
40c084:	8b cf                	mov    %edi,%ecx
40c086:	56                   	push   %esi
40c087:	ff 75 08             	push   0x8(%ebp)
40c08a:	e8 35 0d 00 00       	call   0x40cdc4
40c08f:	8b f0                	mov    %eax,%esi
40c091:	85 f6                	test   %esi,%esi
40c093:	79 08                	jns    0x40c09d
40c095:	81 fe 7a 00 07 80    	cmp    $0x8007007a,%esi
40c09b:	75 0a                	jne    0x40c0a7
40c09d:	57                   	push   %edi
40c09e:	8b cb                	mov    %ebx,%ecx
40c0a0:	e8 13 00 00 00       	call   0x40c0b8
40c0a5:	8b f0                	mov    %eax,%esi
40c0a7:	57                   	push   %edi
40c0a8:	e8 8e bc 01 00       	call   0x427d3b
40c0ad:	59                   	pop    %ecx
40c0ae:	8b c6                	mov    %esi,%eax
40c0b0:	e8 81 bf 01 00       	call   0x428036
40c0b5:	c2 08 00             	ret    $0x8
40c0b8:	6a 10                	push   $0x10
40c0ba:	b8 56 86 42 00       	mov    $0x428656,%eax
40c0bf:	e8 0d c0 01 00       	call   0x4280d1
40c0c4:	8b f1                	mov    %ecx,%esi
40c0c6:	89 75 ec             	mov    %esi,-0x14(%ebp)
40c0c9:	8b 45 08             	mov    0x8(%ebp),%eax
40c0cc:	85 c0                	test   %eax,%eax
40c0ce:	75 0e                	jne    0x40c0de
40c0d0:	6a 01                	push   $0x1
40c0d2:	e8 4e 0b 00 00       	call   0x40cc25
40c0d7:	33 db                	xor    %ebx,%ebx
40c0d9:	e9 15 01 00 00       	jmp    0x40c1f3
40c0de:	8b f8                	mov    %eax,%edi
40c0e0:	33 c9                	xor    %ecx,%ecx
40c0e2:	6a 02                	push   $0x2
40c0e4:	5b                   	pop    %ebx
40c0e5:	8d 57 02             	lea    0x2(%edi),%edx
40c0e8:	66 8b 07             	mov    (%edi),%ax
40c0eb:	03 fb                	add    %ebx,%edi
40c0ed:	66 3b c1             	cmp    %cx,%ax
40c0f0:	75 f6                	jne    0x40c0e8
40c0f2:	2b fa                	sub    %edx,%edi
40c0f4:	d1 ff                	sar    $1,%edi
40c0f6:	89 7d e8             	mov    %edi,-0x18(%ebp)
40c0f9:	8d 5f 01             	lea    0x1(%edi),%ebx
40c0fc:	3b df                	cmp    %edi,%ebx
40c0fe:	0f 82 c5 00 00 00    	jb     0x40c1c9
40c104:	8b 56 04             	mov    0x4(%esi),%edx
40c107:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40c10a:	3b da                	cmp    %edx,%ebx
40c10c:	77 06                	ja     0x40c114
40c10e:	8b 0e                	mov    (%esi),%ecx
40c110:	85 c9                	test   %ecx,%ecx
40c112:	75 75                	jne    0x40c189
40c114:	6a 01                	push   $0x1
40c116:	8b ce                	mov    %esi,%ecx
40c118:	e8 08 0b 00 00       	call   0x40cc25
40c11d:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40c121:	33 c9                	xor    %ecx,%ecx
40c123:	6a 02                	push   $0x2
40c125:	5a                   	pop    %edx
40c126:	8b c3                	mov    %ebx,%eax
40c128:	f7 e2                	mul    %edx
40c12a:	0f 90 c1             	seto   %cl
40c12d:	f7 d9                	neg    %ecx
40c12f:	0b c8                	or     %eax,%ecx
40c131:	51                   	push   %ecx
40c132:	e8 db bb 01 00       	call   0x427d12
40c137:	59                   	pop    %ecx
40c138:	89 06                	mov    %eax,(%esi)
40c13a:	eb 0f                	jmp    0x40c14b
40c13c:	b8 42 c1 40 00       	mov    $0x40c142,%eax
40c141:	c3                   	ret
40c142:	8b 75 ec             	mov    -0x14(%ebp),%esi
40c145:	8b 7d e8             	mov    -0x18(%ebp),%edi
40c148:	8b 5d e4             	mov    -0x1c(%ebp),%ebx
40c14b:	8b 06                	mov    (%esi),%eax
40c14d:	85 c0                	test   %eax,%eax
40c14f:	75 2c                	jne    0x40c17d
40c151:	a1 00 b0 42 00       	mov    0x42b000,%eax
40c156:	3d 00 b0 42 00       	cmp    $0x42b000,%eax
40c15b:	74 19                	je     0x40c176
40c15d:	f6 40 1c 01          	testb  $0x1,0x1c(%eax)
40c161:	74 13                	je     0x40c176
40c163:	ff 70 14             	push   0x14(%eax)
40c166:	ba ac 22 40 00       	mov    $0x4022ac,%edx
40c16b:	ff 70 10             	push   0x10(%eax)
40c16e:	6a 13                	push   $0x13
40c170:	59                   	pop    %ecx
40c171:	e8 3a b2 ff ff       	call   0x4073b0
40c176:	bb 0e 00 07 80       	mov    $0x8007000e,%ebx
40c17b:	eb 76                	jmp    0x40c1f3
40c17d:	33 c9                	xor    %ecx,%ecx
40c17f:	8b d3                	mov    %ebx,%edx
40c181:	66 89 08             	mov    %cx,(%eax)
40c184:	8b 0e                	mov    (%esi),%ecx
40c186:	89 5e 04             	mov    %ebx,0x4(%esi)
40c189:	ff 75 08             	push   0x8(%ebp)
40c18c:	e8 a4 c8 ff ff       	call   0x408a35
40c191:	8b d8                	mov    %eax,%ebx
40c193:	85 db                	test   %ebx,%ebx
40c195:	79 2a                	jns    0x40c1c1
40c197:	8b 0d 00 b0 42 00    	mov    0x42b000,%ecx
40c19d:	81 f9 00 b0 42 00    	cmp    $0x42b000,%ecx
40c1a3:	74 4e                	je     0x40c1f3
40c1a5:	f6 41 1c 01          	testb  $0x1,0x1c(%ecx)
40c1a9:	74 48                	je     0x40c1f3
40c1ab:	53                   	push   %ebx
40c1ac:	ff 71 14             	push   0x14(%ecx)
40c1af:	ba ac 22 40 00       	mov    $0x4022ac,%edx
40c1b4:	ff 71 10             	push   0x10(%ecx)
40c1b7:	6a 14                	push   $0x14
40c1b9:	59                   	pop    %ecx
40c1ba:	e8 0f b2 ff ff       	call   0x4073ce
40c1bf:	eb 32                	jmp    0x40c1f3
40c1c1:	89 7e 08             	mov    %edi,0x8(%esi)
40c1c4:	e9 0e ff ff ff       	jmp    0x40c0d7
40c1c9:	bb 16 02 07 80       	mov    $0x80070216,%ebx
40c1ce:	a1 00 b0 42 00       	mov    0x42b000,%eax
40c1d3:	3d 00 b0 42 00       	cmp    $0x42b000,%eax
40c1d8:	74 19                	je     0x40c1f3
40c1da:	f6 40 1c 01          	testb  $0x1,0x1c(%eax)
40c1de:	74 13                	je     0x40c1f3
40c1e0:	ff 70 14             	push   0x14(%eax)
40c1e3:	ba ac 22 40 00       	mov    $0x4022ac,%edx
40c1e8:	ff 70 10             	push   0x10(%eax)
40c1eb:	6a 12                	push   $0x12
40c1ed:	59                   	pop    %ecx
40c1ee:	e8 bd b1 ff ff       	call   0x4073b0
40c1f3:	8b c3                	mov    %ebx,%eax
40c1f5:	e8 3c be 01 00       	call   0x428036
40c1fa:	c2 04 00             	ret    $0x4
40c1fd:	8b ff                	mov    %edi,%edi
40c1ff:	55                   	push   %ebp
40c200:	8b ec                	mov    %esp,%ebp
40c202:	51                   	push   %ecx
40c203:	51                   	push   %ecx
40c204:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40c208:	8d 55 fc             	lea    -0x4(%ebp),%edx
40c20b:	53                   	push   %ebx
40c20c:	56                   	push   %esi
40c20d:	8b d9                	mov    %ecx,%ebx
40c20f:	8b 4d 08             	mov    0x8(%ebp),%ecx
40c212:	57                   	push   %edi
40c213:	e8 2b fc ff ff       	call   0x40be43
40c218:	8b 75 fc             	mov    -0x4(%ebp),%esi
40c21b:	8b f8                	mov    %eax,%edi
40c21d:	85 ff                	test   %edi,%edi
40c21f:	78 10                	js     0x40c231
40c221:	85 f6                	test   %esi,%esi
40c223:	74 0c                	je     0x40c231
40c225:	56                   	push   %esi
40c226:	8b cb                	mov    %ebx,%ecx
40c228:	e8 3e 00 00 00       	call   0x40c26b
40c22d:	8b f8                	mov    %eax,%edi
40c22f:	eb 26                	jmp    0x40c257
40c231:	a1 00 b0 42 00       	mov    0x42b000,%eax
40c236:	3d 00 b0 42 00       	cmp    $0x42b000,%eax
40c23b:	74 1a                	je     0x40c257
40c23d:	f6 40 1c 01          	testb  $0x1,0x1c(%eax)
40c241:	74 14                	je     0x40c257
40c243:	57                   	push   %edi
40c244:	ff 70 14             	push   0x14(%eax)
40c247:	ba ac 22 40 00       	mov    $0x4022ac,%edx
40c24c:	ff 70 10             	push   0x10(%eax)
40c24f:	6a 15                	push   $0x15
40c251:	59                   	pop    %ecx
40c252:	e8 77 b1 ff ff       	call   0x4073ce
40c257:	85 f6                	test   %esi,%esi
40c259:	74 07                	je     0x40c262
40c25b:	56                   	push   %esi
40c25c:	e8 da ba 01 00       	call   0x427d3b
40c261:	59                   	pop    %ecx
40c262:	8b c7                	mov    %edi,%eax
40c264:	5f                   	pop    %edi
40c265:	5e                   	pop    %esi
40c266:	5b                   	pop    %ebx
40c267:	c9                   	leave
40c268:	c2 04 00             	ret    $0x4
40c26b:	6a 18                	push   $0x18
40c26d:	b8 71 86 42 00       	mov    $0x428671,%eax
40c272:	e8 5a be 01 00       	call   0x4280d1
40c277:	8b f9                	mov    %ecx,%edi
40c279:	89 7d e4             	mov    %edi,-0x1c(%ebp)
40c27c:	8b 45 08             	mov    0x8(%ebp),%eax
40c27f:	33 c9                	xor    %ecx,%ecx
40c281:	89 4d ec             	mov    %ecx,-0x14(%ebp)
40c284:	8b d9                	mov    %ecx,%ebx
40c286:	89 5d e0             	mov    %ebx,-0x20(%ebp)
40c289:	85 c0                	test   %eax,%eax
40c28b:	0f 84 29 02 00 00    	je     0x40c4ba
40c291:	8b f0                	mov    %eax,%esi
40c293:	8d 56 02             	lea    0x2(%esi),%edx
40c296:	66 8b 06             	mov    (%esi),%ax
40c299:	83 c6 02             	add    $0x2,%esi
40c29c:	66 3b c1             	cmp    %cx,%ax
40c29f:	75 f5                	jne    0x40c296
40c2a1:	2b f2                	sub    %edx,%esi
40c2a3:	d1 fe                	sar    $1,%esi
40c2a5:	89 75 e8             	mov    %esi,-0x18(%ebp)
40c2a8:	75 07                	jne    0x40c2b1
40c2aa:	8b f1                	mov    %ecx,%esi
40c2ac:	e9 07 02 00 00       	jmp    0x40c4b8
40c2b1:	8b 57 08             	mov    0x8(%edi),%edx
40c2b4:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40c2b7:	51                   	push   %ecx
40c2b8:	8b ce                	mov    %esi,%ecx
40c2ba:	e8 71 0b 00 00       	call   0x40ce30
40c2bf:	85 c0                	test   %eax,%eax
40c2c1:	79 2c                	jns    0x40c2ef
40c2c3:	be 16 02 07 80       	mov    $0x80070216,%esi
40c2c8:	a1 00 b0 42 00       	mov    0x42b000,%eax
40c2cd:	3d 00 b0 42 00       	cmp    $0x42b000,%eax
40c2d2:	0f 84 e0 01 00 00    	je     0x40c4b8
40c2d8:	f6 40 1c 01          	testb  $0x1,0x1c(%eax)
40c2dc:	0f 84 d6 01 00 00    	je     0x40c4b8
40c2e2:	ff 70 14             	push   0x14(%eax)
40c2e5:	ff 70 10             	push   0x10(%eax)
40c2e8:	6a 16                	push   $0x16
40c2ea:	e9 be 01 00 00       	jmp    0x40c4ad
40c2ef:	8b 57 04             	mov    0x4(%edi),%edx
40c2f2:	39 55 ec             	cmp    %edx,-0x14(%ebp)
40c2f5:	73 52                	jae    0x40c349
40c2f7:	8b 0f                	mov    (%edi),%ecx
40c2f9:	85 c9                	test   %ecx,%ecx
40c2fb:	74 4c                	je     0x40c349
40c2fd:	ff 75 08             	push   0x8(%ebp)
40c300:	e8 ff 09 00 00       	call   0x40cd04
40c305:	8b f0                	mov    %eax,%esi
40c307:	85 f6                	test   %esi,%esi
40c309:	79 33                	jns    0x40c33e
40c30b:	a1 00 b0 42 00       	mov    0x42b000,%eax
40c310:	3d 00 b0 42 00       	cmp    $0x42b000,%eax
40c315:	0f 84 9d 01 00 00    	je     0x40c4b8
40c31b:	f6 40 1c 01          	testb  $0x1,0x1c(%eax)
40c31f:	0f 84 93 01 00 00    	je     0x40c4b8
40c325:	56                   	push   %esi
40c326:	ff 70 14             	push   0x14(%eax)
40c329:	ba ac 22 40 00       	mov    $0x4022ac,%edx
40c32e:	ff 70 10             	push   0x10(%eax)
40c331:	6a 17                	push   $0x17
40c333:	59                   	pop    %ecx
40c334:	e8 95 b0 ff ff       	call   0x4073ce
40c339:	e9 7a 01 00 00       	jmp    0x40c4b8
40c33e:	8b 45 e8             	mov    -0x18(%ebp),%eax
40c341:	01 47 08             	add    %eax,0x8(%edi)
40c344:	e9 32 01 00 00       	jmp    0x40c47b
40c349:	8b 4f 08             	mov    0x8(%edi),%ecx
40c34c:	8d 41 01             	lea    0x1(%ecx),%eax
40c34f:	3b c1                	cmp    %ecx,%eax
40c351:	73 2c                	jae    0x40c37f
40c353:	be 16 02 07 80       	mov    $0x80070216,%esi
40c358:	a1 00 b0 42 00       	mov    0x42b000,%eax
40c35d:	3d 00 b0 42 00       	cmp    $0x42b000,%eax
40c362:	0f 84 50 01 00 00    	je     0x40c4b8
40c368:	f6 40 1c 01          	testb  $0x1,0x1c(%eax)
40c36c:	0f 84 46 01 00 00    	je     0x40c4b8
40c372:	ff 70 14             	push   0x14(%eax)
40c375:	ff 70 10             	push   0x10(%eax)
40c378:	6a 18                	push   $0x18
40c37a:	e9 2e 01 00 00       	jmp    0x40c4ad
40c37f:	03 c6                	add    %esi,%eax
40c381:	89 45 ec             	mov    %eax,-0x14(%ebp)
40c384:	3b c6                	cmp    %esi,%eax
40c386:	0f 82 02 01 00 00    	jb     0x40c48e
40c38c:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40c390:	33 c9                	xor    %ecx,%ecx
40c392:	6a 02                	push   $0x2
40c394:	5a                   	pop    %edx
40c395:	89 45 e8             	mov    %eax,-0x18(%ebp)
40c398:	f7 e2                	mul    %edx
40c39a:	0f 90 c1             	seto   %cl
40c39d:	f7 d9                	neg    %ecx
40c39f:	0b c8                	or     %eax,%ecx
40c3a1:	51                   	push   %ecx
40c3a2:	e8 6b b9 01 00       	call   0x427d12
40c3a7:	8b d8                	mov    %eax,%ebx
40c3a9:	8b 45 ec             	mov    -0x14(%ebp),%eax
40c3ac:	59                   	pop    %ecx
40c3ad:	eb 12                	jmp    0x40c3c1
40c3af:	b8 b5 c3 40 00       	mov    $0x40c3b5,%eax
40c3b4:	c3                   	ret
40c3b5:	8b 45 e8             	mov    -0x18(%ebp),%eax
40c3b8:	8b 7d e4             	mov    -0x1c(%ebp),%edi
40c3bb:	8b 5d e0             	mov    -0x20(%ebp),%ebx
40c3be:	89 45 ec             	mov    %eax,-0x14(%ebp)
40c3c1:	85 db                	test   %ebx,%ebx