40c0b3:	33 f6                	xor    %esi,%esi
40c0b5:	8b de                	mov    %esi,%ebx
40c0b7:	39 77 04             	cmp    %esi,0x4(%edi)
40c0ba:	76 32                	jbe    0x40c0ee
40c0bc:	8b ce                	mov    %esi,%ecx
40c0be:	89 75 08             	mov    %esi,0x8(%ebp)
40c0c1:	8b 07                	mov    (%edi),%eax
40c0c3:	6a ff                	push   $0xffffffff
40c0c5:	ff 75 0c             	push   0xc(%ebp)
40c0c8:	03 c1                	add    %ecx,%eax
40c0ca:	6a ff                	push   $0xffffffff
40c0cc:	89 45 fc             	mov    %eax,-0x4(%ebp)
40c0cf:	ff 30                	push   (%eax)
40c0d1:	56                   	push   %esi
40c0d2:	6a 7f                	push   $0x7f
40c0d4:	ff 15 28 b1 44 00    	call   *0x44b128
40c0da:	83 f8 02             	cmp    $0x2,%eax
40c0dd:	74 1f                	je     0x40c0fe
40c0df:	8b 4d 08             	mov    0x8(%ebp),%ecx
40c0e2:	43                   	inc    %ebx
40c0e3:	83 c1 50             	add    $0x50,%ecx
40c0e6:	89 4d 08             	mov    %ecx,0x8(%ebp)
40c0e9:	3b 5f 04             	cmp    0x4(%edi),%ebx
40c0ec:	72 d3                	jb     0x40c0c1
40c0ee:	be 90 04 07 80       	mov    $0x80070490,%esi
40c0f3:	5f                   	pop    %edi
40c0f4:	8b c6                	mov    %esi,%eax
40c0f6:	5e                   	pop    %esi
40c0f7:	5b                   	pop    %ebx
40c0f8:	8b e5                	mov    %ebp,%esp
40c0fa:	5d                   	pop    %ebp
40c0fb:	c2 0c 00             	ret    $0xc
40c0fe:	8b 45 10             	mov    0x10(%ebp),%eax
40c101:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40c104:	89 08                	mov    %ecx,(%eax)
40c106:	eb eb                	jmp    0x40c0f3
40c108:	55                   	push   %ebp
40c109:	8b ec                	mov    %esp,%ebp
40c10b:	8b 55 08             	mov    0x8(%ebp),%edx
40c10e:	33 c9                	xor    %ecx,%ecx
40c110:	8b 42 18             	mov    0x18(%edx),%eax
40c113:	83 e8 01             	sub    $0x1,%eax
40c116:	75 0b                	jne    0x40c123
40c118:	ff 75 0c             	push   0xc(%ebp)
40c11b:	52                   	push   %edx
40c11c:	e8 1f 53 01 00       	call   0x421440
40c121:	8b c8                	mov    %eax,%ecx
40c123:	8b c1                	mov    %ecx,%eax
40c125:	5d                   	pop    %ebp
40c126:	c2 08 00             	ret    $0x8
40c129:	55                   	push   %ebp
40c12a:	8b ec                	mov    %esp,%ebp
40c12c:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40c12f:	53                   	push   %ebx
40c130:	8b 5d 08             	mov    0x8(%ebp),%ebx
40c133:	56                   	push   %esi
40c134:	8b 41 04             	mov    0x4(%ecx),%eax
40c137:	57                   	push   %edi
40c138:	89 43 18             	mov    %eax,0x18(%ebx)
40c13b:	33 ff                	xor    %edi,%edi
40c13d:	83 7d 10 ff          	cmpl   $0xffffffff,0x10(%ebp)
40c141:	8b f7                	mov    %edi,%esi
40c143:	8b 41 18             	mov    0x18(%ecx),%eax
40c146:	89 43 10             	mov    %eax,0x10(%ebx)
40c149:	8b 41 1c             	mov    0x1c(%ecx),%eax
40c14c:	89 43 14             	mov    %eax,0x14(%ebx)
40c14f:	8b 41 40             	mov    0x40(%ecx),%eax
40c152:	89 43 08             	mov    %eax,0x8(%ebx)
40c155:	8b 41 44             	mov    0x44(%ecx),%eax
40c158:	89 43 0c             	mov    %eax,0xc(%ebx)
40c15b:	75 68                	jne    0x40c1c5
40c15d:	57                   	push   %edi
40c15e:	68 80 00 00 08       	push   $0x8000080
40c163:	6a 03                	push   $0x3
40c165:	57                   	push   %edi
40c166:	6a 01                	push   $0x1
40c168:	68 00 00 00 80       	push   $0x80000000
40c16d:	ff 75 14             	push   0x14(%ebp)
40c170:	ff 15 d8 b0 44 00    	call   *0x44b0d8
40c176:	89 03                	mov    %eax,(%ebx)
40c178:	83 f8 ff             	cmp    $0xffffffff,%eax
40c17b:	0f 85 9c 00 00 00    	jne    0x40c21d
40c181:	ff 15 e8 b0 44 00    	call   *0x44b0e8
40c187:	0f b7 f8             	movzwl %ax,%edi
40c18a:	81 cf 00 00 07 80    	or     $0x80070000,%edi
40c190:	85 c0                	test   %eax,%eax
40c192:	0f 4e f8             	cmovle %eax,%edi
40c195:	b8 05 40 00 80       	mov    $0x80004005,%eax
40c19a:	85 ff                	test   %edi,%edi
40c19c:	0f 49 f8             	cmovns %eax,%edi
40c19f:	57                   	push   %edi
40c1a0:	68 e6 00 00 00       	push   $0xe6
40c1a5:	68 f4 f4 44 00       	push   $0x44f4f4
40c1aa:	e8 24 76 ff ff       	call   0x4037d3
40c1af:	ff 75 14             	push   0x14(%ebp)
40c1b2:	68 00 f8 44 00       	push   $0x44f800
40c1b7:	57                   	push   %edi
40c1b8:	e8 72 3f 03 00       	call   0x44012f
40c1bd:	83 c4 0c             	add    $0xc,%esp
40c1c0:	e9 d3 00 00 00       	jmp    0x40c298
40c1c5:	8b 35 80 b1 44 00    	mov    0x44b180,%esi
40c1cb:	6a 02                	push   $0x2
40c1cd:	57                   	push   %edi
40c1ce:	57                   	push   %edi
40c1cf:	53                   	push   %ebx
40c1d0:	ff d6                	call   *%esi
40c1d2:	50                   	push   %eax
40c1d3:	ff 75 10             	push   0x10(%ebp)
40c1d6:	ff d6                	call   *%esi
40c1d8:	50                   	push   %eax
40c1d9:	ff 15 f4 b1 44 00    	call   *0x44b1f4
40c1df:	85 c0                	test   %eax,%eax
40c1e1:	75 38                	jne    0x40c21b
40c1e3:	ff 15 e8 b0 44 00    	call   *0x44b0e8
40c1e9:	0f b7 f8             	movzwl %ax,%edi
40c1ec:	81 cf 00 00 07 80    	or     $0x80070000,%edi
40c1f2:	85 c0                	test   %eax,%eax
40c1f4:	0f 4e f8             	cmovle %eax,%edi
40c1f7:	b8 05 40 00 80       	mov    $0x80004005,%eax
40c1fc:	85 ff                	test   %edi,%edi
40c1fe:	0f 49 f8             	cmovns %eax,%edi
40c201:	57                   	push   %edi
40c202:	68 ec 00 00 00       	push   $0xec
40c207:	68 f4 f4 44 00       	push   $0x44f4f4
40c20c:	e8 c2 75 ff ff       	call   0x4037d3
40c211:	ff 75 14             	push   0x14(%ebp)
40c214:	68 1c f8 44 00       	push   $0x44f81c
40c219:	eb 9c                	jmp    0x40c1b7
40c21b:	8b f7                	mov    %edi,%esi
40c21d:	8b 45 0c             	mov    0xc(%ebp),%eax
40c220:	39 78 0c             	cmp    %edi,0xc(%eax)
40c223:	74 08                	je     0x40c22d
40c225:	8b 73 08             	mov    0x8(%ebx),%esi
40c228:	8b 43 0c             	mov    0xc(%ebx),%eax
40c22b:	eb 02                	jmp    0x40c22f
40c22d:	8b c7                	mov    %edi,%eax
40c22f:	57                   	push   %edi
40c230:	57                   	push   %edi
40c231:	50                   	push   %eax
40c232:	56                   	push   %esi
40c233:	ff 33                	push   (%ebx)
40c235:	ff 15 f0 b1 44 00    	call   *0x44b1f0
40c23b:	85 c0                	test   %eax,%eax
40c23d:	75 35                	jne    0x40c274
40c23f:	ff 15 e8 b0 44 00    	call   *0x44b0e8
40c245:	0f b7 f8             	movzwl %ax,%edi
40c248:	81 cf 00 00 07 80    	or     $0x80070000,%edi
40c24e:	85 c0                	test   %eax,%eax
40c250:	0f 4e f8             	cmovle %eax,%edi
40c253:	b8 05 40 00 80       	mov    $0x80004005,%eax
40c258:	85 ff                	test   %edi,%edi
40c25a:	0f 49 f8             	cmovns %eax,%edi
40c25d:	57                   	push   %edi
40c25e:	68 f8 00 00 00       	push   $0xf8
40c263:	68 f4 f4 44 00       	push   $0x44f4f4
40c268:	e8 66 75 ff ff       	call   0x4037d3
40c26d:	68 4c f8 44 00       	push   $0x44f84c
40c272:	eb 1c                	jmp    0x40c290
40c274:	8b 43 18             	mov    0x18(%ebx),%eax
40c277:	83 e8 01             	sub    $0x1,%eax
40c27a:	75 1c                	jne    0x40c298
40c27c:	ff 75 14             	push   0x14(%ebp)
40c27f:	53                   	push   %ebx
40c280:	e8 ff 51 01 00       	call   0x421484
40c285:	8b f8                	mov    %eax,%edi
40c287:	85 ff                	test   %edi,%edi
40c289:	79 0d                	jns    0x40c298
40c28b:	68 80 f8 44 00       	push   $0x44f880
40c290:	57                   	push   %edi
40c291:	e8 99 3e 03 00       	call   0x44012f
40c296:	59                   	pop    %ecx
40c297:	59                   	pop    %ecx
40c298:	8b c7                	mov    %edi,%eax
40c29a:	5f                   	pop    %edi
40c29b:	5e                   	pop    %esi
40c29c:	5b                   	pop    %ebx
40c29d:	5d                   	pop    %ebp
40c29e:	c2 10 00             	ret    $0x10
40c2a1:	55                   	push   %ebp
40c2a2:	8b ec                	mov    %esp,%ebp
40c2a4:	83 ec 54             	sub    $0x54,%esp
40c2a7:	53                   	push   %ebx
40c2a8:	56                   	push   %esi
40c2a9:	57                   	push   %edi
40c2aa:	6a 50                	push   $0x50
40c2ac:	33 db                	xor    %ebx,%ebx
40c2ae:	8d 45 ac             	lea    -0x54(%ebp),%eax
40c2b1:	53                   	push   %ebx
40c2b2:	50                   	push   %eax
40c2b3:	e8 b8 33 02 00       	call   0x42f670
40c2b8:	8b 7d 08             	mov    0x8(%ebp),%edi
40c2bb:	8d 45 f4             	lea    -0xc(%ebp),%eax
40c2be:	83 c4 0c             	add    $0xc,%esp
40c2c1:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40c2c4:	33 c9                	xor    %ecx,%ecx
40c2c6:	89 5d bc             	mov    %ebx,-0x44(%ebp)
40c2c9:	41                   	inc    %ecx
40c2ca:	89 4d b0             	mov    %ecx,-0x50(%ebp)
40c2cd:	50                   	push   %eax
40c2ce:	8d 45 c4             	lea    -0x3c(%ebp),%eax
40c2d1:	89 4d b4             	mov    %ecx,-0x4c(%ebp)
40c2d4:	50                   	push   %eax
40c2d5:	8d 45 ec             	lea    -0x14(%ebp),%eax
40c2d8:	89 4d b8             	mov    %ecx,-0x48(%ebp)
40c2db:	50                   	push   %eax
40c2dc:	51                   	push   %ecx
40c2dd:	53                   	push   %ebx
40c2de:	57                   	push   %edi
40c2df:	e8 cb ef ff ff       	call   0x40b2af
40c2e4:	8b f0                	mov    %eax,%esi
40c2e6:	85 f6                	test   %esi,%esi
40c2e8:	79 07                	jns    0x40c2f1
40c2ea:	68 78 f7 44 00       	push   $0x44f778
40c2ef:	eb 33                	jmp    0x40c324
40c2f1:	53                   	push   %ebx
40c2f2:	8d 45 fc             	lea    -0x4(%ebp),%eax
40c2f5:	50                   	push   %eax
40c2f6:	e8 dc 70 ff ff       	call   0x4033d7
40c2fb:	8b f0                	mov    %eax,%esi
40c2fd:	85 f6                	test   %esi,%esi
40c2ff:	79 07                	jns    0x40c308
40c301:	68 b0 f7 44 00       	push   $0x44f7b0
40c306:	eb 1c                	jmp    0x40c324
40c308:	ff 75 fc             	push   -0x4(%ebp)
40c30b:	8d 45 ac             	lea    -0x54(%ebp),%eax
40c30e:	ff 37                	push   (%edi)
40c310:	50                   	push   %eax
40c311:	ff 75 0c             	push   0xc(%ebp)
40c314:	e8 10 fe ff ff       	call   0x40c129
40c319:	8b f0                	mov    %eax,%esi
40c31b:	85 f6                	test   %esi,%esi
40c31d:	79 0d                	jns    0x40c32c
40c31f:	68 dc f7 44 00       	push   $0x44f7dc
40c324:	56                   	push   %esi
40c325:	e8 05 3e 03 00       	call   0x44012f
40c32a:	59                   	pop    %ecx
40c32b:	59                   	pop    %ecx
40c32c:	39 5d fc             	cmp    %ebx,-0x4(%ebp)
40c32f:	74 08                	je     0x40c339
40c331:	ff 75 fc             	push   -0x4(%ebp)
40c334:	e8 b6 91 03 00       	call   0x4454ef
40c339:	5f                   	pop    %edi
40c33a:	8b c6                	mov    %esi,%eax
40c33c:	5e                   	pop    %esi
40c33d:	5b                   	pop    %ebx
40c33e:	8b e5                	mov    %ebp,%esp
40c340:	5d                   	pop    %ebp
40c341:	c2 08 00             	ret    $0x8
40c344:	55                   	push   %ebp
40c345:	8b ec                	mov    %esp,%ebp
40c347:	8b 55 08             	mov    0x8(%ebp),%edx
40c34a:	33 c9                	xor    %ecx,%ecx
40c34c:	8b 42 18             	mov    0x18(%edx),%eax
40c34f:	83 e8 01             	sub    $0x1,%eax
40c352:	75 08                	jne    0x40c35c
40c354:	52                   	push   %edx
40c355:	e8 53 52 01 00       	call   0x4215ad
40c35a:	8b c8                	mov    %eax,%ecx
40c35c:	8b c1                	mov    %ecx,%eax
40c35e:	5d                   	pop    %ebp
40c35f:	c2 04 00             	ret    $0x4
40c362:	55                   	push   %ebp
40c363:	8b ec                	mov    %esp,%ebp
40c365:	8b 55 08             	mov    0x8(%ebp),%edx
40c368:	33 c9                	xor    %ecx,%ecx
40c36a:	8b 42 18             	mov    0x18(%edx),%eax
40c36d:	83 e8 01             	sub    $0x1,%eax
40c370:	75 0e                	jne    0x40c380
40c372:	ff 75 10             	push   0x10(%ebp)
40c375:	ff 75 0c             	push   0xc(%ebp)
40c378:	52                   	push   %edx
40c379:	e8 5d 52 01 00       	call   0x4215db
40c37e:	8b c8                	mov    %eax,%ecx
40c380:	8b c1                	mov    %ecx,%eax
40c382:	5d                   	pop    %ebp
40c383:	c2 0c 00             	ret    $0xc
40c386:	55                   	push   %ebp
40c387:	8b ec                	mov    %esp,%ebp
40c389:	8b 55 08             	mov    0x8(%ebp),%edx
40c38c:	33 c9                	xor    %ecx,%ecx
40c38e:	8b 42 18             	mov    0x18(%edx),%eax
40c391:	83 e8 01             	sub    $0x1,%eax
40c394:	75 0b                	jne    0x40c3a1
40c396:	ff 75 0c             	push   0xc(%ebp)
40c399:	52                   	push   %edx
40c39a:	e8 89 52 01 00       	call   0x421628
40c39f:	8b c8                	mov    %eax,%ecx
40c3a1:	8b c1                	mov    %ecx,%eax
40c3a3:	5d                   	pop    %ebp
40c3a4:	c2 08 00             	ret    $0x8
40c3a7:	55                   	push   %ebp
40c3a8:	8b ec                	mov    %esp,%ebp
40c3aa:	83 ec 14             	sub    $0x14,%esp
40c3ad:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
40c3b1:	8d 45 f4             	lea    -0xc(%ebp),%eax
40c3b4:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40c3b8:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
40c3bc:	83 65 f0 00          	andl   $0x0,-0x10(%ebp)
40c3c0:	56                   	push   %esi
40c3c1:	50                   	push   %eax
40c3c2:	68 98 f4 44 00       	push   $0x44f498
40c3c7:	ff 75 10             	push   0x10(%ebp)
40c3ca:	e8 34 74 03 00       	call   0x443803
40c3cf:	8b f0                	mov    %eax,%esi
40c3d1:	85 f6                	test   %esi,%esi
40c3d3:	79 12                	jns    0x40c3e7
40c3d5:	68 ac f4 44 00       	push   $0x44f4ac
40c3da:	56                   	push   %esi
40c3db:	e8 4f 3d 03 00       	call   0x44012f
40c3e0:	59                   	pop    %ecx
40c3e1:	59                   	pop    %ecx
40c3e2:	e9 ac 02 00 00       	jmp    0x40c693
40c3e7:	8b 45 f4             	mov    -0xc(%ebp),%eax
40c3ea:	8d 55 f8             	lea    -0x8(%ebp),%edx
40c3ed:	52                   	push   %edx
40c3ee:	50                   	push   %eax
40c3ef:	8b 08                	mov    (%eax),%ecx
40c3f1:	ff 51 20             	call   *0x20(%ecx)
40c3f4:	8b f0                	mov    %eax,%esi
40c3f6:	85 f6                	test   %esi,%esi
40c3f8:	79 07                	jns    0x40c401
40c3fa:	68 d0 f4 44 00       	push   $0x44f4d0
40c3ff:	eb d9                	jmp    0x40c3da
40c401:	8b 45 f8             	mov    -0x8(%ebp),%eax
40c404:	85 c0                	test   %eax,%eax
40c406:	0f 84 87 02 00 00    	je     0x40c693
40c40c:	6b c0 50             	imul   $0x50,%eax,%eax
40c40f:	6a 01                	push   $0x1
40c411:	50                   	push   %eax
40c412:	e8 bd 74 ff ff       	call   0x4038d4
40c417:	8b 4d 0c             	mov    0xc(%ebp),%ecx
40c41a:	89 01                	mov    %eax,(%ecx)
40c41c:	85 c0                	test   %eax,%eax
40c41e:	75 19                	jne    0x40c439
40c420:	be 0e 00 07 80       	mov    $0x8007000e,%esi
40c425:	56                   	push   %esi
40c426:	6a 2e                	push   $0x2e
40c428:	68 f4 f4 44 00       	push   $0x44f4f4
40c42d:	e8 a1 73 ff ff       	call   0x4037d3
40c432:	68 04 f5 44 00       	push   $0x44f504
40c437:	eb a1                	jmp    0x40c3da
40c439:	8b 45 f8             	mov    -0x8(%ebp),%eax
40c43c:	83 65 10 00          	andl   $0x0,0x10(%ebp)
40c440:	89 41 04             	mov    %eax,0x4(%ecx)
40c443:	53                   	push   %ebx
40c444:	57                   	push   %edi
40c445:	85 c0                	test   %eax,%eax
40c447:	0f 84 42 02 00 00    	je     0x40c68f
40c44d:	33 c0                	xor    %eax,%eax
40c44f:	89 45 ec             	mov    %eax,-0x14(%ebp)