510f06:	85 d2                	test   %edx,%edx
510f08:	7f 0b                	jg     0x510f15
510f0a:	8b 4c 24 10          	mov    0x10(%esp),%ecx
510f0e:	c7 01 00 00 00 00    	movl   $0x0,(%ecx)
510f14:	c3                   	ret
510f15:	8b 44 24 10          	mov    0x10(%esp),%eax
510f19:	89 10                	mov    %edx,(%eax)
510f1b:	b8 01 00 00 00       	mov    $0x1,%eax
510f20:	c3                   	ret
510f21:	cc                   	int3
510f22:	cc                   	int3
510f23:	cc                   	int3
510f24:	cc                   	int3
510f25:	cc                   	int3
510f26:	cc                   	int3
510f27:	cc                   	int3
510f28:	cc                   	int3
510f29:	cc                   	int3
510f2a:	cc                   	int3
510f2b:	cc                   	int3
510f2c:	cc                   	int3
510f2d:	cc                   	int3
510f2e:	cc                   	int3
510f2f:	cc                   	int3
510f30:	8b 54 24 04          	mov    0x4(%esp),%edx
510f34:	b9 ff ff ff 7f       	mov    $0x7fffffff,%ecx
510f39:	39 4c 24 0c          	cmp    %ecx,0xc(%esp)
510f3d:	56                   	push   %esi
510f3e:	0f 46 4c 24 10       	cmovbe 0x10(%esp),%ecx
510f43:	8b 32                	mov    (%edx),%esi
510f45:	51                   	push   %ecx
510f46:	ff 74 24 10          	push   0x10(%esp)
510f4a:	8b 46 0c             	mov    0xc(%esi),%eax
510f4d:	52                   	push   %edx
510f4e:	ff d0                	call   *%eax
510f50:	83 c4 0c             	add    $0xc,%esp
510f53:	8b d0                	mov    %eax,%edx
510f55:	5e                   	pop    %esi
510f56:	85 d2                	test   %edx,%edx
510f58:	7f 0b                	jg     0x510f65
510f5a:	8b 4c 24 10          	mov    0x10(%esp),%ecx
510f5e:	c7 01 00 00 00 00    	movl   $0x0,(%ecx)
510f64:	c3                   	ret
510f65:	8b 44 24 10          	mov    0x10(%esp),%eax
510f69:	89 10                	mov    %edx,(%eax)
510f6b:	b8 01 00 00 00       	mov    $0x1,%eax
510f70:	c3                   	ret
510f71:	cc                   	int3
510f72:	cc                   	int3
510f73:	cc                   	int3
510f74:	cc                   	int3
510f75:	cc                   	int3
510f76:	cc                   	int3
510f77:	cc                   	int3
510f78:	cc                   	int3
510f79:	cc                   	int3
510f7a:	cc                   	int3
510f7b:	cc                   	int3
510f7c:	cc                   	int3
510f7d:	cc                   	int3
510f7e:	cc                   	int3
510f7f:	cc                   	int3
510f80:	ff 74 24 04          	push   0x4(%esp)
510f84:	e8 47 f1 fd ff       	call   0x4f00d0
510f89:	ff 74 24 08          	push   0x8(%esp)
510f8d:	c7 80 80 00 00 00 00 	movl   $0x0,0x80(%eax)
510f94:	00 00 00
510f97:	e8 34 f1 fd ff       	call   0x4f00d0
510f9c:	50                   	push   %eax
510f9d:	ff 74 24 14          	push   0x14(%esp)
510fa1:	e8 4a dd 02 00       	call   0x53ecf0
510fa6:	83 c4 10             	add    $0x10,%esp
510fa9:	b8 01 00 00 00       	mov    $0x1,%eax
510fae:	c3                   	ret
510faf:	cc                   	int3
510fb0:	83 7c 24 08 06       	cmpl   $0x6,0x8(%esp)
510fb5:	74 04                	je     0x510fbb
510fb7:	83 c8 ff             	or     $0xffffffff,%eax
510fba:	c3                   	ret
510fbb:	6a 08                	push   $0x8
510fbd:	ff 74 24 14          	push   0x14(%esp)
510fc1:	e8 4a 03 fd ff       	call   0x4e1310
510fc6:	83 c4 08             	add    $0x8,%esp
510fc9:	85 c0                	test   %eax,%eax
510fcb:	7f 03                	jg     0x510fd0
510fcd:	33 c0                	xor    %eax,%eax
510fcf:	c3                   	ret
510fd0:	ff 74 24 10          	push   0x10(%esp)
510fd4:	e8 57 df 02 00       	call   0x53ef30
510fd9:	83 c4 04             	add    $0x4,%esp
510fdc:	b8 01 00 00 00       	mov    $0x1,%eax
510fe1:	c3                   	ret
510fe2:	cc                   	int3
510fe3:	cc                   	int3
510fe4:	cc                   	int3
510fe5:	cc                   	int3
510fe6:	cc                   	int3
510fe7:	cc                   	int3
510fe8:	cc                   	int3
510fe9:	cc                   	int3
510fea:	cc                   	int3
510feb:	cc                   	int3
510fec:	cc                   	int3
510fed:	cc                   	int3
510fee:	cc                   	int3
510fef:	cc                   	int3
510ff0:	55                   	push   %ebp
510ff1:	8b 6c 24 08          	mov    0x8(%esp),%ebp
510ff5:	57                   	push   %edi
510ff6:	55                   	push   %ebp
510ff7:	e8 c4 f0 fd ff       	call   0x4f00c0
510ffc:	83 c4 04             	add    $0x4,%esp
510fff:	8b 78 04             	mov    0x4(%eax),%edi
511002:	8b 44 24 18          	mov    0x18(%esp),%eax
511006:	3b c7                	cmp    %edi,%eax
511008:	72 46                	jb     0x511050
51100a:	53                   	push   %ebx
51100b:	2b c7                	sub    %edi,%eax
51100d:	33 db                	xor    %ebx,%ebx
51100f:	56                   	push   %esi
511010:	8b 74 24 1c          	mov    0x1c(%esp),%esi
511014:	29 74 24 18          	sub    %esi,0x18(%esp)
511018:	89 44 24 20          	mov    %eax,0x20(%esp)
51101c:	0f 1f 40 00          	nopl   0x0(%eax)
511020:	55                   	push   %ebp
511021:	e8 2a 62 fd ff       	call   0x4e7250
511026:	83 c4 04             	add    $0x4,%esp
511029:	50                   	push   %eax
51102a:	55                   	push   %ebp
51102b:	e8 a0 f0 fd ff       	call   0x4f00d0
511030:	83 c4 04             	add    $0x4,%esp
511033:	50                   	push   %eax
511034:	8b 44 24 20          	mov    0x20(%esp),%eax
511038:	03 c6                	add    %esi,%eax
51103a:	50                   	push   %eax
51103b:	56                   	push   %esi
51103c:	e8 ff db 02 00       	call   0x53ec40
511041:	03 df                	add    %edi,%ebx
511043:	83 c4 10             	add    $0x10,%esp
511046:	03 f7                	add    %edi,%esi
511048:	3b 5c 24 20          	cmp    0x20(%esp),%ebx
51104c:	76 d2                	jbe    0x511020
51104e:	5e                   	pop    %esi
51104f:	5b                   	pop    %ebx
511050:	5f                   	pop    %edi
511051:	b8 01 00 00 00       	mov    $0x1,%eax
511056:	5d                   	pop    %ebp
511057:	c3                   	ret
511058:	cc                   	int3
511059:	cc                   	int3
51105a:	cc                   	int3
51105b:	cc                   	int3
51105c:	cc                   	int3
51105d:	cc                   	int3
51105e:	cc                   	int3
51105f:	cc                   	int3
511060:	b8 04 00 00 00       	mov    $0x4,%eax
511065:	e8 46 07 0c 00       	call   0x5d17b0
51106a:	53                   	push   %ebx
51106b:	8b 5c 24 14          	mov    0x14(%esp),%ebx
51106f:	55                   	push   %ebp
511070:	8b 6c 24 14          	mov    0x14(%esp),%ebp
511074:	56                   	push   %esi
511075:	8b 74 24 14          	mov    0x14(%esp),%esi
511079:	57                   	push   %edi
51107a:	8b 7c 24 24          	mov    0x24(%esp),%edi
51107e:	81 ff 00 00 00 40    	cmp    $0x40000000,%edi
511084:	72 62                	jb     0x5110e8
511086:	8b c7                	mov    %edi,%eax
511088:	c1 e8 1e             	shr    $0x1e,%eax
51108b:	89 44 24 10          	mov    %eax,0x10(%esp)
51108f:	90                   	nop
511090:	56                   	push   %esi
511091:	e8 aa f0 fd ff       	call   0x4f0140
511096:	83 c4 04             	add    $0x4,%esp
511099:	89 44 24 24          	mov    %eax,0x24(%esp)
51109d:	8d 44 24 24          	lea    0x24(%esp),%eax
5110a1:	50                   	push   %eax
5110a2:	56                   	push   %esi
5110a3:	e8 78 f0 fd ff       	call   0x4f0120
5110a8:	83 c4 04             	add    $0x4,%esp
5110ab:	50                   	push   %eax
5110ac:	56                   	push   %esi
5110ad:	e8 1e f0 fd ff       	call   0x4f00d0
5110b2:	83 c4 04             	add    $0x4,%esp
5110b5:	50                   	push   %eax
5110b6:	68 00 00 00 40       	push   $0x40000000
5110bb:	55                   	push   %ebp
5110bc:	53                   	push   %ebx
5110bd:	e8 ee e0 02 00       	call   0x53f1b0
5110c2:	ff 74 24 3c          	push   0x3c(%esp)
5110c6:	56                   	push   %esi
5110c7:	e8 94 f0 fd ff       	call   0x4f0160
5110cc:	83 c4 20             	add    $0x20,%esp
5110cf:	81 ef 00 00 00 40    	sub    $0x40000000,%edi
5110d5:	81 c3 00 00 00 40    	add    $0x40000000,%ebx
5110db:	81 c5 00 00 00 40    	add    $0x40000000,%ebp
5110e1:	83 6c 24 10 01       	subl   $0x1,0x10(%esp)
5110e6:	75 a8                	jne    0x511090
5110e8:	85 ff                	test   %edi,%edi
5110ea:	74 3b                	je     0x511127
5110ec:	56                   	push   %esi
5110ed:	e8 4e f0 fd ff       	call   0x4f0140
5110f2:	83 c4 04             	add    $0x4,%esp
5110f5:	89 44 24 24          	mov    %eax,0x24(%esp)
5110f9:	8d 44 24 24          	lea    0x24(%esp),%eax
5110fd:	50                   	push   %eax
5110fe:	56                   	push   %esi
5110ff:	e8 1c f0 fd ff       	call   0x4f0120
511104:	83 c4 04             	add    $0x4,%esp
511107:	50                   	push   %eax
511108:	56                   	push   %esi
511109:	e8 c2 ef fd ff       	call   0x4f00d0
51110e:	83 c4 04             	add    $0x4,%esp
511111:	50                   	push   %eax
511112:	57                   	push   %edi
511113:	55                   	push   %ebp
511114:	53                   	push   %ebx
511115:	e8 96 e0 02 00       	call   0x53f1b0
51111a:	ff 74 24 3c          	push   0x3c(%esp)
51111e:	56                   	push   %esi
51111f:	e8 3c f0 fd ff       	call   0x4f0160
511124:	83 c4 20             	add    $0x20,%esp
511127:	5f                   	pop    %edi
511128:	5e                   	pop    %esi
511129:	5d                   	pop    %ebp
51112a:	b8 01 00 00 00       	mov    $0x1,%eax
51112f:	5b                   	pop    %ebx
511130:	59                   	pop    %ecx
511131:	c3                   	ret
511132:	cc                   	int3
511133:	cc                   	int3
511134:	cc                   	int3
511135:	cc                   	int3
511136:	cc                   	int3
511137:	cc                   	int3
511138:	cc                   	int3
511139:	cc                   	int3
51113a:	cc                   	int3
51113b:	cc                   	int3
51113c:	cc                   	int3
51113d:	cc                   	int3
51113e:	cc                   	int3
51113f:	cc                   	int3
511140:	b8 04 00 00 00       	mov    $0x4,%eax
511145:	e8 66 06 0c 00       	call   0x5d17b0
51114a:	56                   	push   %esi
51114b:	8b 74 24 0c          	mov    0xc(%esp),%esi
51114f:	57                   	push   %edi
511150:	56                   	push   %esi
511151:	e8 7a ef fd ff       	call   0x4f00d0
511156:	8b f8                	mov    %eax,%edi
511158:	83 c4 04             	add    $0x4,%esp
51115b:	83 bf 80 00 00 00 00 	cmpl   $0x0,0x80(%edi)
511162:	74 28                	je     0x51118c
511164:	56                   	push   %esi
511165:	e8 b6 ef fd ff       	call   0x4f0120
51116a:	50                   	push   %eax
51116b:	8b 87 80 00 00 00    	mov    0x80(%edi),%eax
511171:	57                   	push   %edi
511172:	ff 74 24 28          	push   0x28(%esp)
511176:	ff 74 24 24          	push   0x24(%esp)
51117a:	ff 74 24 2c          	push   0x2c(%esp)
51117e:	ff d0                	call   *%eax
511180:	83 c4 18             	add    $0x18,%esp
511183:	b8 01 00 00 00       	mov    $0x1,%eax
511188:	5f                   	pop    %edi
511189:	5e                   	pop    %esi
51118a:	59                   	pop    %ecx
51118b:	c3                   	ret
51118c:	8b 7c 24 1c          	mov    0x1c(%esp),%edi
511190:	53                   	push   %ebx
511191:	8b 5c 24 1c          	mov    0x1c(%esp),%ebx
511195:	55                   	push   %ebp
511196:	8b 6c 24 1c          	mov    0x1c(%esp),%ebp
51119a:	81 ff 00 00 00 40    	cmp    $0x40000000,%edi
5111a0:	72 54                	jb     0x5111f6
5111a2:	8b c7                	mov    %edi,%eax
5111a4:	c1 e8 1e             	shr    $0x1e,%eax
5111a7:	89 44 24 10          	mov    %eax,0x10(%esp)
5111ab:	0f 1f 44 00 00       	nopl   0x0(%eax,%eax,1)
5111b0:	56                   	push   %esi
5111b1:	e8 9a 60 fd ff       	call   0x4e7250
5111b6:	83 c4 04             	add    $0x4,%esp
5111b9:	50                   	push   %eax
5111ba:	56                   	push   %esi
5111bb:	e8 60 ef fd ff       	call   0x4f0120
5111c0:	83 c4 04             	add    $0x4,%esp
5111c3:	50                   	push   %eax
5111c4:	56                   	push   %esi
5111c5:	e8 06 ef fd ff       	call   0x4f00d0
5111ca:	83 c4 04             	add    $0x4,%esp
5111cd:	50                   	push   %eax
5111ce:	68 00 00 00 40       	push   $0x40000000
5111d3:	55                   	push   %ebp
5111d4:	53                   	push   %ebx
5111d5:	e8 66 42 f0 ff       	call   0x415440
5111da:	83 c4 18             	add    $0x18,%esp
5111dd:	81 ef 00 00 00 40    	sub    $0x40000000,%edi
5111e3:	81 c3 00 00 00 40    	add    $0x40000000,%ebx
5111e9:	81 c5 00 00 00 40    	add    $0x40000000,%ebp
5111ef:	83 6c 24 10 01       	subl   $0x1,0x10(%esp)
5111f4:	75 ba                	jne    0x5111b0
5111f6:	85 ff                	test   %edi,%edi
5111f8:	74 29                	je     0x511223
5111fa:	56                   	push   %esi
5111fb:	e8 50 60 fd ff       	call   0x4e7250
511200:	83 c4 04             	add    $0x4,%esp
511203:	50                   	push   %eax
511204:	56                   	push   %esi
511205:	e8 16 ef fd ff       	call   0x4f0120
51120a:	83 c4 04             	add    $0x4,%esp
51120d:	50                   	push   %eax
51120e:	56                   	push   %esi
51120f:	e8 bc ee fd ff       	call   0x4f00d0
511214:	83 c4 04             	add    $0x4,%esp
511217:	50                   	push   %eax
511218:	57                   	push   %edi
511219:	55                   	push   %ebp
51121a:	53                   	push   %ebx
51121b:	e8 20 42 f0 ff       	call   0x415440
511220:	83 c4 18             	add    $0x18,%esp
511223:	5d                   	pop    %ebp
511224:	5b                   	pop    %ebx
511225:	5f                   	pop    %edi
511226:	b8 01 00 00 00       	mov    $0x1,%eax
51122b:	5e                   	pop    %esi
51122c:	59                   	pop    %ecx
51122d:	c3                   	ret
51122e:	cc                   	int3
51122f:	cc                   	int3
511230:	b8 04 00 00 00       	mov    $0x4,%eax
511235:	e8 76 05 0c 00       	call   0x5d17b0
51123a:	53                   	push   %ebx
51123b:	8b 5c 24 14          	mov    0x14(%esp),%ebx
51123f:	55                   	push   %ebp
511240:	8b 6c 24 14          	mov    0x14(%esp),%ebp
511244:	56                   	push   %esi
511245:	8b 74 24 14          	mov    0x14(%esp),%esi
511249:	57                   	push   %edi
51124a:	8b 7c 24 24          	mov    0x24(%esp),%edi
51124e:	81 ff 00 00 00 40    	cmp    $0x40000000,%edi
511254:	72 69                	jb     0x5112bf
511256:	8b c7                	mov    %edi,%eax
511258:	c1 e8 1e             	shr    $0x1e,%eax
51125b:	89 44 24 10          	mov    %eax,0x10(%esp)
51125f:	90                   	nop
511260:	56                   	push   %esi
511261:	e8 da ee fd ff       	call   0x4f0140
511266:	56                   	push   %esi