539f5d:	8b 40 1c             	mov    0x1c(%eax),%eax
539f60:	89 45 e8             	mov    %eax,-0x18(%ebp)
539f63:	8b 85 2c ff ff ff    	mov    -0xd4(%ebp),%eax
539f69:	c7 45 f0 00 00 00 00 	movl   $0x0,-0x10(%ebp)
539f70:	ff 70 10             	push   0x10(%eax)
539f73:	68 28 b3 6b 00       	push   $0x6bb328
539f78:	6a 01                	push   $0x1
539f7a:	57                   	push   %edi
539f7b:	e8 60 fc 00 00       	call   0x549be0
539f80:	8d 45 e4             	lea    -0x1c(%ebp),%eax
539f83:	50                   	push   %eax
539f84:	ff b5 2c ff ff ff    	push   -0xd4(%ebp)
539f8a:	57                   	push   %edi
539f8b:	e8 10 fb ff ff       	call   0x539aa0
539f90:	8b 95 18 ff ff ff    	mov    -0xe8(%ebp),%edx
539f96:	8b 85 2c ff ff ff    	mov    -0xd4(%ebp),%eax
539f9c:	8b 4a 10             	mov    0x10(%edx),%ecx
539f9f:	66 8b 40 02          	mov    0x2(%eax),%ax
539fa3:	66 89 41 2e          	mov    %ax,0x2e(%ecx)
539fa7:	ff 72 1c             	push   0x1c(%edx)
539faa:	8b 45 ec             	mov    -0x14(%ebp),%eax
539fad:	83 4a 28 10          	orl    $0x10,0x28(%edx)
539fb1:	53                   	push   %ebx
539fb2:	89 42 20             	mov    %eax,0x20(%edx)
539fb5:	e8 f6 86 00 00       	call   0x5426b0
539fba:	8d 46 ff             	lea    -0x1(%esi),%eax
539fbd:	50                   	push   %eax
539fbe:	53                   	push   %ebx
539fbf:	e8 9c 07 01 00       	call   0x54a760
539fc4:	83 c4 40             	add    $0x40,%esp
539fc7:	e9 0f 01 00 00       	jmp    0x53a0db
539fcc:	33 c0                	xor    %eax,%eax
539fce:	89 85 40 ff ff ff    	mov    %eax,-0xc0(%ebp)
539fd4:	8b 47 2c             	mov    0x2c(%edi),%eax
539fd7:	40                   	inc    %eax
539fd8:	50                   	push   %eax
539fd9:	6a 00                	push   $0x0
539fdb:	6a 45                	push   $0x45
539fdd:	89 47 2c             	mov    %eax,0x2c(%edi)
539fe0:	53                   	push   %ebx
539fe1:	89 46 1c             	mov    %eax,0x1c(%esi)
539fe4:	e8 f7 7a 00 00       	call   0x541ae0
539fe9:	83 c4 10             	add    $0x10,%esp
539fec:	89 85 18 ff ff ff    	mov    %eax,-0xe8(%ebp)
539ff2:	f6 46 28 08          	testb  $0x8,0x28(%esi)
539ff6:	8d 48 01             	lea    0x1(%eax),%ecx
539ff9:	89 4e 18             	mov    %ecx,0x18(%esi)
539ffc:	75 11                	jne    0x53a00f
539ffe:	6a 11                	push   $0x11
53a000:	53                   	push   %ebx
53a001:	e8 1a 7a 00 00       	call   0x541a20
53a006:	83 c4 08             	add    $0x8,%esp
53a009:	89 85 40 ff ff ff    	mov    %eax,-0xc0(%ebp)
53a00f:	8b 8d 48 ff ff ff    	mov    -0xb8(%ebp),%ecx
53a015:	56                   	push   %esi
53a016:	51                   	push   %ecx
53a017:	e8 44 e0 fc ff       	call   0x508060
53a01c:	83 c4 08             	add    $0x8,%esp
53a01f:	89 85 04 ff ff ff    	mov    %eax,-0xfc(%ebp)
53a025:	85 c0                	test   %eax,%eax
53a027:	74 2a                	je     0x53a053
53a029:	ff 70 2c             	push   0x2c(%eax)
53a02c:	ff 76 2c             	push   0x2c(%esi)
53a02f:	6a 62                	push   $0x62
53a031:	53                   	push   %ebx
53a032:	e8 a9 7a 00 00       	call   0x541ae0
53a037:	8b 85 04 ff ff ff    	mov    -0xfc(%ebp),%eax
53a03d:	83 c4 10             	add    $0x10,%esp
53a040:	8b 8d 2c ff ff ff    	mov    -0xd4(%ebp),%ecx
53a046:	8b 40 14             	mov    0x14(%eax),%eax
53a049:	66 8b 40 02          	mov    0x2(%eax),%ax
53a04d:	66 89 41 02          	mov    %ax,0x2(%ecx)
53a051:	eb 48                	jmp    0x53a09b
53a053:	8b 46 2c             	mov    0x2c(%esi),%eax
53a056:	89 45 e8             	mov    %eax,-0x18(%ebp)
53a059:	8b 85 2c ff ff ff    	mov    -0xd4(%ebp),%eax
53a05f:	c6 45 e4 0c          	movb   $0xc,-0x1c(%ebp)
53a063:	c7 45 f4 00 00 00 00 	movl   $0x0,-0xc(%ebp)
53a06a:	c7 45 ec 00 00 00 00 	movl   $0x0,-0x14(%ebp)
53a071:	c7 45 f0 00 00 00 00 	movl   $0x0,-0x10(%ebp)
53a078:	ff 70 10             	push   0x10(%eax)
53a07b:	68 38 b3 6b 00       	push   $0x6bb338
53a080:	6a 01                	push   $0x1
53a082:	57                   	push   %edi
53a083:	e8 58 fb 00 00       	call   0x549be0
53a088:	8d 45 e4             	lea    -0x1c(%ebp),%eax
53a08b:	50                   	push   %eax
53a08c:	ff b5 2c ff ff ff    	push   -0xd4(%ebp)
53a092:	57                   	push   %edi
53a093:	e8 08 fa ff ff       	call   0x539aa0
53a098:	83 c4 1c             	add    $0x1c,%esp
53a09b:	8b 85 2c ff ff ff    	mov    -0xd4(%ebp),%eax
53a0a1:	8b 4e 10             	mov    0x10(%esi),%ecx
53a0a4:	66 8b 40 02          	mov    0x2(%eax),%ax
53a0a8:	66 89 41 2e          	mov    %ax,0x2e(%ecx)
53a0ac:	8b 85 40 ff ff ff    	mov    -0xc0(%ebp),%eax
53a0b2:	85 c0                	test   %eax,%eax
53a0b4:	74 0a                	je     0x53a0c0
53a0b6:	50                   	push   %eax
53a0b7:	53                   	push   %ebx
53a0b8:	e8 a3 06 01 00       	call   0x54a760
53a0bd:	83 c4 08             	add    $0x8,%esp
53a0c0:	ff 76 1c             	push   0x1c(%esi)
53a0c3:	6a 41                	push   $0x41
53a0c5:	53                   	push   %ebx
53a0c6:	e8 b5 79 00 00       	call   0x541a80
53a0cb:	50                   	push   %eax
53a0cc:	ff b5 18 ff ff ff    	push   -0xe8(%ebp)
53a0d2:	53                   	push   %ebx
53a0d3:	e8 58 7e 00 00       	call   0x541f30
53a0d8:	83 c4 18             	add    $0x18,%esp
53a0db:	8b 85 3c ff ff ff    	mov    -0xc4(%ebp),%eax
53a0e1:	c7 47 1c 00 00 00 00 	movl   $0x0,0x1c(%edi)
53a0e8:	c6 47 13 00          	movb   $0x0,0x13(%edi)
53a0ec:	80 78 51 00          	cmpb   $0x0,0x51(%eax)
53a0f0:	0f 85 21 1d 00 00    	jne    0x53be17
53a0f6:	8b b5 38 ff ff ff    	mov    -0xc8(%ebp),%esi
53a0fc:	56                   	push   %esi
53a0fd:	e8 2e 23 00 00       	call   0x53c430
53a102:	8b 8d 48 ff ff ff    	mov    -0xb8(%ebp),%ecx
53a108:	83 c4 04             	add    $0x4,%esp
53a10b:	29 87 d0 00 00 00    	sub    %eax,0xd0(%edi)
53a111:	8b 85 24 ff ff ff    	mov    -0xdc(%ebp),%eax
53a117:	89 87 f0 00 00 00    	mov    %eax,0xf0(%edi)
53a11d:	eb 06                	jmp    0x53a125
53a11f:	8b b5 38 ff ff ff    	mov    -0xc8(%ebp),%esi
53a125:	8b 85 28 ff ff ff    	mov    -0xd8(%ebp),%eax
53a12b:	40                   	inc    %eax
53a12c:	89 85 28 ff ff ff    	mov    %eax,-0xd8(%ebp)
53a132:	3b 01                	cmp    (%ecx),%eax
53a134:	0f 8c 06 fd ff ff    	jl     0x539e40
53a13a:	8b 46 24             	mov    0x24(%esi),%eax
53a13d:	8b 4e 1c             	mov    0x1c(%esi),%ecx
53a140:	89 85 28 ff ff ff    	mov    %eax,-0xd8(%ebp)
53a146:	8b 46 28             	mov    0x28(%esi),%eax
53a149:	89 85 30 ff ff ff    	mov    %eax,-0xd0(%ebp)
53a14f:	8b 46 2c             	mov    0x2c(%esi),%eax
53a152:	89 85 18 ff ff ff    	mov    %eax,-0xe8(%ebp)
53a158:	8a 46 04             	mov    0x4(%esi),%al
53a15b:	24 01                	and    $0x1,%al
53a15d:	89 8d 20 ff ff ff    	mov    %ecx,-0xe0(%ebp)
53a163:	88 85 1f ff ff ff    	mov    %al,-0xe1(%ebp)
53a169:	88 45 f0             	mov    %al,-0x10(%ebp)
53a16c:	8b 46 04             	mov    0x4(%esi),%eax
53a16f:	24 09                	and    $0x9,%al
53a171:	3c 01                	cmp    $0x1,%al
53a173:	75 48                	jne    0x53a1bd
53a175:	6a ff                	push   $0xffffffff
53a177:	51                   	push   %ecx
53a178:	8b 8d 4c ff ff ff    	mov    -0xb4(%ebp),%ecx
53a17e:	51                   	push   %ecx
53a17f:	e8 ac d6 fe ff       	call   0x527830
53a184:	83 c4 0c             	add    $0xc,%esp
53a187:	85 c0                	test   %eax,%eax
53a189:	75 2c                	jne    0x53a1b7
53a18b:	39 46 44             	cmp    %eax,0x44(%esi)
53a18e:	75 27                	jne    0x53a1b7
53a190:	83 66 04 fe          	andl   $0xfffffffe,0x4(%esi)
53a194:	50                   	push   %eax
53a195:	8b 85 20 ff ff ff    	mov    -0xe0(%ebp),%eax
53a19b:	50                   	push   %eax
53a19c:	ff b5 3c ff ff ff    	push   -0xc4(%ebp)
53a1a2:	e8 19 d7 fe ff       	call   0x5278c0
53a1a7:	83 c4 0c             	add    $0xc,%esp
53a1aa:	89 85 30 ff ff ff    	mov    %eax,-0xd0(%ebp)
53a1b0:	83 4e 04 08          	orl    $0x8,0x4(%esi)
53a1b4:	89 46 28             	mov    %eax,0x28(%esi)
53a1b7:	8b 8d 20 ff ff ff    	mov    -0xe0(%ebp),%ecx
53a1bd:	8b 85 4c ff ff ff    	mov    -0xb4(%ebp),%eax
53a1c3:	85 c0                	test   %eax,%eax
53a1c5:	74 44                	je     0x53a20b
53a1c7:	ff 31                	push   (%ecx)
53a1c9:	6a 00                	push   $0x0
53a1cb:	50                   	push   %eax
53a1cc:	57                   	push   %edi
53a1cd:	e8 9e 5a ff ff       	call   0x52fc70
53a1d2:	8b 57 28             	mov    0x28(%edi),%edx
53a1d5:	6a f7                	push   $0xfffffff7
53a1d7:	50                   	push   %eax
53a1d8:	8b 85 20 ff ff ff    	mov    -0xe0(%ebp),%eax
53a1de:	8d 4a 01             	lea    0x1(%edx),%ecx
53a1e1:	89 95 78 ff ff ff    	mov    %edx,-0x88(%ebp)
53a1e7:	89 4f 28             	mov    %ecx,0x28(%edi)
53a1ea:	8b 8d 4c ff ff ff    	mov    -0xb4(%ebp),%ecx
53a1f0:	8b 00                	mov    (%eax),%eax
53a1f2:	6a 00                	push   $0x0
53a1f4:	8b 09                	mov    (%ecx),%ecx
53a1f6:	41                   	inc    %ecx
53a1f7:	03 c1                	add    %ecx,%eax
53a1f9:	50                   	push   %eax
53a1fa:	52                   	push   %edx
53a1fb:	6a 64                	push   $0x64
53a1fd:	53                   	push   %ebx
53a1fe:	e8 8d 79 00 00       	call   0x541b90
53a203:	83 c4 2c             	add    $0x2c,%esp
53a206:	89 45 84             	mov    %eax,-0x7c(%ebp)
53a209:	eb 07                	jmp    0x53a212
53a20b:	c7 45 84 ff ff ff ff 	movl   $0xffffffff,-0x7c(%ebp)
53a212:	8b 8d f8 fe ff ff    	mov    -0x108(%ebp),%ecx
53a218:	80 39 0c             	cmpb   $0xc,(%ecx)
53a21b:	75 16                	jne    0x53a233
53a21d:	8b 85 20 ff ff ff    	mov    -0xe0(%ebp),%eax
53a223:	ff 30                	push   (%eax)
53a225:	ff 71 04             	push   0x4(%ecx)
53a228:	6a 64                	push   $0x64
53a22a:	53                   	push   %ebx
53a22b:	e8 b0 78 00 00       	call   0x541ae0
53a230:	83 c4 10             	add    $0x10,%esp
53a233:	ff 4f 38             	decl   0x38(%edi)
53a236:	f7 46 04 00 40 00 00 	testl  $0x4000,0x4(%esi)
53a23d:	8b 47 38             	mov    0x38(%edi),%eax
53a240:	89 85 e0 fe ff ff    	mov    %eax,-0x120(%ebp)
53a246:	75 09                	jne    0x53a251
53a248:	b9 40 01 00 00       	mov    $0x140,%ecx
53a24d:	66 89 4e 02          	mov    %cx,0x2(%esi)
53a251:	50                   	push   %eax
53a252:	56                   	push   %esi
53a253:	57                   	push   %edi
53a254:	e8 97 10 fc ff       	call   0x4fb2f0
53a259:	83 c4 0c             	add    $0xc,%esp
53a25c:	83 7e 08 00          	cmpl   $0x0,0x8(%esi)
53a260:	75 17                	jne    0x53a279
53a262:	8b 45 84             	mov    -0x7c(%ebp),%eax
53a265:	85 c0                	test   %eax,%eax
53a267:	78 10                	js     0x53a279
53a269:	6a 6f                	push   $0x6f
53a26b:	50                   	push   %eax
53a26c:	53                   	push   %ebx
53a26d:	e8 7e 7c 00 00       	call   0x541ef0
53a272:	83 c4 0c             	add    $0xc,%esp
53a275:	80 4d 90 01          	orb    $0x1,-0x70(%ebp)
53a279:	f6 46 04 01          	testb  $0x1,0x4(%esi)
53a27d:	74 5b                	je     0x53a2da
53a27f:	8b 77 28             	mov    0x28(%edi),%esi
53a282:	6a f7                	push   $0xfffffff7
53a284:	6a 00                	push   $0x0
53a286:	6a 00                	push   $0x0
53a288:	8d 46 01             	lea    0x1(%esi),%eax
53a28b:	89 75 f4             	mov    %esi,-0xc(%ebp)
53a28e:	89 47 28             	mov    %eax,0x28(%edi)
53a291:	8b 85 38 ff ff ff    	mov    -0xc8(%ebp),%eax
53a297:	ff 70 1c             	push   0x1c(%eax)
53a29a:	57                   	push   %edi
53a29b:	e8 d0 59 ff ff       	call   0x52fc70
53a2a0:	83 c4 10             	add    $0x10,%esp
53a2a3:	50                   	push   %eax
53a2a4:	6a 00                	push   $0x0
53a2a6:	6a 00                	push   $0x0
53a2a8:	56                   	push   %esi
53a2a9:	6a 64                	push   $0x64
53a2ab:	53                   	push   %ebx
53a2ac:	e8 df 78 00 00       	call   0x541b90
53a2b1:	89 45 f8             	mov    %eax,-0x8(%ebp)
53a2b4:	83 c4 1c             	add    $0x1c,%esp
53a2b7:	8b 43 6c             	mov    0x6c(%ebx),%eax
53a2ba:	85 c0                	test   %eax,%eax
53a2bc:	7e 10                	jle    0x53a2ce
53a2be:	8d 0c 80             	lea    (%eax,%eax,4),%ecx
53a2c1:	ba 08 00 00 00       	mov    $0x8,%edx
53a2c6:	8b 43 68             	mov    0x68(%ebx),%eax
53a2c9:	66 89 54 88 ee       	mov    %dx,-0x12(%eax,%ecx,4)
53a2ce:	8b b5 38 ff ff ff    	mov    -0xc8(%ebp),%esi
53a2d4:	c6 45 f1 03          	movb   $0x3,-0xf(%ebp)
53a2d8:	eb 04                	jmp    0x53a2de
53a2da:	c6 45 f1 00          	movb   $0x0,-0xf(%ebp)
53a2de:	83 bd 34 ff ff ff 00 	cmpl   $0x0,-0xcc(%ebp)
53a2e5:	8b 95 30 ff ff ff    	mov    -0xd0(%ebp),%edx
53a2eb:	0f 85 f9 01 00 00    	jne    0x53a4ea
53a2f1:	85 d2                	test   %edx,%edx
53a2f3:	0f 85 f1 01 00 00    	jne    0x53a4ea
53a2f9:	33 c9                	xor    %ecx,%ecx
53a2fb:	b8 00 01 00 00       	mov    $0x100,%eax
53a300:	38 8d 1f ff ff ff    	cmp    %cl,-0xe1(%ebp)
53a306:	ba 00 40 00 00       	mov    $0x4000,%edx
53a30b:	0f 45 c8             	cmovne %eax,%ecx
53a30e:	66 8b 46 04          	mov    0x4(%esi),%ax
53a312:	66 23 c2             	and    %dx,%ax
53a315:	66 0b c8             	or     %ax,%cx
53a318:	0f b7 c1             	movzwl %cx,%eax
53a31b:	89 85 40 ff ff ff    	mov    %eax,-0xc0(%ebp)
53a321:	8b 46 44             	mov    0x44(%esi),%eax
53a324:	89 85 34 ff ff ff    	mov    %eax,-0xcc(%ebp)
53a32a:	85 c0                	test   %eax,%eax
53a32c:	74 0a                	je     0x53a338
53a32e:	56                   	push   %esi
53a32f:	57                   	push   %edi
53a330:	e8 1b 9f 01 00       	call   0x554250
53a335:	83 c4 08             	add    $0x8,%esp
53a338:	0f bf 46 02          	movswl 0x2(%esi),%eax
53a33c:	8b 8d 48 ff ff ff    	mov    -0xb8(%ebp),%ecx
53a342:	50                   	push   %eax
53a343:	ff b5 40 ff ff ff    	push   -0xc0(%ebp)
53a349:	ff 76 1c             	push   0x1c(%esi)
53a34c:	ff b5 4c ff ff ff    	push   -0xb4(%ebp)
53a352:	ff b5 28 ff ff ff    	push   -0xd8(%ebp)
53a358:	51                   	push   %ecx
53a359:	57                   	push   %edi
53a35a:	e8 21 5c 01 00       	call   0x54ff80
53a35f:	8b c8                	mov    %eax,%ecx
53a361:	83 c4 1c             	add    $0x1c,%esp
53a364:	89 8d 24 ff ff ff    	mov    %ecx,-0xdc(%ebp)
53a36a:	85 c9                	test   %ecx,%ecx
53a36c:	0f 84 6f fa ff ff    	je     0x539de1
53a372:	0f b7 41 34          	movzwl 0x34(%ecx),%eax
53a376:	66 3b 46 02          	cmp    0x2(%esi),%ax
53a37a:	7d 04                	jge    0x53a380
53a37c:	66 89 46 02          	mov    %ax,0x2(%esi)
53a380:	80 bd 1f ff ff ff 00 	cmpb   $0x0,-0xe1(%ebp)
53a387:	74 18                	je     0x53a3a1
53a389:	8a 49 2f             	mov    0x2f(%ecx),%cl
53a38c:	0f b6 55 f1          	movzbl -0xf(%ebp),%edx
53a390:	84 c9                	test   %cl,%cl
53a392:	0f b6 c1             	movzbl %cl,%eax
53a395:	8b 8d 24 ff ff ff    	mov    -0xdc(%ebp),%ecx
53a39b:	0f 45 d0             	cmovne %eax,%edx
53a39e:	88 55 f1             	mov    %dl,-0xf(%ebp)
53a3a1:	8b 95 4c ff ff ff    	mov    -0xb4(%ebp),%edx
53a3a7:	85 d2                	test   %edx,%edx
53a3a9:	74 39                	je     0x53a3e4
53a3ab:	f6 41 30 04          	testb  $0x4,0x30(%ecx)
53a3af:	0f be 41 2d          	movsbl 0x2d(%ecx),%eax
53a3b3:	89 85 74 ff ff ff    	mov    %eax,-0x8c(%ebp)
53a3b9:	75 05                	jne    0x53a3c0
53a3bb:	8b 41 1c             	mov    0x1c(%ecx),%eax
53a3be:	eb 0e                	jmp    0x53a3ce
53a3c0:	0f b6 41 2c          	movzbl 0x2c(%ecx),%eax
53a3c4:	6b c0 58             	imul   $0x58,%eax,%eax
53a3c7:	8b 84 08 a8 02 00 00 	mov    0x2a8(%eax,%ecx,1),%eax
53a3ce:	89 45 8c             	mov    %eax,-0x74(%ebp)
53a3d1:	33 c9                	xor    %ecx,%ecx
53a3d3:	8b 85 74 ff ff ff    	mov    -0x8c(%ebp),%eax
53a3d9:	3b 02                	cmp    (%edx),%eax
53a3db:	0f 44 d1             	cmove  %ecx,%edx
53a3de:	89 95 70 ff ff ff    	mov    %edx,-0x90(%ebp)
53a3e4:	8b 45 84             	mov    -0x7c(%ebp),%eax
53a3e7:	85 c0                	test   %eax,%eax
53a3e9:	78 0e                	js     0x53a3f9
53a3eb:	85 d2                	test   %edx,%edx
53a3ed:	75 0a                	jne    0x53a3f9
53a3ef:	50                   	push   %eax
53a3f0:	53                   	push   %ebx
53a3f1:	e8 5a 7c 00 00       	call   0x542050
53a3f6:	83 c4 08             	add    $0x8,%esp
53a3f9:	83 bd 34 ff ff ff 00 	cmpl   $0x0,-0xcc(%ebp)
53a400:	0f 84 ab 00 00 00    	je     0x53a4b1
53a406:	8b 5f 38             	mov    0x38(%edi),%ebx
53a409:	ff 47 2c             	incl   0x2c(%edi)
53a40c:	8d 73 ff             	lea    -0x1(%ebx),%esi
53a40f:	83 eb 02             	sub    $0x2,%ebx
53a412:	56                   	push   %esi