46b014:	85 c0                	test   %eax,%eax
46b016:	74 31                	je     0x46b049
46b018:	8b 4f 08             	mov    0x8(%edi),%ecx
46b01b:	8b f1                	mov    %ecx,%esi
46b01d:	2b f0                	sub    %eax,%esi
46b01f:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
46b022:	c1 fe 05             	sar    $0x5,%esi
46b025:	3b c1                	cmp    %ecx,%eax
46b027:	74 18                	je     0x46b041
46b029:	8b c8                	mov    %eax,%ecx
46b02b:	e8 35 2e fb ff       	call   0x41de65
46b030:	8b 45 ec             	mov    -0x14(%ebp),%eax
46b033:	83 c0 20             	add    $0x20,%eax
46b036:	89 45 ec             	mov    %eax,-0x14(%ebp)
46b039:	3b 45 e4             	cmp    -0x1c(%ebp),%eax
46b03c:	75 eb                	jne    0x46b029
46b03e:	8b 47 04             	mov    0x4(%edi),%eax
46b041:	50                   	push   %eax
46b042:	ff 15 10 74 4a 00    	call   *0x4a7410
46b048:	59                   	pop    %ecx
46b049:	8b 45 e8             	mov    -0x18(%ebp),%eax
46b04c:	c1 e3 05             	shl    $0x5,%ebx
46b04f:	03 d8                	add    %eax,%ebx
46b051:	c1 e6 05             	shl    $0x5,%esi
46b054:	03 f0                	add    %eax,%esi
46b056:	89 5f 0c             	mov    %ebx,0xc(%edi)
46b059:	89 77 08             	mov    %esi,0x8(%edi)
46b05c:	89 47 04             	mov    %eax,0x4(%edi)
46b05f:	e8 3d 54 02 00       	call   0x4904a1
46b064:	c2 04 00             	ret    $0x4
46b067:	51                   	push   %ecx
46b068:	ff 75 e8             	push   -0x18(%ebp)
46b06b:	e8 3f 29 fb ff       	call   0x41d9af
46b070:	33 f6                	xor    %esi,%esi
46b072:	56                   	push   %esi
46b073:	56                   	push   %esi
46b074:	e8 22 54 02 00       	call   0x49049b
46b079:	e8 b4 28 fb ff       	call   0x41d932
46b07e:	cc                   	int3
46b07f:	8b ff                	mov    %edi,%edi
46b081:	56                   	push   %esi
46b082:	57                   	push   %edi
46b083:	8b f9                	mov    %ecx,%edi
46b085:	8b 77 04             	mov    0x4(%edi),%esi
46b088:	85 f6                	test   %esi,%esi
46b08a:	74 22                	je     0x46b0ae
46b08c:	53                   	push   %ebx
46b08d:	8b 5f 08             	mov    0x8(%edi),%ebx
46b090:	3b f3                	cmp    %ebx,%esi
46b092:	74 11                	je     0x46b0a5
46b094:	8b ce                	mov    %esi,%ecx
46b096:	e8 ca 2d fb ff       	call   0x41de65
46b09b:	83 c6 20             	add    $0x20,%esi
46b09e:	3b f3                	cmp    %ebx,%esi
46b0a0:	75 f2                	jne    0x46b094
46b0a2:	8b 77 04             	mov    0x4(%edi),%esi
46b0a5:	56                   	push   %esi
46b0a6:	ff 15 10 74 4a 00    	call   *0x4a7410
46b0ac:	59                   	pop    %ecx
46b0ad:	5b                   	pop    %ebx
46b0ae:	33 c0                	xor    %eax,%eax
46b0b0:	89 47 04             	mov    %eax,0x4(%edi)
46b0b3:	89 47 08             	mov    %eax,0x8(%edi)
46b0b6:	89 47 0c             	mov    %eax,0xc(%edi)
46b0b9:	5f                   	pop    %edi
46b0ba:	5e                   	pop    %esi
46b0bb:	c3                   	ret
46b0bc:	6a 08                	push   $0x8
46b0be:	b8 c1 53 49 00       	mov    $0x4953c1,%eax
46b0c3:	e8 74 54 02 00       	call   0x49053c
46b0c8:	8b f9                	mov    %ecx,%edi
46b0ca:	8b 5d 08             	mov    0x8(%ebp),%ebx
46b0cd:	81 fb ff ff ff 3f    	cmp    $0x3fffffff,%ebx
46b0d3:	77 7d                	ja     0x46b152
46b0d5:	83 7f 04 00          	cmpl   $0x0,0x4(%edi)
46b0d9:	75 06                	jne    0x46b0e1
46b0db:	33 f6                	xor    %esi,%esi
46b0dd:	8b c6                	mov    %esi,%eax
46b0df:	eb 0b                	jmp    0x46b0ec
46b0e1:	8b 47 0c             	mov    0xc(%edi),%eax
46b0e4:	2b 47 04             	sub    0x4(%edi),%eax
46b0e7:	c1 f8 02             	sar    $0x2,%eax
46b0ea:	33 f6                	xor    %esi,%esi
46b0ec:	3b c3                	cmp    %ebx,%eax
46b0ee:	73 48                	jae    0x46b138
46b0f0:	53                   	push   %ebx
46b0f1:	e8 06 2f fb ff       	call   0x41dffc
46b0f6:	89 75 fc             	mov    %esi,-0x4(%ebp)
46b0f9:	8b c8                	mov    %eax,%ecx
46b0fb:	89 45 ec             	mov    %eax,-0x14(%ebp)
46b0fe:	ff 75 ec             	push   -0x14(%ebp)
46b101:	ff 75 ec             	push   -0x14(%ebp)
46b104:	ff 77 08             	push   0x8(%edi)
46b107:	ff 77 04             	push   0x4(%edi)
46b10a:	e8 c5 98 fe ff       	call   0x4549d4
46b10f:	8b 47 04             	mov    0x4(%edi),%eax
46b112:	85 c0                	test   %eax,%eax
46b114:	74 10                	je     0x46b126
46b116:	8b 77 08             	mov    0x8(%edi),%esi
46b119:	2b f0                	sub    %eax,%esi
46b11b:	50                   	push   %eax
46b11c:	c1 fe 02             	sar    $0x2,%esi
46b11f:	ff 15 10 74 4a 00    	call   *0x4a7410
46b125:	59                   	pop    %ecx
46b126:	8b 4d ec             	mov    -0x14(%ebp),%ecx
46b129:	89 4f 04             	mov    %ecx,0x4(%edi)
46b12c:	8d 04 99             	lea    (%ecx,%ebx,4),%eax
46b12f:	89 47 0c             	mov    %eax,0xc(%edi)
46b132:	8d 04 b1             	lea    (%ecx,%esi,4),%eax
46b135:	89 47 08             	mov    %eax,0x8(%edi)
46b138:	e8 64 53 02 00       	call   0x4904a1
46b13d:	c2 04 00             	ret    $0x4
46b140:	51                   	push   %ecx
46b141:	ff 75 ec             	push   -0x14(%ebp)
46b144:	e8 66 28 fb ff       	call   0x41d9af
46b149:	33 f6                	xor    %esi,%esi
46b14b:	56                   	push   %esi
46b14c:	56                   	push   %esi
46b14d:	e8 49 53 02 00       	call   0x49049b
46b152:	e8 db 27 fb ff       	call   0x41d932
46b157:	cc                   	int3
46b158:	8b ff                	mov    %edi,%edi
46b15a:	55                   	push   %ebp
46b15b:	8b ec                	mov    %esp,%ebp
46b15d:	56                   	push   %esi
46b15e:	8b 75 08             	mov    0x8(%ebp),%esi
46b161:	eb 0a                	jmp    0x46b16d
46b163:	8b ce                	mov    %esi,%ecx
46b165:	e8 fb 2c fb ff       	call   0x41de65
46b16a:	83 c6 20             	add    $0x20,%esi
46b16d:	3b 75 0c             	cmp    0xc(%ebp),%esi
46b170:	75 f1                	jne    0x46b163
46b172:	5e                   	pop    %esi
46b173:	5d                   	pop    %ebp
46b174:	c2 08 00             	ret    $0x8
46b177:	8b ff                	mov    %edi,%edi
46b179:	55                   	push   %ebp
46b17a:	8b ec                	mov    %esp,%ebp
46b17c:	8b 4d 08             	mov    0x8(%ebp),%ecx
46b17f:	83 ec 0c             	sub    $0xc,%esp
46b182:	85 c9                	test   %ecx,%ecx
46b184:	75 0f                	jne    0x46b195
46b186:	c1 e1 05             	shl    $0x5,%ecx
46b189:	51                   	push   %ecx
46b18a:	ff 15 14 74 4a 00    	call   *0x4a7414
46b190:	59                   	pop    %ecx
46b191:	c9                   	leave
46b192:	c2 04 00             	ret    $0x4
46b195:	83 c8 ff             	or     $0xffffffff,%eax
46b198:	33 d2                	xor    %edx,%edx
46b19a:	f7 f1                	div    %ecx
46b19c:	83 f8 20             	cmp    $0x20,%eax
46b19f:	73 e5                	jae    0x46b186
46b1a1:	6a 00                	push   $0x0
46b1a3:	8d 4d f4             	lea    -0xc(%ebp),%ecx
46b1a6:	e8 21 13 fb ff       	call   0x41c4cc
46b1ab:	68 4c eb 49 00       	push   $0x49eb4c
46b1b0:	8d 45 f4             	lea    -0xc(%ebp),%eax
46b1b3:	50                   	push   %eax
46b1b4:	e8 e2 52 02 00       	call   0x49049b
46b1b9:	cc                   	int3
46b1ba:	6a 34                	push   $0x34
46b1bc:	b8 e4 53 49 00       	mov    $0x4953e4,%eax
46b1c1:	e8 76 53 02 00       	call   0x49053c
46b1c6:	8b f9                	mov    %ecx,%edi
46b1c8:	89 7d e0             	mov    %edi,-0x20(%ebp)
46b1cb:	ff 75 10             	push   0x10(%ebp)
46b1ce:	8d 4d c0             	lea    -0x40(%ebp),%ecx
46b1d1:	e8 81 f6 ff ff       	call   0x46a857
46b1d6:	33 f6                	xor    %esi,%esi
46b1d8:	89 75 fc             	mov    %esi,-0x4(%ebp)
46b1db:	8b 4f 04             	mov    0x4(%edi),%ecx
46b1de:	85 c9                	test   %ecx,%ecx
46b1e0:	75 06                	jne    0x46b1e8
46b1e2:	8b d6                	mov    %esi,%edx
46b1e4:	8b de                	mov    %esi,%ebx
46b1e6:	eb 10                	jmp    0x46b1f8
46b1e8:	8b 57 0c             	mov    0xc(%edi),%edx
46b1eb:	8b 5f 08             	mov    0x8(%edi),%ebx
46b1ee:	2b d1                	sub    %ecx,%edx
46b1f0:	2b d9                	sub    %ecx,%ebx
46b1f2:	c1 fa 05             	sar    $0x5,%edx
46b1f5:	c1 fb 05             	sar    $0x5,%ebx
46b1f8:	b8 ff ff ff 07       	mov    $0x7ffffff,%eax
46b1fd:	89 45 ec             	mov    %eax,-0x14(%ebp)
46b200:	2b c3                	sub    %ebx,%eax
46b202:	33 db                	xor    %ebx,%ebx
46b204:	43                   	inc    %ebx
46b205:	3b c3                	cmp    %ebx,%eax
46b207:	0f 82 f9 01 00 00    	jb     0x46b406
46b20d:	85 c9                	test   %ecx,%ecx
46b20f:	75 04                	jne    0x46b215
46b211:	8b c6                	mov    %esi,%eax
46b213:	eb 08                	jmp    0x46b21d
46b215:	8b 47 08             	mov    0x8(%edi),%eax
46b218:	2b c1                	sub    %ecx,%eax
46b21a:	c1 f8 05             	sar    $0x5,%eax
46b21d:	40                   	inc    %eax
46b21e:	3b d0                	cmp    %eax,%edx
46b220:	0f 83 e9 00 00 00    	jae    0x46b30f
46b226:	8b c2                	mov    %edx,%eax
46b228:	d1 e8                	shr    $1,%eax
46b22a:	29 45 ec             	sub    %eax,-0x14(%ebp)
46b22d:	03 c2                	add    %edx,%eax
46b22f:	39 55 ec             	cmp    %edx,-0x14(%ebp)
46b232:	1b d2                	sbb    %edx,%edx
46b234:	f7 d2                	not    %edx
46b236:	23 d0                	and    %eax,%edx
46b238:	89 55 e4             	mov    %edx,-0x1c(%ebp)
46b23b:	85 c9                	test   %ecx,%ecx
46b23d:	75 04                	jne    0x46b243
46b23f:	8b c6                	mov    %esi,%eax
46b241:	eb 08                	jmp    0x46b24b
46b243:	8b 47 08             	mov    0x8(%edi),%eax
46b246:	2b c1                	sub    %ecx,%eax
46b248:	c1 f8 05             	sar    $0x5,%eax
46b24b:	40                   	inc    %eax
46b24c:	3b d0                	cmp    %eax,%edx
46b24e:	73 14                	jae    0x46b264
46b250:	85 c9                	test   %ecx,%ecx
46b252:	75 04                	jne    0x46b258
46b254:	8b d6                	mov    %esi,%edx
46b256:	eb 08                	jmp    0x46b260
46b258:	8b 57 08             	mov    0x8(%edi),%edx
46b25b:	2b d1                	sub    %ecx,%edx
46b25d:	c1 fa 05             	sar    $0x5,%edx
46b260:	42                   	inc    %edx
46b261:	89 55 e4             	mov    %edx,-0x1c(%ebp)
46b264:	52                   	push   %edx
46b265:	e8 0d ff ff ff       	call   0x46b177
46b26a:	88 5d fc             	mov    %bl,-0x4(%ebp)
46b26d:	ff 75 e0             	push   -0x20(%ebp)
46b270:	8b 55 08             	mov    0x8(%ebp),%edx
46b273:	ff 75 e0             	push   -0x20(%ebp)
46b276:	89 45 e8             	mov    %eax,-0x18(%ebp)
46b279:	51                   	push   %ecx
46b27a:	8b 4f 04             	mov    0x4(%edi),%ecx
46b27d:	50                   	push   %eax
46b27e:	89 45 ec             	mov    %eax,-0x14(%ebp)
46b281:	e8 5f 02 00 00       	call   0x46b4e5
46b286:	8b d3                	mov    %ebx,%edx
46b288:	89 45 ec             	mov    %eax,-0x14(%ebp)
46b28b:	8d 48 20             	lea    0x20(%eax),%ecx
46b28e:	89 4d e0             	mov    %ecx,-0x20(%ebp)
46b291:	ff 75 e0             	push   -0x20(%ebp)
46b294:	ff 75 e0             	push   -0x20(%ebp)
46b297:	51                   	push   %ecx
46b298:	8d 4d c0             	lea    -0x40(%ebp),%ecx
46b29b:	51                   	push   %ecx
46b29c:	8b c8                	mov    %eax,%ecx
46b29e:	e8 86 01 00 00       	call   0x46b429
46b2a3:	ff 75 e0             	push   -0x20(%ebp)
46b2a6:	8b 45 e0             	mov    -0x20(%ebp),%eax
46b2a9:	ff 75 e0             	push   -0x20(%ebp)
46b2ac:	8b 57 08             	mov    0x8(%edi),%edx
46b2af:	51                   	push   %ecx
46b2b0:	8b 4d 08             	mov    0x8(%ebp),%ecx
46b2b3:	50                   	push   %eax
46b2b4:	89 45 ec             	mov    %eax,-0x14(%ebp)
46b2b7:	e8 29 02 00 00       	call   0x46b4e5
46b2bc:	8b 5f 04             	mov    0x4(%edi),%ebx
46b2bf:	85 db                	test   %ebx,%ebx
46b2c1:	74 2b                	je     0x46b2ee
46b2c3:	8b 47 08             	mov    0x8(%edi),%eax
46b2c6:	8b f0                	mov    %eax,%esi
46b2c8:	2b f3                	sub    %ebx,%esi
46b2ca:	89 45 e0             	mov    %eax,-0x20(%ebp)
46b2cd:	c1 fe 05             	sar    $0x5,%esi
46b2d0:	3b d8                	cmp    %eax,%ebx
46b2d2:	74 12                	je     0x46b2e6
46b2d4:	8b cb                	mov    %ebx,%ecx
46b2d6:	e8 8a 2b fb ff       	call   0x41de65
46b2db:	83 c3 20             	add    $0x20,%ebx
46b2de:	3b 5d e0             	cmp    -0x20(%ebp),%ebx
46b2e1:	75 f1                	jne    0x46b2d4
46b2e3:	8b 5f 04             	mov    0x4(%edi),%ebx
46b2e6:	53                   	push   %ebx
46b2e7:	ff 15 10 74 4a 00    	call   *0x4a7410
46b2ed:	59                   	pop    %ecx
46b2ee:	8b 45 e4             	mov    -0x1c(%ebp),%eax
46b2f1:	8b 4d e8             	mov    -0x18(%ebp),%ecx
46b2f4:	c1 e0 05             	shl    $0x5,%eax
46b2f7:	03 c1                	add    %ecx,%eax
46b2f9:	89 4f 04             	mov    %ecx,0x4(%edi)
46b2fc:	89 47 0c             	mov    %eax,0xc(%edi)
46b2ff:	8d 46 01             	lea    0x1(%esi),%eax
46b302:	c1 e0 05             	shl    $0x5,%eax
46b305:	03 c1                	add    %ecx,%eax
46b307:	89 47 08             	mov    %eax,0x8(%edi)
46b30a:	e9 e7 00 00 00       	jmp    0x46b3f6
46b30f:	8b 57 08             	mov    0x8(%edi),%edx
46b312:	8b c2                	mov    %edx,%eax
46b314:	8b 4d 08             	mov    0x8(%ebp),%ecx
46b317:	2b c1                	sub    %ecx,%eax
46b319:	ff 75 e0             	push   -0x20(%ebp)
46b31c:	c1 f8 05             	sar    $0x5,%eax
46b31f:	ff 75 e0             	push   -0x20(%ebp)
46b322:	51                   	push   %ecx
46b323:	3b c3                	cmp    %ebx,%eax
46b325:	73 78                	jae    0x46b39f
46b327:	8d 41 20             	lea    0x20(%ecx),%eax
46b32a:	50                   	push   %eax
46b32b:	e8 b5 01 00 00       	call   0x46b4e5
46b330:	c6 45 fc 03          	movb   $0x3,-0x4(%ebp)
46b334:	8b 4f 08             	mov    0x8(%edi),%ecx
46b337:	8b c1                	mov    %ecx,%eax
46b339:	ff 75 e0             	push   -0x20(%ebp)
46b33c:	2b 45 08             	sub    0x8(%ebp),%eax
46b33f:	ff 75 e0             	push   -0x20(%ebp)
46b342:	c1 f8 05             	sar    $0x5,%eax
46b345:	2b d8                	sub    %eax,%ebx
46b347:	8d 45 c0             	lea    -0x40(%ebp),%eax
46b34a:	51                   	push   %ecx
46b34b:	50                   	push   %eax
46b34c:	8b d3                	mov    %ebx,%edx
46b34e:	e8 d6 00 00 00       	call   0x46b429
46b353:	89 75 fc             	mov    %esi,-0x4(%ebp)
46b356:	8b 5f 08             	mov    0x8(%edi),%ebx
46b359:	8b 75 08             	mov    0x8(%ebp),%esi
46b35c:	8d 43 20             	lea    0x20(%ebx),%eax
46b35f:	89 47 08             	mov    %eax,0x8(%edi)
46b362:	eb 1a                	jmp    0x46b37e
46b364:	8d 45 c0             	lea    -0x40(%ebp),%eax
46b367:	8b ce                	mov    %esi,%ecx
46b369:	50                   	push   %eax
46b36a:	e8 21 2b fb ff       	call   0x41de90
46b36f:	8d 45 d0             	lea    -0x30(%ebp),%eax
46b372:	50                   	push   %eax
46b373:	8d 4e 10             	lea    0x10(%esi),%ecx
46b376:	e8 15 2b fb ff       	call   0x41de90
46b37b:	83 c6 20             	add    $0x20,%esi
46b37e:	3b f3                	cmp    %ebx,%esi
46b380:	75 e2                	jne    0x46b364
46b382:	eb 72                	jmp    0x46b3f6
46b384:	8b 45 e0             	mov    -0x20(%ebp),%eax
46b387:	8b 40 08             	mov    0x8(%eax),%eax
46b38a:	83 c0 20             	add    $0x20,%eax
46b38d:	50                   	push   %eax
46b38e:	8b 45 08             	mov    0x8(%ebp),%eax
46b391:	83 c0 20             	add    $0x20,%eax
46b394:	50                   	push   %eax
46b395:	e8 be fd ff ff       	call   0x46b158
46b39a:	e9 80 00 00 00       	jmp    0x46b41f
46b39f:	8d 5a e0             	lea    -0x20(%edx),%ebx
46b3a2:	52                   	push   %edx
46b3a3:	8b cb                	mov    %ebx,%ecx
46b3a5:	e8 3b 01 00 00       	call   0x46b4e5
46b3aa:	8b 75 08             	mov    0x8(%ebp),%esi
46b3ad:	89 47 08             	mov    %eax,0x8(%edi)
46b3b0:	3b de                	cmp    %esi,%ebx