51fdf2:	83 c4 0c             	add    $0xc,%esp
51fdf5:	85 f6                	test   %esi,%esi
51fdf7:	0f 84 d9 00 00 00    	je     0x51fed6
51fdfd:	53                   	push   %ebx
51fdfe:	57                   	push   %edi
51fdff:	6a 34                	push   $0x34
51fe01:	6a 00                	push   $0x0
51fe03:	56                   	push   %esi
51fe04:	e8 f7 3b 0c 00       	call   0x5e3a00
51fe09:	8b 55 14             	mov    0x14(%ebp),%edx
51fe0c:	83 c8 ff             	or     $0xffffffff,%eax
51fe0f:	66 89 46 22          	mov    %ax,0x22(%esi)
51fe13:	83 c4 0c             	add    $0xc,%esp
51fe16:	8b 45 10             	mov    0x10(%ebp),%eax
51fe19:	c6 06 a4             	movb   $0xa4,(%esi)
51fe1c:	c7 46 18 01 00 00 00 	movl   $0x1,0x18(%esi)
51fe23:	8d 0c c0             	lea    (%eax,%eax,8),%ecx
51fe26:	8b 45 0c             	mov    0xc(%ebp),%eax
51fe29:	8b 5c c8 18          	mov    0x18(%eax,%ecx,8),%ebx
51fe2d:	8d 3c c8             	lea    (%eax,%ecx,8),%edi
51fe30:	89 5e 2c             	mov    %ebx,0x2c(%esi)
51fe33:	8b 47 34             	mov    0x34(%edi),%eax
51fe36:	89 46 1c             	mov    %eax,0x1c(%esi)
51fe39:	0f bf 43 28          	movswl 0x28(%ebx),%eax
51fe3d:	3b c2                	cmp    %edx,%eax
51fe3f:	75 0e                	jne    0x51fe4f
51fe41:	83 c8 ff             	or     $0xffffffff,%eax
51fe44:	5f                   	pop    %edi
51fe45:	66 89 46 20          	mov    %ax,0x20(%esi)
51fe49:	8b c6                	mov    %esi,%eax
51fe4b:	5b                   	pop    %ebx
51fe4c:	5e                   	pop    %esi
51fe4d:	5d                   	pop    %ebp
51fe4e:	c3                   	ret
51fe4f:	66 89 56 20          	mov    %dx,0x20(%esi)
51fe53:	f6 43 24 60          	testb  $0x60,0x24(%ebx)
51fe57:	74 53                	je     0x51feac
51fe59:	8b 43 04             	mov    0x4(%ebx),%eax
51fe5c:	8d 0c 92             	lea    (%edx,%edx,4),%ecx
51fe5f:	f6 44 88 10 60       	testb  $0x60,0x10(%eax,%ecx,4)
51fe64:	74 46                	je     0x51feac
51fe66:	0f b7 43 2a          	movzwl 0x2a(%ebx),%eax
51fe6a:	66 83 f8 40          	cmp    $0x40,%ax
51fe6e:	7c 13                	jl     0x51fe83
51fe70:	83 c9 ff             	or     $0xffffffff,%ecx
51fe73:	8b c6                	mov    %esi,%eax
51fe75:	83 ca ff             	or     $0xffffffff,%edx
51fe78:	89 4f 40             	mov    %ecx,0x40(%edi)
51fe7b:	89 57 44             	mov    %edx,0x44(%edi)
51fe7e:	5f                   	pop    %edi
51fe7f:	5b                   	pop    %ebx
51fe80:	5e                   	pop    %esi
51fe81:	5d                   	pop    %ebp
51fe82:	c3                   	ret
51fe83:	33 c9                	xor    %ecx,%ecx
51fe85:	98                   	cwtl
51fe86:	0f ab c1             	bts    %eax,%ecx
51fe89:	33 d2                	xor    %edx,%edx
51fe8b:	83 f8 20             	cmp    $0x20,%eax
51fe8e:	0f 43 d1             	cmovae %ecx,%edx
51fe91:	33 ca                	xor    %edx,%ecx
51fe93:	83 f8 40             	cmp    $0x40,%eax
51fe96:	8b c6                	mov    %esi,%eax
51fe98:	0f 43 d1             	cmovae %ecx,%edx
51fe9b:	83 c1 ff             	add    $0xffffffff,%ecx
51fe9e:	89 4f 40             	mov    %ecx,0x40(%edi)
51fea1:	83 d2 ff             	adc    $0xffffffff,%edx
51fea4:	89 57 44             	mov    %edx,0x44(%edi)
51fea7:	5f                   	pop    %edi
51fea8:	5b                   	pop    %ebx
51fea9:	5e                   	pop    %esi
51feaa:	5d                   	pop    %ebp
51feab:	c3                   	ret
51feac:	83 fa 40             	cmp    $0x40,%edx
51feaf:	b8 3f 00 00 00       	mov    $0x3f,%eax
51feb4:	0f 4d d0             	cmovge %eax,%edx
51feb7:	33 c0                	xor    %eax,%eax
51feb9:	0f ab d0             	bts    %edx,%eax
51febc:	33 c9                	xor    %ecx,%ecx
51febe:	83 fa 20             	cmp    $0x20,%edx
51fec1:	0f 43 c8             	cmovae %eax,%ecx
51fec4:	33 c1                	xor    %ecx,%eax
51fec6:	83 fa 40             	cmp    $0x40,%edx
51fec9:	0f 43 c8             	cmovae %eax,%ecx
51fecc:	09 47 40             	or     %eax,0x40(%edi)
51fecf:	09 4f 44             	or     %ecx,0x44(%edi)
51fed2:	8b c6                	mov    %esi,%eax
51fed4:	5f                   	pop    %edi
51fed5:	5b                   	pop    %ebx
51fed6:	5e                   	pop    %esi
51fed7:	5d                   	pop    %ebp
51fed8:	c3                   	ret
51fed9:	cc                   	int3
51feda:	cc                   	int3
51fedb:	cc                   	int3
51fedc:	cc                   	int3
51fedd:	cc                   	int3
51fede:	cc                   	int3
51fedf:	cc                   	int3
51fee0:	55                   	push   %ebp
51fee1:	8b ec                	mov    %esp,%ebp
51fee3:	83 ec 24             	sub    $0x24,%esp
51fee6:	8b 55 08             	mov    0x8(%ebp),%edx
51fee9:	53                   	push   %ebx
51feea:	56                   	push   %esi
51feeb:	57                   	push   %edi
51feec:	8b 9a e4 00 00 00    	mov    0xe4(%edx),%ebx
51fef2:	8b 0a                	mov    (%edx),%ecx
51fef4:	89 4d fc             	mov    %ecx,-0x4(%ebp)
51fef7:	89 5d f4             	mov    %ebx,-0xc(%ebp)
51fefa:	85 db                	test   %ebx,%ebx
51fefc:	0f 84 25 04 00 00    	je     0x520327
51ff02:	80 ba c8 00 00 00 01 	cmpb   $0x1,0xc8(%edx)
51ff09:	0f 84 18 04 00 00    	je     0x520327
51ff0f:	8b 75 0c             	mov    0xc(%ebp),%esi
51ff12:	8b 7d 14             	mov    0x14(%ebp),%edi
51ff15:	85 f6                	test   %esi,%esi
51ff17:	75 3c                	jne    0x51ff55
51ff19:	0f bf 43 2a          	movswl 0x2a(%ebx),%eax
51ff1d:	83 e8 01             	sub    $0x1,%eax
51ff20:	0f 88 15 04 00 00    	js     0x52033b
51ff26:	85 ff                	test   %edi,%edi
51ff28:	74 24                	je     0x51ff4e
51ff2a:	83 3f 01             	cmpl   $0x1,(%edi)
51ff2d:	74 1f                	je     0x51ff4e
51ff2f:	ff 75 10             	push   0x10(%ebp)
51ff32:	8d 0c 80             	lea    (%eax,%eax,4),%ecx
51ff35:	8b 43 04             	mov    0x4(%ebx),%eax
51ff38:	ff 34 88             	push   (%eax,%ecx,4)
51ff3b:	68 e4 a2 6b 00       	push   $0x6ba2e4
51ff40:	52                   	push   %edx
51ff41:	e8 1a 33 00 00       	call   0x523260
51ff46:	83 c4 10             	add    $0x10,%esp
51ff49:	e9 ed 03 00 00       	jmp    0x52033b
51ff4e:	ba 01 00 00 00       	mov    $0x1,%edx
51ff53:	eb 22                	jmp    0x51ff77
51ff55:	85 ff                	test   %edi,%edi
51ff57:	74 1c                	je     0x51ff75
51ff59:	8b 07                	mov    (%edi),%eax
51ff5b:	3b 06                	cmp    (%esi),%eax
51ff5d:	74 16                	je     0x51ff75
51ff5f:	68 28 a3 6b 00       	push   $0x6ba328
51ff64:	52                   	push   %edx
51ff65:	e8 f6 32 00 00       	call   0x523260
51ff6a:	8b 4d fc             	mov    -0x4(%ebp),%ecx
51ff6d:	83 c4 08             	add    $0x8,%esp
51ff70:	e9 b5 03 00 00       	jmp    0x52032a
51ff75:	8b 16                	mov    (%esi),%edx
51ff77:	8b 5d 10             	mov    0x10(%ebp),%ebx
51ff7a:	8b 45 14             	mov    0x14(%ebp),%eax
51ff7d:	89 55 f8             	mov    %edx,-0x8(%ebp)
51ff80:	8b 7b 04             	mov    0x4(%ebx),%edi
51ff83:	83 c7 25             	add    $0x25,%edi
51ff86:	8d 3c d7             	lea    (%edi,%edx,8),%edi
51ff89:	85 c0                	test   %eax,%eax
51ff8b:	74 33                	je     0x51ffc0
51ff8d:	8b 30                	mov    (%eax),%esi
51ff8f:	85 f6                	test   %esi,%esi
51ff91:	7e 2d                	jle    0x51ffc0
51ff93:	8d 50 08             	lea    0x8(%eax),%edx
51ff96:	8b 0a                	mov    (%edx),%ecx
51ff98:	85 c9                	test   %ecx,%ecx
51ff9a:	74 13                	je     0x51ffaf
51ff9c:	8d 59 01             	lea    0x1(%ecx),%ebx
51ff9f:	90                   	nop
51ffa0:	8a 01                	mov    (%ecx),%al
51ffa2:	41                   	inc    %ecx
51ffa3:	84 c0                	test   %al,%al
51ffa5:	75 f9                	jne    0x51ffa0
51ffa7:	2b cb                	sub    %ebx,%ecx
51ffa9:	81 e1 ff ff ff 3f    	and    $0x3fffffff,%ecx
51ffaf:	47                   	inc    %edi
51ffb0:	83 c2 14             	add    $0x14,%edx
51ffb3:	03 f9                	add    %ecx,%edi
51ffb5:	83 ee 01             	sub    $0x1,%esi
51ffb8:	75 dc                	jne    0x51ff96
51ffba:	8b 5d 10             	mov    0x10(%ebp),%ebx
51ffbd:	8b 4d fc             	mov    -0x4(%ebp),%ecx
51ffc0:	8b c7                	mov    %edi,%eax
51ffc2:	99                   	cltd
51ffc3:	8b f0                	mov    %eax,%esi
51ffc5:	52                   	push   %edx
51ffc6:	56                   	push   %esi
51ffc7:	85 c9                	test   %ecx,%ecx
51ffc9:	74 10                	je     0x51ffdb
51ffcb:	51                   	push   %ecx
51ffcc:	e8 0f 14 00 00       	call   0x5213e0
51ffd1:	8b f8                	mov    %eax,%edi
51ffd3:	83 c4 0c             	add    $0xc,%esp
51ffd6:	89 7d ec             	mov    %edi,-0x14(%ebp)
51ffd9:	eb 0d                	jmp    0x51ffe8
51ffdb:	e8 80 0f 01 00       	call   0x530f60
51ffe0:	83 c4 08             	add    $0x8,%esp
51ffe3:	89 45 ec             	mov    %eax,-0x14(%ebp)
51ffe6:	8b f8                	mov    %eax,%edi
51ffe8:	85 ff                	test   %edi,%edi
51ffea:	0f 84 34 03 00 00    	je     0x520324
51fff0:	56                   	push   %esi
51fff1:	6a 00                	push   $0x0
51fff3:	57                   	push   %edi
51fff4:	e8 07 3a 0c 00       	call   0x5e3a00
51fff9:	8b 45 f4             	mov    -0xc(%ebp),%eax
51fffc:	83 c4 0c             	add    $0xc,%esp
51ffff:	89 07                	mov    %eax,(%edi)
520001:	8b 40 10             	mov    0x10(%eax),%eax
520004:	89 47 04             	mov    %eax,0x4(%edi)
520007:	8b 45 f8             	mov    -0x8(%ebp),%eax
52000a:	8d 34 c5 24 00 00 00 	lea    0x24(,%eax,8),%esi
520011:	8b 45 08             	mov    0x8(%ebp),%eax
520014:	03 f7                	add    %edi,%esi
520016:	89 77 08             	mov    %esi,0x8(%edi)
520019:	80 b8 c8 00 00 00 02 	cmpb   $0x2,0xc8(%eax)
520020:	72 0b                	jb     0x52002d
520022:	53                   	push   %ebx
520023:	56                   	push   %esi
520024:	50                   	push   %eax
520025:	e8 26 7e 01 00       	call   0x537e50
52002a:	83 c4 0c             	add    $0xc,%esp
52002d:	ff 73 04             	push   0x4(%ebx)
520030:	ff 33                	push   (%ebx)
520032:	56                   	push   %esi
520033:	e8 c8 2e 0c 00       	call   0x5e2f00
520038:	8b 43 04             	mov    0x4(%ebx),%eax
52003b:	56                   	push   %esi
52003c:	c6 04 06 00          	movb   $0x0,(%esi,%eax,1)
520040:	e8 9b 24 00 00       	call   0x5224e0
520045:	8b 53 04             	mov    0x4(%ebx),%edx
520048:	83 c4 10             	add    $0x10,%esp
52004b:	8b 4d 0c             	mov    0xc(%ebp),%ecx
52004e:	42                   	inc    %edx
52004f:	8b 45 f8             	mov    -0x8(%ebp),%eax
520052:	03 d6                	add    %esi,%edx
520054:	89 55 e0             	mov    %edx,-0x20(%ebp)
520057:	89 47 14             	mov    %eax,0x14(%edi)
52005a:	85 c9                	test   %ecx,%ecx
52005c:	75 41                	jne    0x52009f
52005e:	8b 45 f4             	mov    -0xc(%ebp),%eax
520061:	0f bf 40 2a          	movswl 0x2a(%eax),%eax
520065:	48                   	dec    %eax
520066:	89 47 24             	mov    %eax,0x24(%edi)
520069:	8b 45 f8             	mov    -0x8(%ebp),%eax
52006c:	8b 7d 14             	mov    0x14(%ebp),%edi
52006f:	85 ff                	test   %edi,%edi
520071:	0f 84 96 01 00 00    	je     0x52020d
520077:	85 c0                	test   %eax,%eax
520079:	0f 8e 8e 01 00 00    	jle    0x52020d
52007f:	8b 5d ec             	mov    -0x14(%ebp),%ebx
520082:	83 c7 08             	add    $0x8,%edi
520085:	83 c3 28             	add    $0x28,%ebx
520088:	0f 1f 84 00 00 00 00 	nopl   0x0(%eax,%eax,1)
52008f:	00
520090:	8b 37                	mov    (%edi),%esi
520092:	85 f6                	test   %esi,%esi
520094:	0f 85 fe 00 00 00    	jne    0x520198
52009a:	e9 10 01 00 00       	jmp    0x5201af
52009f:	33 db                	xor    %ebx,%ebx
5200a1:	89 5d e8             	mov    %ebx,-0x18(%ebp)
5200a4:	85 c0                	test   %eax,%eax
5200a6:	7e c4                	jle    0x52006c
5200a8:	8d 57 24             	lea    0x24(%edi),%edx
5200ab:	8d 71 08             	lea    0x8(%ecx),%esi
5200ae:	89 55 e4             	mov    %edx,-0x1c(%ebp)
5200b1:	89 75 f0             	mov    %esi,-0x10(%ebp)
5200b4:	8b 4d f4             	mov    -0xc(%ebp),%ecx
5200b7:	33 ff                	xor    %edi,%edi
5200b9:	89 7d dc             	mov    %edi,-0x24(%ebp)
5200bc:	0f b7 41 2a          	movzwl 0x2a(%ecx),%eax
5200c0:	66 3b f8             	cmp    %ax,%di
5200c3:	7d 52                	jge    0x520117
5200c5:	8b 59 04             	mov    0x4(%ecx),%ebx
5200c8:	8b 36                	mov    (%esi),%esi
5200ca:	8b 13                	mov    (%ebx),%edx
5200cc:	2b f2                	sub    %edx,%esi
5200ce:	66 90                	xchg   %ax,%ax
5200d0:	0f b6 02             	movzbl (%edx),%eax
5200d3:	0f b6 0c 16          	movzbl (%esi,%edx,1),%ecx
5200d7:	3b c1                	cmp    %ecx,%eax
5200d9:	75 0e                	jne    0x5200e9
5200db:	85 c0                	test   %eax,%eax
5200dd:	75 1c                	jne    0x5200fb
5200df:	8b 55 e4             	mov    -0x1c(%ebp),%edx
5200e2:	8b 75 f0             	mov    -0x10(%ebp),%esi
5200e5:	89 3a                	mov    %edi,(%edx)
5200e7:	eb 2b                	jmp    0x520114
5200e9:	0f b6 89 20 2a 6b 00 	movzbl 0x6b2a20(%ecx),%ecx
5200f0:	0f b6 80 20 2a 6b 00 	movzbl 0x6b2a20(%eax),%eax
5200f7:	2b c1                	sub    %ecx,%eax
5200f9:	75 03                	jne    0x5200fe
5200fb:	42                   	inc    %edx
5200fc:	eb d2                	jmp    0x5200d0
5200fe:	8b 4d f4             	mov    -0xc(%ebp),%ecx
520101:	47                   	inc    %edi
520102:	8b 75 f0             	mov    -0x10(%ebp),%esi
520105:	83 c3 14             	add    $0x14,%ebx
520108:	0f b7 41 2a          	movzwl 0x2a(%ecx),%eax
52010c:	98                   	cwtl
52010d:	3b f8                	cmp    %eax,%edi
52010f:	7c b7                	jl     0x5200c8
520111:	8b 55 e4             	mov    -0x1c(%ebp),%edx
520114:	8b 5d e8             	mov    -0x18(%ebp),%ebx
520117:	8b 45 f4             	mov    -0xc(%ebp),%eax
52011a:	0f bf 40 2a          	movswl 0x2a(%eax),%eax
52011e:	3b f8                	cmp    %eax,%edi
520120:	7d 50                	jge    0x520172
520122:	8b 45 08             	mov    0x8(%ebp),%eax
520125:	80 b8 c8 00 00 00 02 	cmpb   $0x2,0xc8(%eax)
52012c:	72 21                	jb     0x52014f
52012e:	8b 80 10 01 00 00    	mov    0x110(%eax),%eax
520134:	8b 0e                	mov    (%esi),%ecx
520136:	85 c0                	test   %eax,%eax
520138:	74 15                	je     0x52014f
52013a:	66 0f 1f 44 00 00    	nopw   0x0(%eax,%eax,1)
520140:	39 08                	cmp    %ecx,(%eax)
520142:	74 09                	je     0x52014d
520144:	8b 40 0c             	mov    0xc(%eax),%eax
520147:	85 c0                	test   %eax,%eax
520149:	75 f5                	jne    0x520140
52014b:	eb 02                	jmp    0x52014f
52014d:	89 10                	mov    %edx,(%eax)
52014f:	8b 45 f8             	mov    -0x8(%ebp),%eax
520152:	43                   	inc    %ebx
520153:	83 c6 14             	add    $0x14,%esi
520156:	89 5d e8             	mov    %ebx,-0x18(%ebp)
520159:	83 c2 08             	add    $0x8,%edx
52015c:	89 75 f0             	mov    %esi,-0x10(%ebp)
52015f:	89 55 e4             	mov    %edx,-0x1c(%ebp)
520162:	3b d8                	cmp    %eax,%ebx
520164:	0f 8c 4a ff ff ff    	jl     0x5200b4
52016a:	8b 55 e0             	mov    -0x20(%ebp),%edx
52016d:	e9 fa fe ff ff       	jmp    0x52006c
520172:	8b 4d 0c             	mov    0xc(%ebp),%ecx
520175:	8d 04 9b             	lea    (%ebx,%ebx,4),%eax
520178:	ff 74 81 08          	push   0x8(%ecx,%eax,4)
52017c:	8b 45 08             	mov    0x8(%ebp),%eax
52017f:	68 88 a3 6b 00       	push   $0x6ba388
520184:	50                   	push   %eax
520185:	e8 d6 30 00 00       	call   0x523260
52018a:	8b 5d ec             	mov    -0x14(%ebp),%ebx
52018d:	83 c4 0c             	add    $0xc,%esp
520190:	8b 4d fc             	mov    -0x4(%ebp),%ecx
520193:	e9 ec 00 00 00       	jmp    0x520284
520198:	8d 4e 01             	lea    0x1(%esi),%ecx
52019b:	0f 1f 44 00 00       	nopl   0x0(%eax,%eax,1)
5201a0:	8a 06                	mov    (%esi),%al
5201a2:	46                   	inc    %esi
5201a3:	84 c0                	test   %al,%al
5201a5:	75 f9                	jne    0x5201a0
5201a7:	2b f1                	sub    %ecx,%esi
5201a9:	81 e6 ff ff ff 3f    	and    $0x3fffffff,%esi
5201af:	8b 45 08             	mov    0x8(%ebp),%eax