Function at 0x51ffb0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x44
mov eax, dword [esp + 0x5c]
xor ecx, ecx
mov dword [esp + 0x14], ecx
xor edx, edx
mov dword [esp + 8], ecx
push ebx
mov ecx, dword [eax + 0x7c]
mov eax, ecx
shr eax, 0x13
and eax, 1
shr ecx, 0x11
push ebp
mov ebp, dword [esp + 0x5c]
and ecx, 1
mov dword [esp + 0xc], eax
push esi
push edi
mov edi, dword [esp + 0x68]
lea eax, [ebp - 0x38]
mov dword [esp + 0x48], eax
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x1c], edx
mov eax, dword [edi + 0x18]
mov ecx, dword [edi + 0x1c]
mov dword [esp + 0x10], eax
mov eax, ecx
div ebp
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x5c]
sub ecx, edx
mov dword [esp + 0x38], ecx
add ecx, eax
mov dword [esp + 0x3c], ecx
xor ebx, ebx
mov ecx, dword [esp + 0x10]
mov dword [eax + 0x18], 0
mov dword [eax + 0x48], 0
mov dword [eax + 0x44], 0xffffffff
mov eax, dword [esp + 0x58]
mov dword [ecx + 0x38], eax
mov dword [ecx + 0x3c], eax
mov eax, ecx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x34], 0xfc00
mov dword [esp + 0x30], 0xdc00
mov dword [eax + 0x40], 0
mov dword [eax + 0x50], 0
mov dword [eax + 0x4c], 0xffffffff
mov dword [eax + 0x1c], ebx
mov dword [eax], esi
mov dword [eax + 0x10], ebp
test ebx, ebx
je 0x520095
sub eax, dword [edi + 0x18]
mov ecx, dword [esp + 0x10]
mov dword [ecx + 0x4c], eax
mov eax, ebx
and eax, 0xffff0000
cmp eax, 0x40000
jne 0x52008f
movzx eax, bx
mov dword [ecx + 0x44], eax
xor eax, eax
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x6c]
mov ebp, dword [esp + 0x6c]
mov edx, dword [eax + 0x18]
mov ecx, dword [eax + 0x10]
lea eax, [edx + 1]
mov dword [ebp + 0x18], eax
cmp edx, ecx
jae 0x529ec2
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x18]
cmp eax, dword [ebp + 0x14]
jb 0x5200e8
pop edi
pop esi
pop ebp
mov eax, 0xffffffcb
pop ebx
add esp, 0x44
ret
mov edi, dword [esp + 0x68]
mov ebp, eax
jmp 0x5200f0
mov ebp, dword [esp + 0x6c]
jmp 0x5200e8
mov ecx, dword [esp + 0x10]
mov dword [ecx], eax
mov edi, dword [esp + 0x68]
mov edx, dword [esp + 0x14]
nop dword [eax]
mov eax, dword [esp + 0x10]
mov esi, dword [eax]
mov bl, byte [esi]
mov byte [eax + 0x31], bl
movzx eax, bl
mov byte [esp + 0x58], bl
cmp eax, 0xa6
ja case.0x527c3c.15
movzx eax, byte [eax + 0x52a02c]
jmp dword [eax*4 + 0x529ed0]
mov eax, dword [esp + 0x10]
cmp dword [eax + 0x44], 0xffffffff
jne 0x520192
movzx edi, word [esi + 2]
mov eax, dword [eax + 0x4c]
mov esi, dword [esp + 0x68]
cmp eax, 0xffffffff
je case.0x527c3c.15
mov ecx, dword [esi + 0x18]
add ecx, eax
mov eax, edi
mov edx, ecx
mov dword [esp + 0x1c], ecx
sub edx, dword [esp + 0x64]
or eax, 0x10000
cmp dword [ecx + 0x1c], eax
je 0x520159
mov eax, dword [edx + 0x4c]
jmp 0x520130
mov eax, dword [esp + 0x10]
lea esi, [edi + edi]
lea ecx, [esi - 2]
mov dword [eax + 0x48], edi
mov eax, dword [edx + 0x38]
sub eax, dword [ebp + 0x4c]
mov edi, dword [esp + 0x10]
sar eax, 1
mov dword [edi + ecx*4 + 0x54], eax
mov eax, edi
mov eax, dword [eax + 0x38]
sub eax, dword [ebp + 0x4c]
sar eax, 1
mov dword [edi + ecx*4 + 0x58], eax
mov eax, edi
cmp ecx, dword [eax + 0x50]
jb 0x52018e
mov dword [eax + 0x50], esi
mov eax, dword [esp + 0x10]
mov ecx, dword [eax]
movzx eax, word [ecx]
movzx eax, byte [eax + 0x5a4b10]
lea eax, [ecx + eax*2]
jmp 0x5200de
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x38]
cmp eax, dword [ebp + 0x60]
jbe 0x5201b5
mov dword [ebp + 0x60], eax
mov eax, dword [esp + 0x10]
mov esi, 0xfffffc19
mov dword [esp + 0x24], eax
jmp 0x52043b
mov eax, dword [esp + 0x10]
cmp dword [eax + 0x44], 0xffffffff
je 0x52022e
mov eax, dword [eax + 0x4c]
cmp eax, 0xffffffff
je case.0x527c3c.15
mov edi, dword [edi + 0x18]
add edi, eax
mov ecx, edi
mov dword [esp + 0x1c], edi
sub ecx, dword [esp + 0x64]
mov eax, dword [edi + 0x1c]
mov edi, dword [esp + 0x68]
and eax, 0xffff0000
cmp eax, 0x40000
je 0x520204
mov eax, dword [ecx + 0x4c]
jmp 0x5201d4
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x38]
mov dword [ecx + 0x38], eax
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x40]
mov dword [ecx + 0x40], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x10], ecx
mov eax, dword [eax + 0x3c]
mov dword [ecx + 0x3c], eax
add dword [ecx], 4
jmp 0x5200f0
mov edx, dword [eax + 0x38]
mov esi, dword [eax + 0x3c]
cmp edx, esi
jne 0x520260
mov eax, dword [esp + 0x6c]
mov eax, dword [eax + 0x78]
test al, 4
jne 0x52042d
test al, 8
je 0x520260
mov eax, dword [esp + 0x6c]
mov ecx, dword [eax + 0x34]
mov eax, dword [eax + 0x4c]
lea eax, [eax + ecx*2]
cmp esi, eax
je 0x52042d
mov eax, dword [esp + 0x6c]
cmp edx, dword [eax + 0x54]
jae 0x529df1
mov ebp, dword [esp + 0x6c]
mov eax, dword [eax + 0x7c]
or eax, dword [ebp + 0x78]
test eax, 0x20000000
je 0x529def
test bl, bl
je case.default.0x527c59
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x44
ret
mov eax, dword [esp + 0x6c]
mov esi, dword [eax + 0x88]
test esi, esi
je 0x5202d7
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x38]
mov eax, dword [esp + 0x6c]
mov edx, dword [eax + 0x54]
cmp ecx, edx
jae 0x52031c
push dword [esp + 0x14]
add eax, 0x8c
push eax
push edx
push esi
push ecx
call fcn.005373d0
add esp, 0x14
test eax, eax
jne 0x52042d
mov eax, dword [esp + 0x6c]
jmp 0x52031c
mov esi, dword [eax + 0x8c]
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x6c]
mov edx, dword [eax + 0x38]
lea eax, [esi + esi]
mov ecx, dword [ebp + 0x54]
sub ecx, eax
cmp edx, ecx
ja 0x52031a
mov ax, word [edx]
cmp ax, word [ebp + 0x90]
jne 0x52031a
cmp esi, 1
je case.default.0x527c59
mov ax, word [edx + 2]
cmp ax, word [ebp + 0x92]
je case.default.0x527c59
mov eax, ebp
movzx eax, word [eax + 0x3c]
mov ebp, dword [esp + 0x6c]
mov edx, eax
test ax, ax
je case.0x520114.13
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x38]
mov eax, dword [ebp + 0x54]
sub eax, 2
cmp ecx, eax
jne case.0x520114.13
mov eax, ebp
cmp dword [eax + 0x88], 0
jne 0x52036e
cmp dword [eax + 0x8c], 2
jne 0x52036e
mov ax, word [ecx]
cmp ax, word [ebp + 0x90]
jne case.0x520114.13
mov eax, ebp
mov dword [eax + 0x1c], 1
cmp edx, 1
ja 0x521512
mov ebp, eax
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x38]
cmp ecx, dword [ebp + 0x54]
jb 0x5203b1
movzx eax, word [ebp + 0x3c]
mov edx, eax
test ax, ax
je case.default.0x527c59
mov eax, dword [esp + 0x6c]
cmp ecx, dword [eax + 0x5c]
ja 0x52039a
cmp dword [eax + 0x24], 0
je 0x5203aa
mov dword [eax + 0x1c], 1
cmp edx, 1
ja 0x521512
mov ebp, eax
jmp case.default.0x527c59
mov edx, dword [esp + 0x14]
add ecx, 2
mov dword [eax + 0x38], ecx
test edx, edx
je 0x5203e7
cmp ecx, dword [ebp + 0x54]
jae 0x5203e7
mov ax, word [ecx]
mov ebx, 0xfc00
and ax, bx
mov ebx, 0xdc00
cmp ax, bx
jne 0x5203e3
lea eax, [ecx + 2]
mov ecx, dword [esp + 0x10]
mov dword [ecx + 0x38], eax
mov eax, dword [esp + 0x10]
add dword [eax], 2
jmp 0x5200f0
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x38]
mov eax, dword [esp + 0x6c]
cmp ecx, dword [eax + 0x54]
jb 0x520485
movzx eax, word [eax + 0x3c]
mov edx, eax
test ax, ax
je 0x52042d
mov eax, dword [esp + 0x6c]
cmp ecx, dword [eax + 0x5c]
ja 0x52041d
cmp dword [eax + 0x24], 0
je 0x52042d
cmp edx, 1
mov dword [eax + 0x1c], 1
ja 0x521512
mov ebp, dword [esp + 0x6c]
xor esi, esi
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov eax, dword [eax + 0x38]
cmp eax, dword [ebp + 0x60]
jbe 0x520446
mov dword [ebp + 0x60], eax
mov ebx, dword [esp + 0x10]
cmp dword [ebx + 0x18], 0
je 0x529e84
sub ebx, dword [ebx + 0x10]
mov eax, dword [ebp + 0x98]
mov edi, ebx
mov dword [esp + 0x10], ebx
or dword [eax + 0x3c], 2
movzx eax, byte [ebx + 0x30]
dec eax
cmp eax, 0xe0
ja case.0x527c3c.15
movzx eax, byte [eax + 0x52a1cc]
jmp dword [eax*4 + 0x52a0d4]
mov ebp, dword [esp + 0x6c]
lea eax, [ecx + 2]
mov ecx, dword [esp + 0x10]
mov dword [ecx + 0x38], eax
lea eax, [esi + 2]
mov dword [ecx], eax
jmp 0x5200f0
mov eax, dword [esp + 0x10]
test edx, edx
je 0x520573
mov ecx, dword [esp + 0x10]
mov dword [eax + 0xc], 1
lea eax, [esi + 2]
mov dword [ecx], eax
mov ecx, 0xfc00
mov ax, word [eax]
and ax, cx
mov ecx, 0xd800
cmp ax, cx
mov eax, dword [esp + 0x10]
jne 0x5204e0
mov dword [eax + 0xc], 2
mov edx, 2
jmp 0x5204e5
mov edx, 1
mov ecx, dword [eax + 0x38]
mov esi, dword [ebp + 0x54]
mov eax, esi
sub eax, ecx
sar eax, 1
cmp edx, eax
jbe 0x520536
cmp ecx, esi
jb case.default.0x527c59
movzx eax, word [ebp + 0x3c]
mov edx, eax
test ax, ax
je case.default.0x527c59
mov eax, dword [esp + 0x6c]
cmp ecx, dword [eax + 0x5c]
ja 0x52051f
cmp dword [eax + 0x24], 0
je 0x5203aa
mov dword [eax + 0x1c], 1
cmp edx, 1
ja 0x521512
mov ebp, eax
jmp case.default.0x527c59
mov eax, dword [esp + 0x10]
nop word [eax + eax]
mov ebx, dword [esp + 0x10]
mov eax, dword [eax + 0x38]
mov ecx, dword [ebx]
movzx edx, word [eax]
add eax, 2
movzx esi, word [ecx]
mov dword [ebx + 0x38], eax
lea eax, [ecx + 2]
mov dword [ebx], eax
mov eax, ebx
cmp si, dx
jne 0x52056c
add dword [eax + 0xc], 0xffffffff
jne 0x520540
jmp 0x5200e8
xor esi, esi
jmp 0x520437
mov edi, dword [eax + 0x38]
mov eax, dword [ebp + 0x54]
sub eax, edi
and eax, 0xfffffffe
cmp eax, 2
jge 0x5205ba
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je 0x5205af
mov eax, dword [esp + 0x6c]
cmp edi, dword [eax + 0x5c]
ja 0x52059d
cmp dword [eax + 0x24], 0
je 0x5205ad
mov dword [eax + 0x1c], 1
cmp ecx, 1
ja 0x521512
mov ebp, eax
mov eax, dword [esp + 0x10]
xor esi, esi
jmp 0x52043b
movzx edx, word [esi + 2]
lea eax, [edi + 2]
mov ebx, dword [esp + 0x10]
movzx ecx, word [edi]
cmp dx, cx
mov edx, dword [esp + 0x14]
mov dword [ebx + 0x38], eax
je 0x529552
xor esi, esi
mov eax, ebx
jmp 0x52043b
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x6c]
mov ebp, dword [eax + 0x38]
cmp ebp, dword [ecx + 0x54]
jb 0x52062a
movzx eax, word [ecx + 0x3c]
mov ecx, eax
test ax, ax
je 0x52061b
mov eax, dword [esp + 0x6c]
cmp ebp, dword [eax + 0x5c]
ja 0x52060b
cmp dword [eax + 0x24], 0
je 0x52061b
mov dword [eax + 0x1c], 1
cmp ecx, 1
ja 0x521512
mov eax, dword [esp + 0x10]
xor esi, esi
mov ebp, dword [esp + 0x6c]
jmp 0x52043b
test edx, edx
je 0x520768
mov dword [eax + 0xc], 1
lea edi, [esi + 2]
mov dword [eax], edi
mov ebx, 1
movzx esi, word [edi]
mov eax, esi
and eax, 0xfc00
cmp eax, 0xd800
jne 0x520680
movzx eax, word [edi + 2]
and esi, 0x3ff
and eax, 0x3ff
shl esi, 0xa
or esi, eax
mov ebx, 2
mov eax, dword [esp + 0x10]
add esi, 0x10000
mov dword [eax + 0xc], 2
jmp 0x520684
mov eax, dword [esp + 0x10]
movzx edx, word [ebp]
cmp esi, 0x80
jae 0x5206d4
mov eax, dword [ecx + 0x28]
cmp edx, 0xff
ja 0x52069f
movzx edx, byte [eax + edx]
movzx eax, byte [eax + esi]
cmp eax, edx
mov edx, dword [esp + 0x14]
je 0x5206b8
mov eax, dword [esp + 0x10]
xor esi, esi
mov ebp, ecx
jmp 0x52043b
mov ecx, dword [esp + 0x10]
lea eax, [edi + 2]
mov dword [ecx], eax
lea eax, [ebp + 2]
mov dword [ecx + 0x38], eax
mov ebp, dword [esp + 0x6c]
mov edi, dword [esp + 0x68]
jmp 0x5200f0
lea ecx, [ebp + 2]
mov dword [eax + 0x38], ecx
mov eax, edx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x52070d
movzx eax, word [ecx]
and edx, 0x3ff
and eax, 0x3ff
shl edx, 0xa
or edx, eax
lea eax, [ecx + 2]
mov ecx, dword [esp + 0x10]
add edx, 0x10000
mov dword [ecx + 0x38], eax
jmp 0x520711
mov ecx, dword [esp + 0x10]
mov ebp, dword [esp + 0x6c]
lea eax, [edi + ebx*2]
mov edi, dword [esp + 0x68]
mov dword [ecx], eax
cmp edx, esi
je 0x5200e8
mov eax, esi
shr eax, 7
movzx ecx, word [eax*2 + 0x5ab420]
mov eax, esi
and eax, 0x7f
shl ecx, 7
add ecx, eax
movzx eax, word [ecx*2 + 0x5af820]
lea eax, [eax + eax*2]
mov eax, dword [eax*4 + 0x5a7214]
add eax, esi
cmp edx, eax
mov edx, dword [esp + 0x14]
je 0x5200f0
mov eax, dword [esp + 0x10]
xor esi, esi
jmp 0x52043b
cmp dword [esp + 0x2c], 0
je 0x5207e9
movzx edi, word [esi + 2]
movzx edx, word [ebp]
cmp edi, 0x80
jae 0x5207a1
mov eax, dword [ecx + 0x28]
cmp edx, 0xff
ja 0x52078e
movzx edx, byte [eax + edx]
movzx eax, byte [eax + edi]
cmp eax, edx
je 0x52081e
mov ebp, ecx
jmp case.default.0x527c59
cmp edx, edi
je 0x52081e
mov eax, edi
test eax, eax
jns 0x5207ae
add eax, 0x7f
sar eax, 7
movzx ecx, word [eax*2 + 0x5ab420]
mov eax, edi
shl ecx, 7
and eax, 0x8000007f
jns 0x5207ca
dec eax
or eax, 0xffffff80
inc eax
add ecx, eax
movzx eax, word [ecx*2 + 0x5af820]
lea eax, [eax + eax*2]
mov eax, dword [eax*4 + 0x5a7214]
add eax, edi
cmp edx, eax
je 0x52081e
jmp 0x52042d
movzx eax, word [esi + 2]
mov ebx, 0xff
mov edx, eax
cmp ax, bx
ja 0x520800
mov eax, dword [ecx + 0x28]
movzx edx, byte [eax + edx]
movzx eax, word [ebp]
mov ecx, eax
cmp ax, bx
ja 0x520816
mov eax, dword [esp + 0x6c]
mov eax, dword [eax + 0x28]
movzx ecx, byte [eax + ecx]
cmp edx, ecx
jne 0x52042d
mov ecx, dword [esp + 0x10]
lea eax, [ebp + 2]
mov dword [ecx + 0x38], eax
lea eax, [esi + 4]
mov dword [ecx], eax
mov ebp, dword [esp + 0x6c]
jmp 0x5200e4
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x38]
mov eax, dword [esp + 0x6c]
cmp ecx, dword [eax + 0x54]
jae 0x520403
lea eax, [esi + 2]
test edx, edx
je 0x520936
mov edi, dword [esp + 0x10]
lea esi, [eax + 2]
mov dword [edi], eax
movzx edx, word [eax]
mov eax, edi
mov dword [eax], esi
mov eax, edx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x520891
movzx eax, word [esi]
and edx, 0x3ff
and eax, 0x3ff
shl edx, 0xa
or edx, eax
lea eax, [esi + 2]
add edx, 0x10000
mov dword [edi], eax
mov eax, dword [esp + 0x10]
movzx esi, word [ecx]
add ecx, 2
mov dword [eax + 0x38], ecx
mov eax, esi
and eax, 0xfc00
cmp eax, 0xd800
jne 0x5208cf
movzx eax, word [ecx]
and esi, 0x3ff
and eax, 0x3ff
shl esi, 0xa
or esi, eax
lea eax, [ecx + 2]
mov ecx, dword [esp + 0x10]
add esi, 0x10000
mov dword [ecx + 0x38], eax
mov ebp, dword [esp + 0x6c]
cmp edx, esi
je case.default.0x527c59
mov edi, dword [esp + 0x68]
cmp bl, 0x20
jne 0x5200e8
cmp edx, 0x7f
jbe 0x520918
mov eax, edx
shr eax, 7
movzx ecx, word [eax*2 + 0x5ab420]
mov eax, edx
and eax, 0x7f
shl ecx, 7
add ecx, eax
movzx eax, word [ecx*2 + 0x5af820]
lea eax, [eax + eax*2]
add edx, dword [eax*4 + 0x5a7214]
jmp 0x52091f
mov eax, dword [ebp + 0x2c]
movzx edx, byte [eax + edx]
cmp edx, esi
mov edx, dword [esp + 0x14]
jne 0x5200f0
mov eax, dword [esp + 0x10]
xor esi, esi
jmp 0x52043b
cmp dword [esp + 0x2c], 0
lea edi, [ecx + 2]
mov ebp, dword [esp + 0x6c]
je 0x5209cf
movzx ebx, word [ecx]
mov ecx, dword [esp + 0x10]
mov dword [ecx + 0x38], edi
movzx edx, word [eax]
lea eax, [esi + 4]
mov dword [ecx], eax
cmp edx, ebx
je case.default.0x527c59
cmp byte [esp + 0x58], 0x20
mov edi, dword [esp + 0x68]
jne 0x5200e8
cmp edx, 0x7f
jbe 0x5209b1
mov eax, edx
test eax, eax
jns 0x52097f
add eax, 0x7f
sar eax, 7
movzx ecx, word [eax*2 + 0x5ab420]
mov eax, edx
shl ecx, 7
and eax, 0x8000007f
jns 0x52099b
dec eax
or eax, 0xffffff80
inc eax
add ecx, eax
movzx eax, word [ecx*2 + 0x5af820]
lea eax, [eax + eax*2]
add edx, dword [eax*4 + 0x5a7214]
jmp 0x5209b8
mov eax, dword [ebp + 0x2c]
movzx edx, byte [eax + edx]
cmp edx, ebx
mov edx, dword [esp + 0x14]
jne 0x5200f0
mov eax, dword [esp + 0x10]
xor esi, esi
jmp 0x52043b
movzx edx, word [eax]
mov eax, dword [esp + 0x10]
movzx ecx, word [ecx]
mov dword [eax + 0x38], edi
cmp edx, ecx
je case.default.0x527c59
cmp bl, 0x20
jne 0x520a00
cmp edx, 0xff
ja 0x520a00
mov eax, dword [ebp + 0x2c]
movzx eax, byte [eax + edx]
cmp eax, ecx
je case.default.0x527c59
lea eax, [esi + 4]
jmp 0x5200de
mov ecx, dword [esp + 0x10]
movzx eax, word [esi + 2]
add esi, 4
mov dword [ecx + 0x24], eax
mov dword [ecx + 0x20], eax
mov eax, ecx
mov dword [eax], esi
jmp 0x520b43
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x18], 2
mov dword [eax + 0x20], 0
movzx eax, word [esi + 2]
add esi, 4
mov dword [ecx + 0x24], eax
mov eax, ecx
mov dword [eax], esi
jmp 0x520b3f
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x18], 1
mov dword [eax + 0x20], 0
movzx eax, word [esi + 2]
add esi, 4
mov dword [ecx + 0x24], eax
mov eax, ecx
mov dword [eax], esi
jmp 0x520b3f
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x18], 0
mov dword [eax + 0x20], 0
movzx eax, word [esi + 2]
add esi, 4
mov dword [ecx + 0x24], eax
mov eax, ecx
mov dword [eax], esi
jmp 0x520b3f
mov eax, dword [esp + 0x10]
add esi, 2
mov dword [esp + 0x18], 2
mov dword [eax + 0x20], 0
mov dword [eax + 0x24], 0xffffffff
mov dword [eax], esi
jmp 0x520b3f
mov eax, dword [esp + 0x10]
add esi, 2
mov dword [esp + 0x18], 2
mov dword [eax + 0x20], 1
mov dword [eax + 0x24], 0xffffffff
mov dword [eax], esi
jmp 0x520b3f
mov eax, dword [esp + 0x10]
add esi, 2
mov dword [esp + 0x18], 2
mov dword [eax + 0x20], 0
mov dword [eax + 0x24], 1
mov dword [eax], esi
jmp 0x520b3f
movzx ecx, word [esi]
cmp bl, 0x2e
mov edx, dword [esp + 0x10]
sbb eax, eax
and eax, 0xfffffff3
add eax, 0x2e
sub ecx, eax
mov eax, dword [esp + 0x10]
add esi, 2
mov dword [eax], esi
mov eax, dword [ecx*4 + 0x5a4350]
mov dword [edx + 0x20], eax
mov eax, dword [ecx*4 + 0x5a437c]
mov dword [edx + 0x24], eax
mov eax, dword [ecx*4 + 0x5a43a8]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 0x14]
test ebx, ebx
je 0x520f48
mov dword [eax + 0xc], 1
mov dword [eax + 8], esi
movzx edx, word [esi]
mov eax, edx
and eax, 0xfc00
cmp eax, 0xd800
mov eax, dword [esp + 0x10]
jne 0x520b9b
movzx edi, word [esi + 2]
and edx, 0x3ff
mov ecx, dword [esp + 0x10]
and edi, 0x3ff
shl edx, 0xa
mov dword [eax + 0xc], 2
or edi, edx
lea eax, [esi + 4]
add edi, 0x10000
mov dword [ecx], eax
jmp 0x520bb2
mov edi, dword [esp + 0x10]
mov ecx, dword [eax + 0xc]
lea eax, [esi + 2]
mov dword [edi], eax
mov edi, edx
cmp ecx, 1
jbe 0x520f3f
mov eax, dword [esp + 0x10]
cmp byte [eax + 0x31], 0x2e
jb 0x520bfe
mov eax, edi
shr eax, 7
movzx ecx, word [eax*2 + 0x5ab420]
mov eax, edi
shl ecx, 7
and eax, 0x7f
add ecx, eax
movzx eax, word [ecx*2 + 0x5af820]
lea eax, [eax + eax*2]
mov ecx, dword [eax*4 + 0x5a7214]
add ecx, edi
cmp ecx, edi
je 0x520bfe
mov eax, dword [esp + 0x10]
add eax, 0x32
push eax
push ecx
call fcn.00537580
add esp, 8
jmp 0x520c00
xor eax, eax
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x58], 1
mov dword [ecx + 0x14], eax
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x20]
cmp eax, 1
jb 0x520d54
mov eax, dword [esp + 0x10]
mov ebx, dword [eax + 0x38]
jmp 0x520c34
mov eax, dword [esp + 0x10]
mov edi, dword [eax + 0xc]
mov ebp, dword [ebp + 0x54]
add edi, edi
mov eax, ebp
sub eax, edi
cmp ebx, eax
ja 0x520cab
mov eax, dword [esp + 0x10]
mov esi, edi
mov ecx, ebx
mov edx, dword [eax + 8]
sub esi, 4
jb 0x520c65
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x520c6e
add ecx, 4
add edx, 4
sub esi, 4
jae 0x520c54
cmp esi, 0xfffffffc
je 0x520d33
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x520cab
cmp esi, 0xfffffffd
je 0x520d33
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x520cab
cmp esi, 0xfffffffe
je 0x520d33
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x520cab
cmp esi, 0xffffffff
je 0x520d33
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
je 0x520d33
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x14]
test eax, eax
je 0x520ead
lea edi, [eax + eax]
mov eax, ebp
sub eax, edi
cmp ebx, eax
ja 0x520ead
mov edx, dword [esp + 0x10]
mov esi, edi
add edx, 0x32
mov ecx, ebx
sub esi, 4
jb 0x520cf1
nop dword [eax]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x520cf6
add ecx, 4
add edx, 4
sub esi, 4
jae 0x520ce0
cmp esi, 0xfffffffc
je 0x520d33
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x520ead
cmp esi, 0xfffffffd
je 0x520d33
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x520ead
cmp esi, 0xfffffffe
je 0x520d33
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x520ead
cmp esi, 0xffffffff
je 0x520d33
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x520ead
mov eax, dword [esp + 0x10]
add ebx, edi
mov ecx, dword [esp + 0x58]
mov ebp, dword [esp + 0x6c]
inc ecx
mov dword [esp + 0x58], ecx
mov dword [eax + 0x38], ebx
mov eax, dword [eax + 0x20]
cmp ecx, eax
jbe 0x520c30
mov ecx, dword [esp + 0x10]
mov ebp, dword [esp + 0x6c]
mov edx, dword [esp + 0x14]
mov edi, dword [esp + 0x68]
mov ecx, dword [ecx + 0x24]
cmp eax, ecx
je 0x5200f0
cmp dword [esp + 0x18], 0
je 0x52990f
mov eax, dword [esp + 0x10]
mov ebx, dword [eax + 0x38]
mov dword [eax + 4], ebx
mov eax, dword [eax + 0x20]
cmp eax, ecx
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x10]
jae 0x520f24
mov edi, dword [eax + 0xc]
mov eax, dword [esp + 0x6c]
add edi, edi
mov ebp, dword [eax + 0x54]
mov eax, ebp
sub eax, edi
cmp ebx, eax
ja 0x520e13
mov eax, dword [esp + 0x10]
mov esi, edi
mov ecx, ebx
mov edx, dword [eax + 8]
sub esi, 4
jb 0x520dd1
nop dword [eax + eax]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x520dda
add ecx, 4
add edx, 4
sub esi, 4
jae 0x520dc0
cmp esi, 0xfffffffc
je 0x520e8c
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x520e13
cmp esi, 0xfffffffd
je 0x520e8c
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x520e13
cmp esi, 0xfffffffe
je 0x520e8c
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x520e13
cmp esi, 0xffffffff
je 0x520e8c
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
je 0x520e8c
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x14]
test eax, eax
je 0x520ef0
lea edi, [eax + eax]
mov eax, ebp
sub eax, edi
cmp ebx, eax
ja 0x520ef0
mov edx, dword [esp + 0x10]
mov esi, edi
add edx, 0x32
mov ecx, ebx
sub esi, 4
jb 0x520e52
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x520e57
add ecx, 4
add edx, 4
sub esi, 4
jae 0x520e41
cmp esi, 0xfffffffc
je 0x520e8c
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x520ef0
cmp esi, 0xfffffffd
je 0x520e8c
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x520ef0
cmp esi, 0xfffffffe
je 0x520e8c
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x520ef0
cmp esi, 0xffffffff
je 0x520e8c
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x520ef0
mov eax, dword [esp + 0x10]
add ebx, edi
mov edx, dword [esp + 0x58]
inc edx
mov dword [esp + 0x58], edx
mov dword [eax + 0x38], ebx
cmp edx, dword [eax + 0x24]
jb 0x520d97
mov ebp, dword [esp + 0x6c]
jmp 0x520f24
cmp ebx, ebp
mov ebp, dword [esp + 0x6c]
jb case.default.0x527c59
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
mov eax, ebp
cmp ebx, dword [eax + 0x5c]
ja 0x520ed9
cmp dword [eax + 0x24], 0
je 0x5203aa
mov dword [eax + 0x1c], 1
cmp ecx, 1
ja 0x521512
mov ebp, eax
jmp case.default.0x527c59
cmp ebx, ebp
mov ebp, dword [esp + 0x6c]
jb 0x520f20
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je 0x520f20
mov eax, ebp
cmp ebx, dword [eax + 0x5c]
ja 0x520f10
cmp dword [eax + 0x24], 0
je 0x520f20
mov dword [eax + 0x1c], 1
cmp ecx, 1
ja 0x521512
mov eax, dword [esp + 0x10]
cmp dword [esp + 0x18], 2
mov edx, dword [esp + 0x14]
mov edi, dword [esp + 0x68]
je 0x5200f0
mov ecx, dword [eax + 0x38]
jmp 0x528274
mov eax, dword [esp + 0x10]
mov dword [eax + 0x28], edx
jmp 0x520f59
movzx edx, word [esi]
mov ecx, dword [esp + 0x10]
mov dword [eax + 0x28], edx
lea eax, [esi + 2]
mov dword [ecx], eax
mov eax, ecx
cmp byte [eax + 0x31], 0x2e
jb 0x5210b1
test ebx, ebx
jne 0x520f6d
cmp dword [esp + 0x2c], ebx
je 0x520f9f
cmp edx, 0x7f
jbe 0x520f9f
mov eax, edx
shr eax, 7
movzx ecx, word [eax*2 + 0x5ab420]
mov eax, edx
and eax, 0x7f
shl ecx, 7
add ecx, eax
movzx eax, word [ecx*2 + 0x5af820]
lea eax, [eax + eax*2]
mov eax, dword [eax*4 + 0x5a7214]
add eax, edx
jmp 0x520fb2
cmp edx, 0xff
ja 0x520fb0
mov eax, dword [ebp + 0x2c]
movzx eax, byte [eax + edx]
jmp 0x520fb2
mov eax, edx
mov ecx, dword [esp + 0x10]
mov edx, 1
mov dword [ecx + 0x2c], eax
mov eax, dword [esp + 0x10]
mov esi, dword [eax + 0x20]
cmp esi, edx
jb 0x521001
mov ecx, dword [eax + 0x38]
nop dword [eax]
mov eax, dword [esp + 0x6c]
cmp ecx, dword [eax + 0x54]
jae 0x520403
mov ebx, dword [esp + 0x10]
movzx eax, word [ecx]
cmp dword [ebx + 0x28], eax
je 0x520ff2
cmp dword [ebx + 0x2c], eax
jne 0x52042d
mov eax, dword [esp + 0x10]
add ecx, 2
inc edx
mov dword [eax + 0x38], ecx
cmp edx, esi
jbe 0x520fd0
mov edx, dword [eax + 0x24]
mov ebp, dword [esp + 0x6c]
mov edi, dword [esp + 0x68]
cmp esi, edx
je 0x5200e8
mov ebp, dword [esp + 0x18]
test ebp, ebp
je 0x52798f
mov ecx, dword [eax + 0x38]
mov dword [eax + 4], ecx
cmp esi, edx
jae 0x521085
nop word [eax + eax]
mov eax, dword [esp + 0x6c]
cmp ecx, dword [eax + 0x54]
jae 0x52105b
mov ebx, dword [esp + 0x10]
movzx eax, word [ecx]
cmp dword [ebx + 0x28], eax
je 0x52104a
cmp dword [ebx + 0x2c], eax
jne 0x521089
mov eax, dword [esp + 0x10]
add ecx, 2
inc esi
mov dword [eax + 0x38], ecx
cmp esi, edx
jb 0x521030
jmp 0x521085
movzx eax, word [eax + 0x3c]
mov edx, eax
test ax, ax
je 0x521085
mov eax, dword [esp + 0x6c]
cmp ecx, dword [eax + 0x5c]
ja 0x521075
cmp dword [eax + 0x24], 0
je 0x521085
mov dword [eax + 0x1c], 1
cmp edx, 1
ja 0x521512
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
cmp ebp, 2
mov ebp, dword [esp + 0x6c]
je 0x5200f0
mov eax, dword [ebx + 0x38]
cmp eax, dword [ebx + 4]
je 0x5200e4
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0x1a
jmp 0x529d02
mov edi, dword [eax + 0x20]
mov esi, 1
cmp edi, esi
jb 0x5210e8
mov edx, dword [eax + 0x38]
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x6c]
cmp edx, dword [eax + 0x54]
jae 0x521135
movzx eax, word [edx]
add edx, 2
mov dword [ebx + 0x38], edx
cmp dword [ebx + 0x28], eax
jne 0x52042d
inc esi
cmp esi, edi
jbe 0x5210c4
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x24]
mov ebp, dword [esp + 0x6c]
cmp edi, edx
je 0x5200e4
mov ebp, dword [esp + 0x18]
test ebp, ebp
je 0x527a1a
mov ecx, dword [eax + 0x38]
mov dword [eax + 4], ecx
cmp edi, edx
jae 0x521189
mov eax, dword [esp + 0x6c]
cmp ecx, dword [eax + 0x54]
jae 0x52115f
mov ebx, dword [esp + 0x10]
movzx eax, word [ecx]
cmp dword [ebx + 0x28], eax
jne 0x52118d
mov eax, ebx
add ecx, 2
inc edi
mov dword [eax + 0x38], ecx
cmp edi, edx
jb 0x521111
jmp 0x521189
movzx eax, word [eax + 0x3c]
mov ecx, eax
test ax, ax
je 0x52042d
mov eax, dword [esp + 0x6c]
cmp edx, dword [eax + 0x5c]
ja 0x521157
cmp dword [eax + 0x24], 0
je 0x52042d
cmp ecx, 1
jmp 0x520420
movzx eax, word [eax + 0x3c]
mov edx, eax
test ax, ax
je 0x521189
mov eax, dword [esp + 0x6c]
cmp ecx, dword [eax + 0x5c]
ja 0x521179
cmp dword [eax + 0x24], 0
je 0x521189
mov dword [eax + 0x1c], 1
cmp edx, 1
ja 0x521512
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
cmp ebp, 2
mov ebp, dword [esp + 0x6c]
mov edi, dword [esp + 0x68]
je 0x5200f0
mov eax, dword [ebx + 0x38]
cmp eax, dword [ebx + 4]
jbe 0x5200e4
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0x1c
jmp 0x529d02
mov ecx, dword [esp + 0x10]
movzx eax, word [esi + 2]
add esi, 4
mov edx, esi
mov dword [ecx + 0x24], eax
mov dword [ecx + 0x20], eax
mov eax, ecx
mov dword [eax], esi
jmp 0x521309
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x18], 1
mov dword [eax + 0x20], 0
movzx eax, word [esi + 2]
add esi, 4
mov dword [ecx + 0x24], eax
mov edx, esi
mov eax, ecx
mov dword [eax], esi
jmp 0x521305
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x18], 0
mov dword [eax + 0x20], 0
movzx eax, word [esi + 2]
add esi, 4
mov dword [ecx + 0x24], eax
mov edx, esi
mov eax, ecx
mov dword [eax], esi
jmp 0x521305
mov eax, dword [esp + 0x10]
add esi, 2
mov dword [esp + 0x18], 2
mov edx, esi
mov dword [eax + 0x20], 0
mov dword [eax + 0x24], 0xffffffff
mov dword [eax], esi
jmp 0x521305
mov eax, dword [esp + 0x10]
add esi, 2
mov dword [esp + 0x18], 2
mov edx, esi
mov dword [eax + 0x20], 1
mov dword [eax + 0x24], 0xffffffff
mov dword [eax], esi
jmp 0x521305
mov eax, dword [esp + 0x10]
add esi, 2
mov dword [esp + 0x18], 2
mov edx, esi
mov dword [eax + 0x20], 0
mov dword [eax + 0x24], 1
mov dword [eax], esi
jmp 0x521305
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x18], 2
mov dword [eax + 0x20], 0
movzx eax, word [esi + 2]
add esi, 4
mov dword [ecx + 0x24], eax
mov edx, esi
mov eax, ecx
mov dword [eax], esi
jmp 0x521305
movzx ecx, word [esi]
cmp bl, 0x48
mov edx, dword [esp + 0x10]
sbb eax, eax
and eax, 0xfffffff3
add eax, 0x48
sub ecx, eax
mov eax, dword [esp + 0x10]
add esi, 2
mov dword [eax], esi
mov eax, dword [ecx*4 + 0x5a4350]
mov dword [edx + 0x20], eax
mov eax, dword [ecx*4 + 0x5a437c]
mov dword [edx + 0x24], eax
mov eax, dword [ecx*4 + 0x5a43a8]
mov dword [esp + 0x18], eax
mov eax, edx
mov edx, dword [eax]
mov eax, dword [esp + 0x10]
cmp dword [esp + 0x14], 0
lea edi, [edx + 2]
movzx ecx, word [esi]
mov dword [eax + 0x28], ecx
mov esi, ecx
mov dword [eax], edi
je 0x521357
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
mov eax, dword [esp + 0x10]
jne 0x521357
movzx esi, word [edi]
and ecx, 0x3ff
shl ecx, 0xa
and esi, 0x3ff
or esi, ecx
mov ecx, dword [esp + 0x10]
add esi, 0x10000
mov dword [eax + 0x28], esi
lea eax, [edx + 4]
mov dword [ecx], eax
mov eax, ecx
cmp byte [eax + 0x31], 0x48
jb 0x521654
mov edx, dword [esp + 0x14]
test edx, edx
jne 0x52136f
cmp dword [esp + 0x2c], edx
je 0x5213a1
cmp esi, 0x7f
jbe 0x5213a1
mov eax, esi
shr eax, 7
movzx ecx, word [eax*2 + 0x5ab420]
mov eax, esi
and eax, 0x7f
shl ecx, 7
add ecx, eax
movzx eax, word [ecx*2 + 0x5af820]
lea eax, [eax + eax*2]
mov eax, dword [eax*4 + 0x5a7214]
add eax, esi
jmp 0x5213b4
cmp esi, 0xff
ja 0x5213b2
mov eax, dword [ebp + 0x2c]
movzx eax, byte [eax + esi]
jmp 0x5213b4
mov eax, esi
mov ecx, dword [esp + 0x10]
mov dword [ecx + 0x2c], eax
mov eax, dword [esp + 0x10]
mov ebx, dword [eax + 0x20]
mov eax, ebx
test edx, edx
je 0x52151f
mov esi, 1
cmp ebx, esi
jb 0x521447
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x38]
jmp 0x5213e4
mov eax, dword [esp + 0x10]
cmp edx, dword [ebp + 0x54]
jae 0x5214e4
movzx ecx, word [edx]
add edx, 2
mov dword [eax + 0x38], edx
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x521429
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
mov eax, dword [esp + 0x10]
add ecx, 0x10000
add edx, 2
mov dword [eax + 0x38], edx
jmp 0x52142d
mov eax, dword [esp + 0x10]
cmp dword [eax + 0x28], ecx
je case.default.0x527c59
cmp dword [eax + 0x2c], ecx
je case.default.0x527c59
mov eax, dword [eax + 0x20]
inc esi
cmp esi, eax
jbe 0x5213e0
mov ecx, dword [esp + 0x10]
mov edi, dword [ecx + 0x24]
cmp eax, edi
je 0x5200e4
cmp dword [esp + 0x18], 0
je 0x529753
mov edx, dword [esp + 0x14]
mov eax, ecx
mov ecx, dword [eax + 0x38]
mov dword [eax + 4], ecx
mov eax, dword [eax + 0x24]
test edx, edx
je 0x5215dc
cmp ebx, eax
jae 0x5215d6
mov esi, 1
cmp ecx, dword [ebp + 0x54]
jae 0x521595
movzx edx, word [ecx]
mov eax, edx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x5214be
movzx eax, word [ecx + 2]
and edx, 0x3ff
and eax, 0x3ff
shl edx, 0xa
or edx, eax
mov esi, 2
add edx, 0x10000
mov eax, dword [esp + 0x10]
cmp dword [eax + 0x28], edx
je 0x5215bb
cmp dword [eax + 0x2c], edx
je 0x5215bb
inc ebx
lea ecx, [ecx + esi*2]
mov dword [eax + 0x38], ecx
cmp ebx, edi
jb 0x521480
jmp 0x5215bb
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x521502
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
jbe case.default.0x527c59
pop edi
pop esi
pop ebp
mov eax, 0xfffffffe
pop ebx
add esp, 0x44
ret
mov edx, 1
cmp ebx, edx
jb 0x521447
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x38]
cmp ecx, dword [ebp + 0x54]
jae 0x521566
mov esi, dword [esp + 0x10]
movzx eax, word [ecx]
cmp dword [esi + 0x28], eax
je case.default.0x527c59
cmp dword [esi + 0x2c], eax
je case.default.0x527c59
mov eax, esi
add ecx, 2
inc edx
mov dword [eax + 0x38], ecx
mov eax, dword [eax + 0x20]
cmp edx, eax
jbe 0x521533
jmp 0x521447
movzx eax, word [ebp + 0x3c]
mov edx, eax
test ax, ax
je case.default.0x527c59
cmp ecx, dword [ebp + 0x5c]
ja 0x521584
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp edx, 1
ja 0x521512
jmp case.default.0x527c59
movzx eax, word [ebp + 0x3c]
mov edx, eax
test ax, ax
je 0x5215b7
cmp ecx, dword [ebp + 0x5c]
ja 0x5215ab
cmp dword [ebp + 0x24], 0
je 0x5215b7
mov dword [ebp + 0x1c], esi
cmp edx, 1
ja 0x521512
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
cmp dword [esp + 0x18], 2
mov edi, dword [esp + 0x68]
je 0x5200f0
mov ecx, dword [eax + 0x38]
jmp 0x52835d
mov eax, dword [esp + 0x10]
jmp 0x5215bf
cmp ebx, eax
jae 0x52164e
cmp ecx, dword [ebp + 0x54]
jae 0x521605
mov edx, dword [esp + 0x10]
movzx eax, word [ecx]
cmp dword [edx + 0x28], eax
je 0x52162b
cmp dword [edx + 0x2c], eax
mov eax, edx
je 0x52162f
add ecx, 2
inc ebx
mov dword [eax + 0x38], ecx
cmp ebx, edi
jb 0x5215e0
jmp 0x52162f
movzx eax, word [ebp + 0x3c]
mov edx, eax
test ax, ax
je 0x52162b
cmp ecx, dword [ebp + 0x5c]
ja 0x52161b
cmp dword [ebp + 0x24], 0
je 0x52162b
mov dword [ebp + 0x1c], 1
cmp edx, 1
ja 0x521512
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
cmp dword [esp + 0x18], 2
mov edi, dword [esp + 0x68]
je 0x5200f0
mov eax, dword [eax + 0x38]
mov ebx, dword [esp + 0x10]
jmp 0x527ac3
mov eax, dword [esp + 0x10]
jmp 0x521633
cmp dword [esp + 0x14], 0
mov esi, 1
mov ebx, dword [eax + 0x20]
mov eax, ebx
je 0x5217ae
cmp ebx, esi
jb 0x5216de
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x38]
jmp 0x521684
mov eax, dword [esp + 0x10]
cmp edx, dword [ebp + 0x54]
jae 0x52177b
movzx ecx, word [edx]
add edx, 2
mov dword [eax + 0x38], edx
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x5216c9
movzx eax, word [edx]
and ecx, 0x3ff
shl ecx, 0xa
and eax, 0x3ff
or ecx, eax
mov eax, dword [esp + 0x10]
add ecx, 0x10000
add edx, 2
mov dword [eax + 0x38], edx
jmp 0x5216cd
mov eax, dword [esp + 0x10]
cmp dword [eax + 0x28], ecx
je case.default.0x527c59
mov eax, dword [eax + 0x20]
inc esi
cmp esi, eax
jbe 0x521680
mov ecx, dword [esp + 0x10]
mov edi, dword [ecx + 0x24]
cmp eax, edi
je 0x5200e4
mov esi, dword [esp + 0x18]
test esi, esi
je 0x52976d
mov edx, dword [esp + 0x14]
mov eax, ecx
mov ecx, dword [eax + 0x38]
mov dword [eax + 4], ecx
mov eax, dword [eax + 0x24]
test edx, edx
je 0x52185b
cmp ebx, eax
jae 0x521843
nop dword [eax + eax]
mov esi, 1
cmp ecx, dword [ebp + 0x54]
jae 0x52181d
movzx edx, word [ecx]
mov eax, edx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x52175e
movzx eax, word [ecx + 2]
and edx, 0x3ff
and eax, 0x3ff
shl edx, 0xa
or edx, eax
mov esi, 2
add edx, 0x10000
mov eax, dword [esp + 0x10]
cmp dword [eax + 0x28], edx
je 0x52183f
inc ebx
lea ecx, [ecx + esi*2]
mov dword [eax + 0x38], ecx
cmp ebx, edi
jb 0x521720
jmp 0x52183f
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x521799
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
cmp ebx, 1
jb 0x5216de
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x38]
nop
cmp edx, dword [ebp + 0x54]
jae 0x5217ea
mov edi, dword [esp + 0x10]
movzx eax, word [edx]
add edx, 2
mov dword [edi + 0x38], edx
cmp dword [edi + 0x28], eax
mov eax, edi
je 0x52056c
mov eax, dword [eax + 0x20]
inc esi
cmp esi, eax
jbe 0x5217c0
jmp 0x5216de
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x521808
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx eax, word [ebp + 0x3c]
mov edx, eax
test ax, ax
je 0x52183f
cmp ecx, dword [ebp + 0x5c]
ja 0x521833
cmp dword [ebp + 0x24], 0
je 0x52183f
mov dword [ebp + 0x1c], esi
cmp edx, 1
ja 0x521512
mov edx, dword [esp + 0x14]
cmp dword [esp + 0x18], 2
mov edi, dword [esp + 0x68]
je 0x5200f0
mov ebx, dword [esp + 0x10]
jmp 0x528437
cmp ebx, eax
jae 0x5218c7
nop
cmp ecx, dword [ebp + 0x54]
jae 0x521880
mov edx, dword [esp + 0x10]
movzx eax, word [ecx]
cmp dword [edx + 0x28], eax
mov eax, edx
je 0x5218aa
add ecx, 2
inc ebx
mov dword [eax + 0x38], ecx
cmp ebx, edi
jb 0x521860
jmp 0x5218aa
movzx eax, word [ebp + 0x3c]
mov edx, eax
test ax, ax
je 0x5218a6
cmp ecx, dword [ebp + 0x5c]
ja 0x521896
cmp dword [ebp + 0x24], 0
je 0x5218a6
mov dword [ebp + 0x1c], 1
cmp edx, 1
ja 0x521512
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov edi, dword [esp + 0x68]
cmp esi, 2
je 0x5200f0
mov eax, dword [eax + 0x38]
mov ebx, dword [esp + 0x10]
jmp 0x527b56
mov eax, dword [esp + 0x10]
jmp 0x5218ae
mov ecx, dword [esp + 0x10]
lea eax, [esi + 2]
add esi, 0x22
mov dword [ecx + 8], eax
mov eax, ecx
mov dword [eax], esi
movzx ecx, word [esi]
lea eax, [ecx - 0x62]
cmp eax, 0xb
ja case.default.0x5218f4
movzx eax, byte [eax + 0x52a2b8]
jmp dword [eax*4 + 0x52a2b0]
mov edx, dword [esp + 0x10]
lea eax, [esi + 2]
mov edi, dword [esp + 0x10]
mov ebx, dword [ecx*4 + 0x5a4220]
mov dword [esp + 0x18], ebx
mov dword [edx], eax
mov eax, dword [esp + 0x10]
mov edx, dword [ecx*4 + 0x5a41c8]
mov dword [eax + 0x20], edx
mov eax, dword [ecx*4 + 0x5a41f4]
mov dword [edi + 0x24], eax
jmp 0x521979
mov eax, dword [esp + 0x10]
mov ecx, 0xffffffff
movzx edx, word [esi + 2]
mov dword [eax + 0x20], edx
movzx eax, word [esi + 4]
test eax, eax
cmove eax, ecx
mov ecx, dword [esp + 0x10]
mov dword [ecx + 0x24], eax
movzx eax, word [esi]
mov eax, dword [eax*4 + 0x5a4220]
mov dword [esp + 0x18], eax
lea eax, [esi + 6]
mov dword [ecx], eax
jmp 0x521979
mov eax, dword [esp + 0x10]
mov edx, 1
mov dword [eax + 0x24], 1
mov dword [eax + 0x20], 1
cmp dword [esp + 0x14], 0
mov ebx, 1
mov dword [esp + 0x58], edx
mov eax, edx
je 0x521a64
cmp edx, ebx
jb 0x521af6
mov eax, dword [esp + 0x10]
mov edi, dword [eax + 0x38]
nop
cmp edi, dword [ebp + 0x54]
jae 0x521a31
movzx esi, word [edi]
add edi, 2
mov dword [eax + 0x38], edi
mov eax, esi
and eax, 0xfc00
cmp eax, 0xd800
jne 0x5219e5
movzx eax, word [edi]
and esi, 0x3ff
and eax, 0x3ff
shl esi, 0xa
or esi, eax
mov eax, dword [esp + 0x10]
add esi, 0x10000
add edi, 2
mov dword [eax + 0x38], edi
jmp 0x5219e9
mov eax, dword [esp + 0x10]
cmp esi, 0xff
jbe 0x5219fd
cmp byte [eax + 0x31], 0x6e
je case.default.0x527c59
jmp 0x521a1c
mov eax, dword [eax + 8]
mov ecx, esi
and ecx, 7
shr esi, 3
mov edx, 1
shl edx, cl
test byte [esi + eax], dl
mov eax, dword [esp + 0x10]
je 0x52056c
mov eax, dword [eax + 0x20]
inc ebx
cmp ebx, eax
ja 0x521af6
mov eax, dword [esp + 0x10]
jmp 0x5219a0
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edi, dword [ebp + 0x5c]
ja 0x521a4f
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
cmp edx, 1
jb 0x521af6
mov eax, dword [esp + 0x10]
mov edi, dword [eax + 0x38]
cmp edi, dword [ebp + 0x54]
jae 0x521ac3
movzx esi, word [edi]
add edi, 2
mov dword [eax + 0x38], edi
cmp esi, 0xff
jbe 0x521a96
cmp byte [eax + 0x31], 0x6e
je case.default.0x527c59
jmp 0x521ab5
mov eax, dword [eax + 8]
mov ecx, esi
and ecx, 7
shr esi, 3
mov edx, 1
shl edx, cl
test byte [esi + eax], dl
mov eax, dword [esp + 0x10]
je 0x52056c
mov eax, dword [eax + 0x20]
inc ebx
cmp ebx, eax
ja 0x521af6
mov eax, dword [esp + 0x10]
jmp 0x521a74
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edi, dword [ebp + 0x5c]
ja 0x521ae1
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0x68]
mov ebp, dword [ebx + 0x24]
cmp eax, ebp
je 0x5200d8
cmp dword [esp + 0x18], 0
je 0x529787
mov edx, dword [esp + 0x14]
mov eax, ebx
mov edi, dword [eax + 0x38]
mov dword [eax + 4], edi
mov eax, dword [eax + 0x24]
test edx, edx
je 0x521c10
cmp dword [esp + 0x58], eax
jae 0x521c0a
nop word [eax + eax]
mov eax, dword [esp + 0x6c]
mov ebx, 1
cmp edi, dword [eax + 0x54]
jae 0x521be4
movzx esi, word [edi]
mov eax, esi
and eax, 0xfc00
cmp eax, 0xd800
jne 0x521b82
movzx eax, word [edi + 2]
and esi, 0x3ff
and eax, 0x3ff
shl esi, 0xa
or esi, eax
mov ebx, 2
add esi, 0x10000
mov eax, dword [esp + 0x10]
cmp esi, 0xff
jbe 0x521bb0
cmp byte [eax + 0x31], 0x6e
jne 0x521bcb
mov ebp, dword [esp + 0x6c]
mov edx, dword [esp + 0x14]
cmp dword [esp + 0x18], 2
jne 0x5298f6
mov edi, dword [esp + 0x68]
jmp 0x5200f0
mov eax, dword [eax + 8]
mov ecx, esi
and ecx, 7
shr esi, 3
mov edx, 1
shl edx, cl
test byte [esi + eax], dl
je 0x521b94
mov eax, dword [esp + 0x10]
lea edi, [edi + ebx*2]
mov dword [eax + 0x38], edi
mov eax, dword [esp + 0x58]
inc eax
mov dword [esp + 0x58], eax
cmp eax, ebp
jb 0x521b40
jmp 0x521b94
mov ebp, eax
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je 0x521b98
cmp edi, dword [ebp + 0x5c]
ja 0x521bfc
cmp dword [ebp + 0x24], 0
je 0x521b98
mov dword [ebp + 0x1c], ebx
cmp ecx, 1
ja 0x521512
jmp 0x521b98
mov ebp, dword [esp + 0x6c]
jmp 0x521b9c
mov ebx, dword [esp + 0x58]
cmp ebx, eax
jae 0x521cae
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x6c]
cmp edi, dword [ecx + 0x54]
jae 0x521c82
movzx esi, word [edi]
cmp esi, 0xff
jbe 0x521c56
cmp byte [eax + 0x31], 0x6e
jne 0x521c75
mov ebp, dword [esp + 0x6c]
mov edx, dword [esp + 0x14]
cmp dword [esp + 0x18], 2
jne 0x527905
mov edi, dword [esp + 0x68]
jmp 0x5200f0
mov eax, dword [eax + 8]
mov ecx, esi
and ecx, 7
shr esi, 3
mov edx, 1
shl edx, cl
test byte [esi + eax], dl
je 0x521c3a
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x6c]
add edi, 2
inc ebx
mov dword [eax + 0x38], edi
cmp ebx, ebp
jb 0x521c24
jmp 0x521c3a
mov ebp, dword [esp + 0x6c]
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je 0x521c3e
cmp edi, dword [ebp + 0x5c]
ja 0x521c9c
cmp dword [ebp + 0x24], 0
je 0x521c3e
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp 0x521c3e
mov ebp, dword [esp + 0x6c]
jmp 0x521c42
mov ecx, dword [esp + 0x10]
lea eax, [esi + 4]
mov dword [ecx + 8], eax
movzx eax, word [esi + 2]
lea edx, [esi + eax*2]
mov eax, ecx
mov dword [eax], edx
movzx edi, word [edx]
lea eax, [edi - 0x62]
cmp eax, 0xb
ja case.default.0x521cdf
movzx eax, byte [eax + 0x52a2cc]
jmp dword [eax*4 + 0x52a2c4]
mov ecx, dword [esp + 0x10]
lea eax, [edx + 2]
mov esi, dword [edi*4 + 0x5a41f4]
mov dword [ecx], eax
mov eax, dword [esp + 0x10]
mov ecx, dword [edi*4 + 0x5a41c8]
lea ebx, [eax + 0x24]
mov dword [eax + 0x20], ecx
mov eax, dword [edi*4 + 0x5a4220]
mov dword [ebx], esi
mov dword [esp + 0x18], eax
jmp 0x521d4e
mov eax, dword [esp + 0x10]
movzx ecx, word [edx + 2]
lea ebx, [eax + 0x24]
mov dword [eax + 0x20], ecx
movzx esi, word [edx + 4]
mov dword [ebx], esi
test esi, esi
jne 0x521d37
mov dword [ebx], 0xffffffff
or esi, 0xffffffff
movzx eax, word [edx]
mov eax, dword [eax*4 + 0x5a4220]
mov dword [esp + 0x18], eax
lea eax, [edx + 6]
mov edx, dword [esp + 0x10]
mov dword [edx], eax
mov eax, dword [esp + 0x10]
mov edi, ebx
cmp ecx, 1
jb 0x521dfc
mov esi, 1
jmp 0x521d85
mov eax, dword [esp + 0x10]
mov esi, 1
lea ebx, [eax + 0x24]
mov dword [ebx], 1
mov edi, ebx
mov dword [eax + 0x20], 1
jmp 0x521d85
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x38]
cmp edx, dword [ebp + 0x54]
jae 0x521edf
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov dword [eax + 0x38], edx
je 0x521dd6
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x521dd2
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
mov edx, dword [esp + 0x10]
add ecx, 0x10000
mov dword [edx + 0x38], eax
mov eax, dword [esp + 0x10]
push dword [esp + 0x14]
push dword [eax + 8]
push ecx
call fcn.00537ac0
add esp, 0xc
test eax, eax
mov eax, dword [esp + 0x10]
je 0x52056c
mov ecx, dword [eax + 0x20]
inc esi
cmp esi, ecx
jbe 0x521d81
mov esi, dword [edi]
mov edi, dword [esp + 0x68]
cmp ecx, esi
je 0x5200e8
cmp dword [esp + 0x18], 0
je 0x5298e7
mov edx, dword [eax + 0x38]
mov dword [eax + 4], edx
mov edi, dword [eax + 0x20]
cmp edi, esi
jae 0x521ec5
jmp 0x521e34
mov eax, dword [esp + 0x10]
mov esi, 1
cmp edx, dword [ebp + 0x54]
jae 0x521ea3
cmp dword [esp + 0x14], 0
movzx ecx, word [edx]
je 0x521e79
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x521e75
movzx eax, word [edx + 2]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
mov esi, 2
add ecx, 0x10000
mov eax, dword [esp + 0x10]
push dword [esp + 0x14]
push dword [eax + 8]
push ecx
call fcn.00537ac0
add esp, 0xc
test eax, eax
je 0x521ec5
mov ecx, dword [esp + 0x10]
lea eax, [esi + esi]
inc edi
add dword [ecx + 0x38], eax
mov eax, ecx
mov edx, dword [eax + 0x38]
cmp edi, dword [ebx]
jb 0x521e30
jmp 0x521ec5
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je 0x521ec5
cmp edx, dword [ebp + 0x5c]
ja 0x521eb9
cmp dword [ebp + 0x24], 0
je 0x521ec5
mov dword [ebp + 0x1c], esi
cmp ecx, 1
ja 0x521512
cmp dword [esp + 0x18], 2
je 0x5200e4
mov ebx, dword [esp + 0x10]
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0x65
jmp 0x529d02
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x521efd
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x521f51
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x521f3c
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov dword [eax + 0x38], edx
je 0x521f94
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x521f94
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
mov edx, dword [esp + 0x10]
add ecx, 0x10000
mov dword [edx + 0x38], eax
jmp 0x521f98
mov edx, dword [esp + 0x10]
cmp ecx, 0xff
ja case.0x522507.8203
mov eax, dword [ebp + 0x30]
test byte [ecx + eax], 8
je case.0x522507.8203
jmp case.default.0x527c59
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x521ff5
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x521fe0
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov dword [eax + 0x38], edx
je 0x522038
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x522038
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
mov edx, dword [esp + 0x10]
add ecx, 0x10000
mov dword [edx + 0x38], eax
jmp 0x52203c
mov edx, dword [esp + 0x10]
cmp ecx, 0xff
ja case.default.0x527c59
mov eax, dword [ebp + 0x30]
test byte [ecx + eax], 8
je case.default.0x527c59
lea eax, [esi + 2]
mov dword [edx], eax
jmp 0x5200e8
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x52209e
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x522089
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov dword [eax + 0x38], edx
je 0x5220e1
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x5220e1
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
mov edx, dword [esp + 0x10]
add ecx, 0x10000
mov dword [edx + 0x38], eax
jmp 0x5220e5
mov edx, dword [esp + 0x10]
cmp ecx, 0xff
ja case.0x522507.8203
mov eax, dword [ebp + 0x30]
test byte [ecx + eax], 1
je case.0x522507.8203
jmp case.default.0x527c59
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x522142
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x52212d
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov dword [eax + 0x38], edx
je 0x522185
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x522185
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
mov edx, dword [esp + 0x10]
add ecx, 0x10000
mov dword [edx + 0x38], eax
jmp 0x522189
mov edx, dword [esp + 0x10]
cmp ecx, 0xff
ja case.default.0x527c59
mov eax, dword [ebp + 0x30]
test byte [ecx + eax], 1
je case.default.0x527c59
lea eax, [esi + 2]
mov dword [edx], eax
jmp 0x5200e8
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x5221eb
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x5221d6
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov dword [eax + 0x38], edx
je 0x52222e
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x52222e
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
mov edx, dword [esp + 0x10]
add ecx, 0x10000
mov dword [edx + 0x38], eax
jmp 0x522232
mov edx, dword [esp + 0x10]
cmp ecx, 0xff
ja case.0x522507.8203
mov eax, dword [ebp + 0x30]
test byte [ecx + eax], 0x10
je case.0x522507.8203
jmp case.default.0x527c59
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x52228f
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x52227a
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov dword [eax + 0x38], edx
je 0x5222d2
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x5222d2
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
mov edx, dword [esp + 0x10]
add ecx, 0x10000
mov dword [edx + 0x38], eax
jmp 0x5222d6
mov edx, dword [esp + 0x10]
cmp ecx, 0xff
ja case.default.0x527c59
mov eax, dword [ebp + 0x30]
test byte [ecx + eax], 0x10
je case.default.0x527c59
lea eax, [esi + 2]
mov dword [edx], eax
jmp 0x5200e8
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x522338
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x522323
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov esi, edx
mov dword [eax + 0x38], edx
je 0x52237b
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x52237b
movzx eax, word [edx]
lea esi, [edx + 2]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
mov eax, dword [esp + 0x10]
add ecx, 0x10000
mov dword [eax + 0x38], esi
cmp ecx, 0x85
ja 0x5223ed
je case.0x522395.11
add ecx, 0xfffffff6
cmp ecx, 3
ja case.default.0x527c59
jmp dword [ecx*4 + 0x52a2d8]
cmp esi, dword [ebp + 0x54]
jb 0x5223d3
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.0x522395.10
cmp esi, dword [ebp + 0x5c]
ja 0x5223b7
cmp dword [ebp + 0x24], 0
je case.0x522395.10
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
mov eax, dword [esp + 0x10]
add dword [eax], 2
jmp 0x5200e8
cmp word [esi], 0xa
jne case.0x522395.10
mov ecx, dword [esp + 0x10]
lea eax, [esi + 2]
mov dword [ecx + 0x38], eax
mov eax, ecx
add dword [eax], 2
jmp 0x5200e8
sub ecx, 0x2028
je case.0x522395.11
sub ecx, 1
jne case.default.0x527c59
cmp word [ebp + 0x3e], 2
je case.default.0x527c59
mov eax, dword [esp + 0x10]
add dword [eax], 2
jmp 0x5200e8
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x522454
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x52243f
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov dword [eax + 0x38], edx
je 0x522497
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x522497
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
mov edx, dword [esp + 0x10]
add ecx, 0x10000
mov dword [edx + 0x38], eax
jmp 0x52249b
mov edx, dword [esp + 0x10]
cmp ecx, 0x2000
ja 0x5224df
je case.default.0x527c59
cmp ecx, 0xa0
ja 0x5224c8
je case.default.0x527c59
cmp ecx, 9
je case.default.0x527c59
cmp ecx, 0x20
jmp 0x52204f
cmp ecx, 0x1680
je case.default.0x527c59
cmp ecx, 0x180e
jmp 0x52204f
cmp ecx, 0x3000
ja case.0x522507.8203
je case.default.0x527c59
add ecx, 0xffffdfff
cmp ecx, 0x5e
ja case.0x522507.8203
movzx eax, byte [ecx + 0x52a2f0]
jmp dword [eax*4 + 0x52a2e8]
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x52254d
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x522538
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov dword [eax + 0x38], edx
je 0x522590
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x522590
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
mov edx, dword [esp + 0x10]
add ecx, 0x10000
mov dword [edx + 0x38], eax
jmp 0x522594
mov edx, dword [esp + 0x10]
cmp ecx, 0x2000
ja 0x5225e4
je case.0x522507.8203
cmp ecx, 0xa0
ja 0x5225c7
je case.0x522507.8203
cmp ecx, 9
je case.0x522507.8203
cmp ecx, 0x20
je case.0x522507.8203
jmp case.default.0x527c59
cmp ecx, 0x1680
je case.0x522507.8203
cmp ecx, 0x180e
je case.0x522507.8203
jmp case.default.0x527c59
cmp ecx, 0x3000
ja case.default.0x527c59
je case.0x522507.8203
add ecx, 0xffffdfff
cmp ecx, 0x5e
ja case.default.0x527c59
movzx eax, byte [ecx + 0x52a358]
jmp dword [eax*4 + 0x52a350]
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x522652
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x52263d
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov dword [eax + 0x38], edx
je 0x522695
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x522695
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
mov edx, dword [esp + 0x10]
add ecx, 0x10000
mov dword [edx + 0x38], eax
jmp 0x522699
mov edx, dword [esp + 0x10]
cmp ecx, 0x85
ja 0x5226ba
je case.default.0x527c59
add ecx, 0xfffffff6
cmp ecx, 3
ja case.0x522507.8203
jmp dword [ecx*4 + 0x52a3b8]
sub ecx, 0x2028
je case.default.0x527c59
sub ecx, 1
jne case.0x522507.8203
jmp case.default.0x527c59
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x522713
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x5226fe
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov dword [eax + 0x38], edx
je 0x522756
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x522756
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
mov edx, dword [esp + 0x10]
add ecx, 0x10000
mov dword [edx + 0x38], eax
jmp 0x52275a
mov edx, dword [esp + 0x10]
cmp ecx, 0x85
ja 0x52277b
je case.0x522507.8203
add ecx, 0xfffffff6
cmp ecx, 3
ja case.default.0x527c59
jmp dword [ecx*4 + 0x52a3c8]
sub ecx, 0x2028
je case.0x522507.8203
sub ecx, 1
je case.0x522507.8203
jmp case.default.0x527c59
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x38]
cmp ecx, dword [ebp + 0x54]
jb 0x5227d4
movzx eax, word [ebp + 0x3c]
mov edx, eax
test ax, ax
je case.default.0x527c59
cmp ecx, dword [ebp + 0x5c]
ja 0x5227bf
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp edx, 1
ja 0x521512
jmp case.default.0x527c59
movzx edx, word [ecx]
add ecx, 2
cmp dword [esp + 0x14], 0
mov dword [eax + 0x38], ecx
je 0x522815
mov eax, edx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x522815
movzx eax, word [ecx]
and edx, 0x3ff
and eax, 0x3ff
shl edx, 0xa
or edx, eax
lea eax, [ecx + 2]
mov ecx, dword [esp + 0x10]
add edx, 0x10000
mov dword [ecx + 0x38], eax
mov eax, edx
xor ebx, ebx
shr eax, 7
movzx ecx, word [eax*2 + 0x5ab420]
mov eax, edx
and eax, 0x7f
shl ecx, 7
add ecx, eax
movzx eax, word [ecx*2 + 0x5af820]
mov cl, byte [esp + 0x58]
cmp cl, 0xf
lea edi, [eax + eax*2]
sete bl
movzx eax, word [esi + 2]
cmp eax, 0xd
ja case.0x527c3c.15
jmp dword [eax*4 + 0x52a3d8]
cmp cl, 0xf
je case.default.0x527c59
mov eax, dword [esp + 0x10]
add dword [eax], 6
jmp 0x5200e4
mov al, byte [edi*4 + 0x5a7211]
cmp al, 9
je 0x522883
cmp al, 5
je 0x522883
cmp al, 8
je 0x522883
xor eax, eax
jmp 0x522888
mov eax, 1
cmp eax, ebx
jne 0x522860
jmp case.default.0x527c59
movzx ecx, byte [edi*4 + 0x5a7211]
xor edx, edx
movzx eax, word [esi + 4]
cmp eax, dword [ecx*4 + 0x5a4cb0]
sete dl
cmp edx, ebx
jne 0x522860
jmp case.default.0x527c59
movzx eax, byte [edi*4 + 0x5a7211]
xor ecx, ecx
cmp word [esi + 4], ax
sete cl
cmp ecx, ebx
jne 0x522860
jmp case.default.0x527c59
movzx eax, byte [edi*4 + 0x5a7210]
jmp 0x5228ba
movzx ecx, word [esi + 4]
movzx eax, byte [edi*4 + 0x5a7210]
cmp cx, ax
je 0x522883
movzx edx, word [edi*4 + 0x5a7218]
mov eax, ecx
shr eax, 5
and edx, 0x3ff
add edx, eax
and ecx, 0x1f
mov eax, 1
shl eax, cl
test dword [edx*4 + 0x5a6f18], eax
jne 0x522883
xor eax, eax
jmp 0x522888
movzx eax, byte [edi*4 + 0x5a7211]
mov eax, dword [eax*4 + 0x5a4cb0]
cmp eax, 1
je 0x522883
cmp eax, 3
je 0x522883
xor eax, eax
jmp 0x522888
cmp edx, 0x20
ja 0x52295c
je case.0x522850.0
add edx, 0xfffffff7
cmp edx, 4
ja case.0x5229cc.8203
jmp dword [edx*4 + 0x52a410]
cmp edx, 0x2000
ja 0x5229ac
je case.0x522850.0
cmp edx, 0x1680
ja 0x5229a4
je case.0x522850.0
sub edx, 0x85
je case.0x522850.0
sub edx, 0x1b
je case.0x522850.0
movzx eax, byte [edi*4 + 0x5a7211]
xor ecx, ecx
cmp dword [eax*4 + 0x5a4cb0], 6
jmp 0x5228c0
cmp edx, 0x180e
jmp 0x522987
cmp edx, 0x3000
ja case.0x5229cc.8203
je case.0x522850.0
add edx, 0xffffdfff
cmp edx, 0x5e
ja case.0x5229cc.8203
movzx eax, byte [edx + 0x52a42c]
jmp dword [eax*4 + 0x52a424]
movzx eax, byte [edi*4 + 0x5a7211]
mov eax, dword [eax*4 + 0x5a4cb0]
cmp eax, 1
je 0x522883
cmp eax, 3
je 0x522883
cmp edx, 0x5f
je 0x522883
xor eax, eax
jmp 0x522888
movzx eax, word [esi + 4]
mov ecx, dword [eax*4 + 0x5a6c48]
lea eax, [eax*4 + 0x5a6c48]
cmp edx, ecx
jb 0x522a2d
nop word [eax + eax]
lea eax, [eax + 4]
cmp edx, ecx
je 0x522a3d
mov ecx, dword [eax]
cmp edx, ecx
jae 0x522a20
cmp byte [esp + 0x58], 0xf
je 0x522860
jmp case.default.0x527c59
cmp byte [esp + 0x58], 0xf
jne 0x522860
jmp case.default.0x527c59
cmp edx, 0x24
je 0x522883
cmp edx, 0x40
je 0x522883
cmp edx, 0x60
je 0x522883
cmp edx, 0xa0
jb 0x522a7c
cmp edx, 0xd7ff
jbe 0x522883
cmp edx, 0xe000
jae 0x522883
xor eax, eax
jmp 0x522888
mov ax, word [edi*4 + 0x5a7218]
xor ecx, ecx
shr ax, 0xb
cmp ax, word [esi + 4]
jmp 0x5228c0
movzx ecx, word [esi + 4]
movzx edx, word [edi*4 + 0x5a721a]
mov eax, ecx
shr eax, 5
and edx, 0xfff
add edx, eax
and ecx, 0x1f
mov eax, 1
shl eax, cl
mov ecx, dword [edx*4 + 0x5a66c0]
and ecx, eax
neg ecx
sbb ecx, ecx
neg ecx
jmp 0x5228c3
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x522b1c
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x522b07
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
mov ebx, dword [esp + 0x14]
mov esi, edx
mov dword [eax + 0x38], edx
test ebx, ebx
je 0x522b60
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x522b60
movzx eax, word [edx]
lea esi, [edx + 2]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
mov eax, dword [esp + 0x10]
add ecx, 0x10000
mov dword [eax + 0x38], esi
push 0
push ebx
push dword [ebp + 0x54]
push dword [ebp + 0x4c]
push esi
push ecx
call fcn.005371d0
mov ecx, dword [esp + 0x28]
add esp, 0x18
mov dword [ecx + 0x38], eax
cmp eax, dword [ebp + 0x54]
jb 0x522ba5
movzx ecx, word [ebp + 0x3c]
mov edx, ecx
test cx, cx
je 0x522ba5
cmp eax, dword [ebp + 0x5c]
ja 0x522b95
cmp dword [ebp + 0x24], 0
je 0x522ba5
mov dword [ebp + 0x1c], 1
cmp edx, 1
ja 0x521512
mov eax, dword [esp + 0x10]
mov edx, ebx
add dword [eax], 2
jmp 0x5200f0
mov eax, dword [esp + 0x10]
movzx ebp, word [esi + 2]
add esi, 4
mov ecx, esi
mov dword [eax + 0x24], ebp
mov dword [eax + 0x20], ebp
mov dword [eax], esi
jmp 0x522cce
mov ecx, dword [esp + 0x10]
xor ebx, ebx
mov dword [ecx + 0x20], 0
movzx eax, word [esi + 2]
mov dword [ecx + 0x24], eax
mov eax, ecx
cmp word [esi], 0x5c
setne bl
add esi, 4
mov dword [esp + 0x18], ebx
mov ecx, esi
mov dword [eax], esi
xor ebp, ebp
jmp 0x522cce
mov eax, dword [esp + 0x10]
add esi, 2
mov dword [esp + 0x18], 2
mov ecx, esi
xor ebp, ebp
mov dword [eax + 0x20], 0
mov dword [eax + 0x24], 0xffffffff
mov dword [eax], esi
jmp 0x522cce
mov eax, dword [esp + 0x10]
add esi, 2
mov dword [esp + 0x18], 2
mov ecx, esi
mov ebp, 1
mov dword [eax + 0x20], 1
mov dword [eax + 0x24], 0xffffffff
mov dword [eax], esi
jmp 0x522cce
mov eax, dword [esp + 0x10]
add esi, 2
mov dword [esp + 0x18], 2
mov ecx, esi
xor ebp, ebp
mov dword [eax + 0x20], 0
mov dword [eax + 0x24], 1
mov dword [eax], esi
jmp 0x522cce
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x18], 2
mov dword [ecx + 0x20], 0
movzx eax, word [esi + 2]
add esi, 4
mov dword [ecx + 0x24], eax
xor ebp, ebp
mov eax, ecx
mov ecx, esi
mov dword [eax], esi
jmp 0x522cce
movzx ecx, word [esi]
add esi, 2
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x10]
mov ebp, dword [ecx*4 + 0x5a41fc]
mov dword [eax], esi
mov dword [eax + 0x20], ebp
mov eax, dword [ecx*4 + 0x5a4228]
mov dword [edx + 0x24], eax
mov eax, dword [ecx*4 + 0x5a4254]
mov dword [esp + 0x18], eax
mov eax, edx
mov ecx, dword [eax]
mov edi, dword [esp + 0x10]
add ecx, 2
movzx eax, word [esi]
mov edx, eax
mov dword [edi + 0x28], eax
mov eax, edi
mov dword [eax], ecx
cmp edx, 0x10
je 0x522cf0
cmp edx, 0xf
je 0x522cf0
or edx, 0xffffffff
jmp 0x522d0c
movzx edx, word [ecx]
add ecx, 2
mov ebx, dword [esp + 0x10]
mov dword [eax], ecx
movzx eax, word [ecx]
mov dword [ebx + 0x2c], eax
lea eax, [ecx + 2]
mov dword [ebx], eax
mov eax, ebx
mov ebp, dword [ebx + 0x20]
mov dword [esp + 0x5c], edx
test ebp, ebp
je 0x522e71
mov edi, dword [eax + 0x28]
test edx, edx
js 0x52399b
xor ebx, ebx
cmp edi, 0xf
sete bl
cmp edx, 0xd
ja case.0x527c3c.15
jmp dword [edx*4 + 0x52a48c]
cmp edi, 0xf
je 0x52042d
mov ecx, dword [eax + 0x38]
mov esi, 1
mov ebx, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x6c]
cmp ecx, dword [eax + 0x54]
jae 0x522d8c
movzx edx, word [ecx]
lea eax, [ecx + 2]
mov dword [ebx + 0x38], eax
mov ecx, eax
test edi, edi
je 0x522d80
and edx, 0xfc00
cmp edx, 0xd800
jne 0x522d80
lea ecx, [eax + 2]
mov dword [ebx + 0x38], ecx
inc esi
cmp esi, ebp
jbe 0x522d54
mov esi, edi
jmp 0x522e79
mov ebp, eax
movzx eax, word [ebp + 0x3c]
mov edx, eax
test ax, ax
je 0x522db4
cmp ecx, dword [ebp + 0x5c]
ja 0x522da4
cmp dword [ebp + 0x24], 0
je 0x522db4
mov dword [ebp + 0x1c], 1
cmp edx, 1
ja 0x521512
mov eax, dword [esp + 0x10]
xor esi, esi
mov edx, edi
jmp 0x52043b
mov esi, dword [eax + 0x38]
mov edi, 1
jmp 0x522dd4
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x6c]
cmp esi, dword [ecx + 0x54]
jae 0x522ec7
cmp dword [esp + 0x14], 0
lea edx, [esi + 2]
movzx ecx, word [esi]
mov esi, edx
mov dword [eax + 0x38], edx
je 0x522e24
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x522e24
movzx eax, word [edx]
lea esi, [edx + 2]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
mov eax, dword [esp + 0x10]
add ecx, 0x10000
mov dword [eax + 0x38], esi
mov eax, ecx
and ecx, 0x7f
shr eax, 7
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
mov al, byte [eax*4 + 0x5a7211]
cmp al, 9
je 0x522e5b
cmp al, 5
je 0x522e5b
cmp al, 8
je 0x522e5b
xor eax, eax
jmp 0x522e60
mov eax, 1
cmp eax, ebx
je 0x52042d
inc edi
cmp edi, ebp
jbe 0x522dd0
mov ebx, dword [esp + 0x10]
mov esi, dword [esp + 0x14]
mov edi, dword [ebx + 0x20]
mov ebp, dword [ebx + 0x24]
mov dword [esp + 0x58], edi
cmp edi, ebp
je 0x52082d
cmp dword [esp + 0x18], 0
mov ecx, dword [esp + 0x5c]
je 0x52979d
mov esi, dword [ebx + 0x38]
mov dword [ebx + 4], esi
mov ebx, dword [ebx + 0x28]
test ecx, ecx
js 0x52562a
xor eax, eax
cmp ebx, 0xf
sete al
mov dword [esp + 0x5c], eax
cmp ecx, 0xd
ja case.0x527c3c.15
jmp dword [ecx*4 + 0x52a4c4]
mov ebp, ecx
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp esi, dword [ebp + 0x5c]
ja 0x522ee7
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
mov esi, dword [eax + 0x38]
mov edi, 1
jmp 0x522f14
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x6c]
cmp esi, dword [ecx + 0x54]
jae 0x522fb5
cmp dword [esp + 0x14], 0
lea edx, [esi + 2]
movzx ecx, word [esi]
mov esi, edx
mov dword [eax + 0x38], edx
je 0x522f64
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x522f64
movzx eax, word [edx]
lea esi, [edx + 2]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
mov eax, dword [esp + 0x10]
add ecx, 0x10000
mov dword [eax + 0x38], esi
mov edx, dword [esp + 0x10]
mov eax, ecx
shr eax, 7
and ecx, 0x7f
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
xor ecx, ecx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx eax, byte [eax*4 + 0x5a7211]
mov eax, dword [eax*4 + 0x5a4cb0]
cmp eax, dword [edx + 0x2c]
sete cl
cmp ecx, ebx
je 0x52042d
inc edi
cmp edi, ebp
jbe 0x522f10
jmp 0x522e71
mov ebp, ecx
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp esi, dword [ebp + 0x5c]
ja 0x522fd5
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
mov esi, dword [eax + 0x38]
mov edi, 1
jmp 0x522ff8
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x6c]
cmp esi, dword [ecx + 0x54]
jae 0x523092
cmp dword [esp + 0x14], 0
lea edx, [esi + 2]
movzx ecx, word [esi]
mov esi, edx
mov dword [eax + 0x38], edx
je 0x523048
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x523048
movzx eax, word [edx]
lea esi, [edx + 2]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
mov eax, dword [esp + 0x10]
add ecx, 0x10000
mov dword [eax + 0x38], esi
mov edx, dword [esp + 0x10]
mov eax, ecx
shr eax, 7
and ecx, 0x7f
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
xor ecx, ecx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx eax, byte [eax*4 + 0x5a7211]
cmp eax, dword [edx + 0x2c]
sete cl
cmp ecx, ebx
je 0x52042d
inc edi
cmp edi, ebp
jbe 0x522ff4
jmp 0x522e71
mov ebp, ecx
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp esi, dword [ebp + 0x5c]
ja 0x5230b2
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
mov esi, dword [eax + 0x38]
mov edi, 1
jmp 0x5230d5
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x6c]
cmp esi, dword [ecx + 0x54]
jae 0x52316f
cmp dword [esp + 0x14], 0
lea edx, [esi + 2]
movzx ecx, word [esi]
mov esi, edx
mov dword [eax + 0x38], edx
je 0x523125
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x523125
movzx eax, word [edx]
lea esi, [edx + 2]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
mov eax, dword [esp + 0x10]
add ecx, 0x10000
mov dword [eax + 0x38], esi
mov edx, dword [esp + 0x10]
mov eax, ecx
shr eax, 7
and ecx, 0x7f
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
xor ecx, ecx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx eax, byte [eax*4 + 0x5a7210]
cmp eax, dword [edx + 0x2c]
sete cl
cmp ecx, ebx
je 0x52042d
inc edi
cmp edi, ebp
jbe 0x5230d1
jmp 0x522e71
mov ebp, ecx
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp esi, dword [ebp + 0x5c]
ja 0x52318f
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
mov esi, dword [eax + 0x38]
mov edi, 1
jmp 0x5231b4
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x6c]
cmp esi, dword [ecx + 0x54]
jae 0x52327e
cmp dword [esp + 0x14], 0
lea edx, [esi + 2]
movzx ecx, word [esi]
mov esi, edx
mov dword [eax + 0x38], edx
je 0x523204
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x523204
movzx eax, word [edx]
lea esi, [edx + 2]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
mov eax, dword [esp + 0x10]
add ecx, 0x10000
mov dword [eax + 0x38], esi
mov eax, ecx
and ecx, 0x7f
shr eax, 7
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
movzx eax, word [eax*2 + 0x5af820]
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x2c]
movzx eax, byte [edx*4 + 0x5a7210]
cmp eax, ecx
je 0x523263
movzx edx, word [edx*4 + 0x5a7218]
mov eax, ecx
shr eax, 5
and edx, 0x3ff
add edx, eax
and ecx, 0x1f
mov eax, 1
shl eax, cl
test dword [edx*4 + 0x5a6f18], eax
jne 0x523263
xor eax, eax
jmp 0x523268
mov eax, 1
cmp eax, ebx
je 0x52042d
inc edi
cmp edi, ebp
jbe 0x5231b0
jmp 0x522e71
mov ebp, ecx
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp esi, dword [ebp + 0x5c]
ja 0x52329e
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
mov esi, dword [eax + 0x38]
mov edi, 1
jmp 0x5232c4
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x6c]
cmp esi, dword [ecx + 0x54]
jae 0x52336c
cmp dword [esp + 0x14], 0
lea edx, [esi + 2]
movzx ecx, word [esi]
mov esi, edx
mov dword [eax + 0x38], edx
je 0x523314
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x523314
movzx eax, word [edx]
lea esi, [edx + 2]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
mov eax, dword [esp + 0x10]
add ecx, 0x10000
mov dword [eax + 0x38], esi
mov eax, ecx
and ecx, 0x7f
shr eax, 7
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx eax, byte [eax*4 + 0x5a7211]
mov eax, dword [eax*4 + 0x5a4cb0]
cmp eax, 1
je 0x523351
cmp eax, 3
je 0x523351
xor eax, eax
jmp 0x523356
mov eax, 1
cmp eax, ebx
je 0x52042d
inc edi
cmp edi, ebp
jbe 0x5232c0
jmp 0x522e71
mov ebp, ecx
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp esi, dword [ebp + 0x5c]
ja 0x52338c
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
mov ebp, dword [esp + 0x6c]
mov esi, 1
nop word [eax + eax]
mov edx, dword [eax + 0x38]
cmp edx, dword [ebp + 0x54]
jae 0x5234d3
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov dword [eax + 0x38], edx
je 0x5233ff
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x5233ff
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
mov edx, dword [esp + 0x10]
add ecx, 0x10000
mov dword [edx + 0x38], eax
jmp 0x523403
mov edx, dword [esp + 0x10]
cmp ecx, 0x20
ja 0x52341d
je case.0x5234c7.8193
lea eax, [ecx - 9]
cmp eax, 4
ja case.0x5234c7.8203
jmp dword [eax*4 + 0x52a4fc]
cmp ecx, 0x2000
ja 0x5234ab
je case.0x5234c7.8193
cmp ecx, 0x1680
ja 0x5234a3
je case.0x5234c7.8193
mov eax, ecx
sub eax, 0x85
je case.0x5234c7.8193
sub eax, 0x1b
je case.0x5234c7.8193
mov eax, ecx
and ecx, 0x7f
shr eax, 7
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
xor ecx, ecx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx eax, byte [eax*4 + 0x5a7211]
cmp dword [eax*4 + 0x5a4cb0], 6
sete cl
cmp ecx, ebx
je case.default.0x527c59
inc esi
cmp esi, dword [edx + 0x20]
ja 0x522e71
mov eax, dword [esp + 0x10]
jmp 0x5233b0
cmp ecx, 0x180e
jmp 0x52344d
cmp ecx, 0x3000
ja case.0x5234c7.8203
je case.0x5234c7.8193
lea eax, [ecx - 0x2001]
cmp eax, 0x5e
ja case.0x5234c7.8203
movzx eax, byte [eax + 0x52a518]
jmp dword [eax*4 + 0x52a510]
cmp edi, 0xf
jmp 0x52348a
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x5234f1
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
mov esi, dword [eax + 0x38]
mov edi, 1
jmp 0x523514
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x6c]
cmp esi, dword [ecx + 0x54]
jae 0x5235c3
cmp dword [esp + 0x14], 0
lea ecx, [esi + 2]
movzx edx, word [esi]
mov esi, ecx
mov dword [eax + 0x38], ecx
je 0x523564
mov eax, edx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x523564
movzx eax, word [ecx]
lea esi, [ecx + 2]
and edx, 0x3ff
and eax, 0x3ff
shl edx, 0xa
or edx, eax
mov eax, dword [esp + 0x10]
add edx, 0x10000
mov dword [eax + 0x38], esi
mov eax, edx
shr eax, 7
movzx ecx, word [eax*2 + 0x5ab420]
mov eax, edx
and eax, 0x7f
shl ecx, 7
add ecx, eax
movzx eax, word [ecx*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx eax, byte [eax*4 + 0x5a7211]
mov eax, dword [eax*4 + 0x5a4cb0]
cmp eax, 1
je 0x5235a8
cmp eax, 3
je 0x5235a8
cmp edx, 0x5f
je 0x5235a8
xor eax, eax
jmp 0x5235ad
mov eax, 1
cmp eax, ebx
je 0x52042d
inc edi
cmp edi, ebp
jbe 0x523510
jmp 0x522e71
mov ebp, ecx
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp esi, dword [ebp + 0x5c]
ja 0x5235e3
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
mov ebx, dword [esp + 0x14]
mov esi, 1
mov ecx, dword [esp + 0x6c]
mov edx, dword [eax + 0x38]
cmp edx, dword [ecx + 0x54]
jae 0x5236a2
movzx ecx, word [edx]
add edx, 2
mov dword [eax + 0x38], edx
test ebx, ebx
je 0x523653
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x52364f
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
mov edx, dword [esp + 0x10]
add ecx, 0x10000
mov dword [edx + 0x38], eax
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x2c]
mov edx, dword [eax*4 + 0x5a6c48]
lea eax, [eax*4 + 0x5a6c48]
cmp ecx, edx
jb 0x523675
lea eax, [eax + 4]
cmp ecx, edx
je 0x52368c
mov edx, dword [eax]
cmp ecx, edx
jae 0x523668
cmp edi, 0xf
jne 0x523691
inc esi
cmp esi, ebp
ja 0x522e71
mov eax, dword [esp + 0x10]
jmp 0x523601
cmp edi, 0xf
jne 0x52367a
mov eax, dword [esp + 0x10]
xor esi, esi
mov ebp, dword [esp + 0x6c]
mov edx, ebx
jmp 0x52043b
mov ebp, ecx
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je 0x5236ca
cmp edx, dword [ebp + 0x5c]
ja 0x5236ba
cmp dword [ebp + 0x24], 0
je 0x5236ca
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
mov eax, dword [esp + 0x10]
xor esi, esi
mov edx, ebx
jmp 0x52043b
mov esi, 1
jmp 0x5236e4
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x6c]
mov edx, dword [eax + 0x38]
cmp edx, dword [ecx + 0x54]
jae 0x52377b
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov dword [eax + 0x38], edx
je 0x523735
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x523735
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
mov edx, dword [esp + 0x10]
add ecx, 0x10000
mov dword [edx + 0x38], eax
cmp ecx, 0x24
je 0x523760
cmp ecx, 0x40
je 0x523760
cmp ecx, 0x60
je 0x523760
cmp ecx, 0xa0
jb 0x523754
cmp ecx, 0xd7ff
jbe 0x523760
cmp ecx, 0xe000
jae 0x523760
xor eax, eax
jmp 0x523765
mov eax, 1
cmp eax, ebx
je 0x52042d
inc esi
cmp esi, ebp
jbe 0x5236e0
jmp 0x522e71
mov ebp, ecx
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x52379b
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
mov esi, dword [eax + 0x38]
mov edi, 1
jmp 0x5237c4
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x6c]
cmp esi, dword [ecx + 0x54]
jae 0x523861
cmp dword [esp + 0x14], 0
lea edx, [esi + 2]
movzx ecx, word [esi]
mov esi, edx
mov dword [eax + 0x38], edx
je 0x523814
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x523814
movzx eax, word [edx]
lea esi, [edx + 2]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
mov eax, dword [esp + 0x10]
add ecx, 0x10000
mov dword [eax + 0x38], esi
mov edx, dword [esp + 0x10]
mov eax, ecx
shr eax, 7
and ecx, 0x7f
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
xor ecx, ecx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx eax, word [eax*4 + 0x5a7218]
shr eax, 0xb
cmp eax, dword [edx + 0x2c]
sete cl
cmp ecx, ebx
je 0x52042d
inc edi
cmp edi, ebp
jbe 0x5237c0
jmp 0x522e71
mov ebp, ecx
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp esi, dword [ebp + 0x5c]
ja 0x523881
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
mov esi, dword [eax + 0x38]
mov edi, 1
nop
mov ecx, dword [esp + 0x6c]
cmp esi, dword [ecx + 0x54]
jae 0x523966
cmp dword [esp + 0x14], 0
lea ecx, [esi + 2]
movzx edx, word [esi]
mov esi, ecx
mov dword [eax + 0x38], ecx
je 0x5238f4
mov eax, edx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x5238f0
movzx eax, word [ecx]
lea esi, [ecx + 2]
and edx, 0x3ff
and eax, 0x3ff
shl edx, 0xa
or edx, eax
mov eax, dword [esp + 0x10]
add edx, 0x10000
mov dword [eax + 0x38], esi
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x2c]
mov eax, edx
shr eax, 7
and edx, 0x7f
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, edx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx edx, word [eax*4 + 0x5a721a]
mov eax, ecx
shr eax, 5
and edx, 0xfff
add edx, eax
and ecx, 0x1f
mov eax, 1
shl eax, cl
mov ecx, dword [edx*4 + 0x5a66c0]
and ecx, eax
mov eax, dword [esp + 0x10]
neg ecx
sbb ecx, ecx
neg ecx
cmp ecx, ebx
je 0x52395b
inc edi
cmp edi, ebp
jbe 0x5238a0
jmp 0x522e71
mov ebp, dword [esp + 0x6c]
xor esi, esi
jmp 0x520437
mov ebp, ecx
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp esi, dword [ebp + 0x5c]
ja 0x523986
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
cmp edi, 0x16
jne 0x523a8c
mov ebp, dword [esp + 0x6c]
mov edi, 1
mov esi, dword [ebp + 0x54]
jmp 0x5239b6
mov eax, dword [esp + 0x10]
mov edx, dword [eax + 0x38]
cmp edx, esi
jae 0x523a59
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov esi, edx
mov ebx, dword [esp + 0x10]
mov dword [eax + 0x38], edx
je 0x523a04
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x523a04
movzx eax, word [edx]
lea esi, [edx + 2]
and ecx, 0x3ff
mov dword [ebx + 0x38], esi
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
add ecx, 0x10000
push 0
push dword [esp + 0x18]
push dword [ebp + 0x54]
push dword [ebp + 0x4c]
push esi
push ecx
call fcn.005371d0
mov dword [ebx + 0x38], eax
add esp, 0x18
mov esi, dword [ebp + 0x54]
cmp eax, esi
jb 0x523a4a
movzx ecx, word [ebp + 0x3c]
mov edx, ecx
test cx, cx
je 0x523a4a
cmp eax, dword [ebp + 0x5c]
ja 0x523a3a
cmp dword [ebp + 0x24], 0
je 0x523a4a
mov dword [ebp + 0x1c], 1
cmp edx, 1
ja 0x521512
inc edi
cmp edi, dword [ebx + 0x20]
jbe 0x5239b2
jmp 0x522e75
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x523a77
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
lea eax, [edi - 6]
cmp eax, 0xf
ja case.0x527c3c.15
mov esi, dword [esp + 0x14]
test esi, esi
je 0x52441a
jmp dword [eax*4 + 0x52a578]
jmp dword [eax*4 + 0x52a6b8]
cmp edi, ebp
jae 0x525607
nop dword [eax + eax]
mov eax, dword [esp + 0x6c]
mov ecx, 1
cmp esi, dword [eax + 0x54]
jae 0x524c4a
cmp dword [esp + 0x14], 0
je 0x524c2d
mov eax, 0xfc00
mov edx, 0xd800
and ax, word [esi]
cmp ax, dx
mov eax, 2
cmove ecx, eax
cmp ebx, 0xf
je 0x525607
mov eax, dword [esp + 0x10]
lea esi, [esi + ecx*2]
inc edi
mov dword [eax + 0x38], esi
cmp edi, ebp
jb 0x524c00
jmp 0x525607
mov ebp, eax
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je 0x52560b
cmp esi, dword [ebp + 0x5c]
ja 0x524c6a
cmp dword [ebp + 0x24], 0
je 0x52560b
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp 0x52560b
cmp edi, ebp
jae 0x525607
mov ebx, dword [esp + 0x5c]
nop dword [eax + eax]
mov eax, dword [esp + 0x6c]
mov edx, 1
cmp esi, dword [eax + 0x54]
jae 0x524d35
cmp dword [esp + 0x14], 0
movzx ecx, word [esi]
je 0x524cd9
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x524cd9
movzx eax, word [esi + 2]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
mov edx, 2
add ecx, 0x10000
mov eax, ecx
and ecx, 0x7f
shr eax, 7
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
mov al, byte [eax*4 + 0x5a7211]
cmp al, 9
je 0x524d10
cmp al, 5
je 0x524d10
cmp al, 8
je 0x524d10
xor eax, eax
jmp 0x524d15
mov eax, 1
cmp eax, ebx
je 0x525607
mov eax, dword [esp + 0x10]
lea esi, [esi + edx*2]
inc edi
mov dword [eax + 0x38], esi
cmp edi, ebp
jb 0x524c90
jmp 0x525607
mov ebp, eax
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je 0x52560b
cmp esi, dword [ebp + 0x5c]
ja 0x524d55
cmp dword [ebp + 0x24], 0
je 0x52560b
mov dword [ebp + 0x1c], edx
cmp ecx, 1
ja 0x521512
jmp 0x52560b
cmp edi, ebp
jae 0x525607
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x6c]
mov edx, 1
cmp esi, dword [eax + 0x54]
jae 0x524d35
cmp dword [esp + 0x14], 0
movzx ecx, word [esi]
je 0x524db7
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x524db7
movzx eax, word [esi + 2]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
mov edx, 2
add ecx, 0x10000
mov eax, ecx
and ecx, 0x7f
shr eax, 7
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
xor ecx, ecx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx eax, byte [eax*4 + 0x5a7211]
mov eax, dword [eax*4 + 0x5a4cb0]
cmp eax, dword [ebx + 0x2c]
sete cl
cmp ecx, dword [esp + 0x5c]
je 0x525607
inc edi
lea esi, [esi + edx*2]
mov dword [ebx + 0x38], esi
cmp edi, ebp
jb 0x524d72
jmp 0x525607
cmp edi, ebp
jae 0x525607
mov ebx, dword [esp + 0x10]
nop dword [eax + eax]
mov eax, dword [esp + 0x6c]
mov edx, 1
cmp esi, dword [eax + 0x54]
jae 0x524d35
cmp dword [esp + 0x14], 0
movzx ecx, word [esi]
je 0x524e69
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x524e69
movzx eax, word [esi + 2]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
mov edx, 2
add ecx, 0x10000
mov eax, ecx
and ecx, 0x7f
shr eax, 7
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
xor ecx, ecx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx eax, byte [eax*4 + 0x5a7211]
cmp eax, dword [ebx + 0x2c]
sete cl
cmp ecx, dword [esp + 0x5c]
je 0x525607
inc edi
lea esi, [esi + edx*2]
mov dword [ebx + 0x38], esi
cmp edi, ebp
jb 0x524e20
jmp 0x525607
cmp edi, ebp
jae 0x525607
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x6c]
mov edx, 1
cmp esi, dword [eax + 0x54]
jae 0x524d35
cmp dword [esp + 0x14], 0
movzx ecx, word [esi]
je 0x524f0c
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x524f0c
movzx eax, word [esi + 2]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
mov edx, 2
add ecx, 0x10000
mov eax, ecx
and ecx, 0x7f
shr eax, 7
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
xor ecx, ecx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx eax, byte [eax*4 + 0x5a7210]
cmp eax, dword [ebx + 0x2c]
sete cl
cmp ecx, dword [esp + 0x5c]
je 0x525607
inc edi
lea esi, [esi + edx*2]
mov dword [ebx + 0x38], esi
cmp edi, ebp
jb 0x524ec3
jmp 0x525607
cmp edi, ebp
jae 0x525607
mov ebx, dword [esp + 0x5c]
nop word [eax + eax]
mov eax, dword [esp + 0x6c]
mov edi, 1
cmp esi, dword [eax + 0x54]
jae 0x525045
cmp dword [esp + 0x14], 0
movzx ecx, word [esi]
je 0x524fb9
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x524fb9
movzx eax, word [esi + 2]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
mov edi, 2
add ecx, 0x10000
mov eax, ecx
and ecx, 0x7f
shr eax, 7
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
movzx eax, word [eax*2 + 0x5af820]
lea edx, [eax + eax*2]
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x2c]
movzx eax, byte [edx*4 + 0x5a7210]
cmp eax, ecx
je 0x525018
movzx edx, word [edx*4 + 0x5a7218]
mov eax, ecx
shr eax, 5
and edx, 0x3ff
add edx, eax
and ecx, 0x1f
mov eax, 1
shl eax, cl
test dword [edx*4 + 0x5a6f18], eax
jne 0x525018
xor eax, eax
jmp 0x52501d
mov eax, 1
cmp eax, ebx
je 0x525607
mov eax, dword [esp + 0x10]
lea esi, [esi + edi*2]
mov dword [eax + 0x38], esi
mov eax, dword [esp + 0x58]
inc eax
mov dword [esp + 0x58], eax
cmp eax, ebp
jb 0x524f70
jmp 0x525607
mov ebp, eax
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je 0x52560b
cmp esi, dword [ebp + 0x5c]
ja 0x525065
cmp dword [ebp + 0x24], 0
je 0x52560b
mov dword [ebp + 0x1c], edi
jmp 0x524d58
cmp edi, ebp
jae 0x525607
mov ebx, dword [esp + 0x5c]
nop dword [eax]
mov eax, dword [esp + 0x6c]
mov edx, 1
cmp esi, dword [eax + 0x54]
jae 0x524d35
cmp dword [esp + 0x14], 0
movzx ecx, word [esi]
je 0x5250c9
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x5250c9
movzx eax, word [esi + 2]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
mov edx, 2
add ecx, 0x10000
mov eax, ecx
and ecx, 0x7f
shr eax, 7
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx eax, byte [eax*4 + 0x5a7211]
mov eax, dword [eax*4 + 0x5a4cb0]
cmp eax, 1
je 0x525106
cmp eax, 3
je 0x525106
xor eax, eax
jmp 0x52510b
mov eax, 1
cmp eax, ebx
je 0x525607
mov eax, dword [esp + 0x10]
lea esi, [esi + edx*2]
inc edi
mov dword [eax + 0x38], esi
cmp edi, ebp
jb 0x525080
jmp 0x525607
cmp edi, ebp
mov ebp, dword [esp + 0x6c]
jae 0x52560b
nop word [eax + eax]
mov edx, 1
cmp esi, dword [ebp + 0x54]
jae 0x524d37
cmp dword [esp + 0x14], 0
movzx ecx, word [esi]
je 0x525185
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x525185
movzx eax, word [esi + 2]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
mov edx, 2
add ecx, 0x10000
cmp ecx, 0x20
ja 0x52519f
je case.0x525255.8193
lea eax, [ecx - 9]
cmp eax, 4
ja case.0x525255.8203
jmp dword [eax*4 + 0x52a7f8]
cmp ecx, 0x2000
ja 0x525239
je case.0x525255.8193
cmp ecx, 0x1680
ja 0x525231
je case.0x525255.8193
mov eax, ecx
sub eax, 0x85
je case.0x525255.8193
sub eax, 0x1b
je case.0x525255.8193
mov eax, ecx
and ecx, 0x7f
shr eax, 7
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
xor ecx, ecx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx eax, byte [eax*4 + 0x5a7211]
cmp dword [eax*4 + 0x5a4cb0], 6
sete cl
cmp ecx, dword [esp + 0x5c]
je 0x52560b
mov eax, dword [esp + 0x10]
lea esi, [esi + edx*2]
inc edi
mov dword [eax + 0x38], esi
cmp edi, dword [eax + 0x24]
jb 0x525140
jmp 0x52560b
cmp ecx, 0x180e
jmp 0x5251d3
cmp ecx, 0x3000
ja case.0x525255.8203
je case.0x525255.8193
lea eax, [ecx - 0x2001]
cmp eax, 0x5e
ja case.0x525255.8203
movzx eax, byte [eax + 0x52a814]
jmp dword [eax*4 + 0x52a80c]
cmp ebx, 0xf
je 0x52560b
mov eax, dword [esp + 0x10]
mov esi, dword [eax + 0x38]
jmp 0x52521c
cmp edi, ebp
jae 0x525607
mov ebx, dword [esp + 0x5c]
nop word [eax + eax]
mov eax, dword [esp + 0x6c]
mov edi, 1
cmp esi, dword [eax + 0x54]
jae 0x525045
cmp dword [esp + 0x14], 0
movzx edx, word [esi]
je 0x5252c9
mov eax, edx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x5252c9
movzx eax, word [esi + 2]
and edx, 0x3ff
and eax, 0x3ff
shl edx, 0xa
or edx, eax
mov edi, 2
add edx, 0x10000
mov eax, edx
shr eax, 7
movzx ecx, word [eax*2 + 0x5ab420]
mov eax, edx
and eax, 0x7f
shl ecx, 7
add ecx, eax
movzx eax, word [ecx*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx eax, byte [eax*4 + 0x5a7211]
mov eax, dword [eax*4 + 0x5a4cb0]
cmp eax, 1
je 0x52530d
cmp eax, 3
je 0x52530d
cmp edx, 0x5f
je 0x52530d
xor eax, eax
jmp 0x525312
mov eax, 1
cmp eax, ebx
je 0x525607
mov eax, dword [esp + 0x10]
lea esi, [esi + edi*2]
mov dword [eax + 0x38], esi
mov eax, dword [esp + 0x58]
inc eax
mov dword [esp + 0x58], eax
cmp eax, ebp
jb 0x525280
jmp 0x525607
cmp edi, ebp
jae 0x525607
mov eax, dword [esp + 0x6c]
mov edi, 1
cmp esi, dword [eax + 0x54]
jae 0x525045
cmp dword [esp + 0x14], 0
movzx ecx, word [esi]
je 0x52538b
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x52538b
movzx eax, word [esi + 2]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
mov edi, 2
add ecx, 0x10000
mov esi, dword [esp + 0x10]
mov eax, dword [esi + 0x2c]
mov edx, dword [eax*4 + 0x5a6c48]
lea eax, [eax*4 + 0x5a6c48]
cmp ecx, edx
jb 0x5253b1
lea eax, [eax + 4]
cmp ecx, edx
je 0x5253d9
mov edx, dword [eax]
cmp ecx, edx
jae 0x5253a4
cmp ebx, 0xf
jne 0x525607
lea eax, [edi + edi]
add dword [esi + 0x38], eax
mov eax, dword [esp + 0x58]
mov esi, dword [esi + 0x38]
inc eax
mov dword [esp + 0x58], eax
cmp eax, ebp
jb 0x525342
jmp 0x525607
cmp ebx, 0xf
je 0x525607
jmp 0x5253ba
cmp edi, ebp
jae 0x525607
mov ebx, dword [esp + 0x5c]
mov eax, dword [esp + 0x6c]
mov edx, 1
cmp esi, dword [eax + 0x54]
jae 0x524d35
cmp dword [esp + 0x14], 0
movzx ecx, word [esi]
je 0x525439
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x525439
movzx eax, word [esi + 2]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
mov edx, 2
add ecx, 0x10000
cmp ecx, 0x24
je 0x525464
cmp ecx, 0x40
je 0x525464
cmp ecx, 0x60
je 0x525464
cmp ecx, 0xa0
jb 0x525458
cmp ecx, 0xd7ff
jbe 0x525464
cmp ecx, 0xe000
jae 0x525464
xor eax, eax
jmp 0x525469
mov eax, 1
cmp eax, ebx
je 0x525607
mov eax, dword [esp + 0x10]
lea esi, [esi + edx*2]
inc edi
mov dword [eax + 0x38], esi
cmp edi, ebp
jb 0x5253f0
jmp 0x525607
cmp edi, ebp
jae 0x525607
mov ebx, dword [esp + 0x10]
nop word [eax + eax]
mov eax, dword [esp + 0x6c]
mov edx, 1
cmp esi, dword [eax + 0x54]
jae 0x524d35
cmp dword [esp + 0x14], 0
movzx ecx, word [esi]
je 0x5254e9
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x5254e9
movzx eax, word [esi + 2]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
mov edx, 2
add ecx, 0x10000
mov eax, ecx
and ecx, 0x7f
shr eax, 7
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
xor ecx, ecx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx eax, word [eax*4 + 0x5a7218]
shr eax, 0xb
cmp eax, dword [ebx + 0x2c]
sete cl
cmp ecx, dword [esp + 0x5c]
je 0x525607
inc edi
lea esi, [esi + edx*2]
mov dword [ebx + 0x38], esi
cmp edi, ebp
jb 0x5254a0
jmp 0x525607
cmp edi, ebp
jae 0x525607
mov ebx, dword [esp + 0x10]
nop word [eax + eax]
mov eax, dword [esp + 0x6c]
mov edi, 1
cmp esi, dword [eax + 0x54]
jae 0x525045
cmp dword [esp + 0x14], 0
movzx edx, word [esi]
je 0x525599
mov eax, edx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x525599
movzx eax, word [esi + 2]
and edx, 0x3ff
and eax, 0x3ff
shl edx, 0xa
or edx, eax
mov edi, 2
add edx, 0x10000
mov ecx, dword [ebx + 0x2c]
mov eax, edx
shr eax, 7
and edx, 0x7f
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, edx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx edx, word [eax*4 + 0x5a721a]
mov eax, ecx
shr eax, 5
and edx, 0xfff
add edx, eax
and ecx, 0x1f
mov eax, 1
shl eax, cl
mov ecx, dword [edx*4 + 0x5a66c0]
and ecx, eax
neg ecx
sbb ecx, ecx
neg ecx
cmp ecx, dword [esp + 0x5c]
je 0x525607
mov eax, dword [esp + 0x58]
lea esi, [esi + edi*2]
inc eax
mov dword [ebx + 0x38], esi
mov dword [esp + 0x58], eax
cmp eax, ebp
jb 0x525550
mov ebp, dword [esp + 0x6c]
cmp dword [esp + 0x18], 2
mov edx, dword [esp + 0x14]
mov edi, dword [esp + 0x68]
je 0x5200f0
mov ebx, dword [esp + 0x10]
mov ecx, dword [ebx + 0x38]
jmp 0x5291d9
cmp ebx, 0x16
jne 0x52572a
cmp edi, ebp
mov ebp, dword [esp + 0x6c]
jae 0x525712
mov esi, dword [ebp + 0x54]
mov ebx, dword [esp + 0x10]
nop word [eax + eax]
mov edx, dword [ebx + 0x38]
cmp edx, esi
jae 0x5256ec
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov esi, edx
mov dword [ebx + 0x38], edx
je 0x52569a
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x52569a
movzx eax, word [edx]
lea esi, [edx + 2]
and ecx, 0x3ff
mov dword [ebx + 0x38], esi
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
add ecx, 0x10000
push 0
push dword [esp + 0x18]
push dword [ebp + 0x54]
push dword [ebp + 0x4c]
push esi
push ecx
call fcn.005371d0
mov dword [ebx + 0x38], eax
add esp, 0x18
mov esi, dword [ebp + 0x54]
cmp eax, esi
jb 0x5256e0
movzx ecx, word [ebp + 0x3c]
mov edx, ecx
test cx, cx
je 0x5256e0
cmp eax, dword [ebp + 0x5c]
ja 0x5256d0
cmp dword [ebp + 0x24], 0
je 0x5256e0
mov dword [ebp + 0x1c], 1
cmp edx, 1
ja 0x521512
inc edi
cmp edi, dword [ebx + 0x24]
jb 0x525650
jmp 0x525712
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je 0x525712
cmp edx, dword [ebp + 0x5c]
ja 0x525702
cmp dword [ebp + 0x24], 0
je 0x525712
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
cmp dword [esp + 0x18], 2
mov edx, dword [esp + 0x14]
mov edi, dword [esp + 0x68]
je 0x5200f0
jmp 0x529700
lea eax, [ebx - 6]
cmp eax, 0xf
ja case.0x527c3c.15
mov edx, dword [esp + 0x14]
test edx, edx
je 0x525f7c
jmp dword [eax*4 + 0x52a874]
jmp dword [eax*4 + 0x52a92c]
mov ebp, dword [esp + 0x10]
xor eax, eax
cmp bl, 0x74
mov ebx, dword [esp + 0x6c]
sete al
mov dword [ebp + 0x28], eax
movzx eax, word [ebx + 0x42]
movzx ecx, word [esi + 2]
movzx edx, word [esi + 4]
imul ecx, eax
mov eax, dword [ebx + 0x44]
lea ecx, [eax + ecx*2]
lea eax, [esi + 6]
mov dword [ebp], eax
test edx, edx
je 0x526765
nop word [eax + eax]
movzx eax, word [ecx]
dec edx
lea eax, [eax*2 - 2]
mov dword [ebp + 0x14], eax
cmp eax, dword [ebp + 0x50]
jae 0x52675a
cmp dword [ebp + eax*4 + 0x54], 0xffffffff
jne 0x526765
movzx eax, word [ebx + 0x42]
lea ecx, [ecx + eax*2]
test edx, edx
jg 0x526740
mov esi, dword [ebp]
jmp 0x526791
mov ebp, dword [esp + 0x10]
xor eax, eax
cmp bl, 0x72
mov ebx, dword [esp + 0x6c]
sete al
mov dword [ebp + 0x28], eax
movzx eax, word [esi + 2]
add esi, 4
lea eax, [eax*2 - 2]
mov dword [ebp + 0x14], eax
mov dword [ebp], esi
mov edi, esi
movzx edx, word [esi]
lea eax, [edx - 0x62]
cmp eax, 7
ja case.default.0x5267a9
movzx eax, byte [eax + 0x52aa64]
jmp dword [eax*4 + 0x52aa5c]
mov ecx, dword [edx*4 + 0x5a41c8]
lea eax, [esi + 2]
mov ebx, dword [edx*4 + 0x5a41f4]
mov edx, dword [edx*4 + 0x5a4220]
mov dword [ebp], eax
mov dword [ebp + 0x20], ecx
mov dword [ebp + 0x24], ebx
mov dword [esp + 0x18], edx
jmp 0x526807
movzx ecx, word [esi + 2]
mov dword [ebp + 0x20], ecx
movzx ebx, word [edi + 4]
mov dword [ebp + 0x24], ebx
movzx eax, word [edi]
mov eax, dword [eax*4 + 0x5a4220]
mov dword [esp + 0x18], eax
test ebx, ebx
jne 0x526801
mov dword [ebp + 0x24], 0xffffffff
or ebx, 0xffffffff
lea eax, [edi + 6]
mov dword [ebp], eax
mov edi, dword [ebp + 0x14]
cmp edi, dword [ebp + 0x50]
jae 0x52682c
mov eax, dword [ebp + edi*4 + 0x54]
cmp eax, 0xffffffff
je 0x52682c
mov edx, dword [esp + 0x14]
cmp eax, dword [ebp + edi*4 + 0x58]
je 0x5206c7
mov eax, dword [esp + 0x6c]
jmp 0x526849
mov edx, dword [esp + 0x14]
test ecx, ecx
je 0x5206c7
mov eax, dword [esp + 0x6c]
test dword [eax + 0x7c], 0x200
jne 0x5200d0
mov esi, 1
cmp ecx, esi
jb 0x526888
mov edi, dword [ebp + 0x14]
lea ecx, [esp + 0x40]
push ecx
push eax
push ebp
push dword [ebp + 0x28]
push edi
call fcn.0052ae40
add esp, 0x14
test eax, eax
jne 0x526901
mov eax, dword [esp + 0x40]
inc esi
add eax, eax
add dword [ebp + 0x38], eax
mov ecx, dword [ebp + 0x20]
mov eax, dword [esp + 0x6c]
cmp esi, ecx
jbe 0x526852
mov ebx, dword [ebp + 0x24]
mov edx, dword [esp + 0x14]
cmp ecx, ebx
je 0x5206c7
cmp dword [esp + 0x18], 0
je 0x52985e
mov eax, dword [ebp + 0x38]
mov esi, 1
mov dword [ebp + 4], eax
mov eax, dword [ebp + edi*4 + 0x58]
sub eax, dword [ebp + edi*4 + 0x54]
mov dword [ebp + 0xc], eax
mov edi, dword [ebp + 0x20]
cmp edi, ebx
mov ebp, dword [esp + 0x6c]
mov ebx, dword [esp + 0x10]
jae 0x5277f8
lea eax, [esp + 0x44]
push eax
push ebp
push ebx
push dword [ebx + 0x28]
push dword [ebx + 0x14]
call fcn.0052ae40
add esp, 0x14
test eax, eax
jne 0x526952
mov eax, dword [esp + 0x44]
xor ecx, ecx
cmp eax, dword [ebx + 0xc]
cmovne esi, ecx
add eax, eax
add dword [ebx + 0x38], eax
inc edi
cmp edi, dword [ebx + 0x24]
jb 0x5268c8
jmp 0x526977
jle 0x52690f
mov eax, dword [esp + 0x6c]
mov ecx, dword [eax + 0x54]
mov dword [ebp + 0x38], ecx
jmp 0x526912
mov ecx, dword [ebp + 0x38]
mov ebp, dword [esp + 0x6c]
cmp ecx, dword [ebp + 0x54]
jb case.default.0x527c59
movzx eax, word [ebp + 0x3c]
mov edx, eax
test ax, ax
je case.default.0x527c59
cmp ecx, dword [ebp + 0x5c]
ja 0x52693d
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp edx, 1
ja 0x521512
jmp case.default.0x527c59
jle 0x526977
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je 0x526977
mov eax, dword [ebp + 0x54]
cmp eax, dword [ebp + 0x5c]
jbe 0x526977
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
test esi, esi
jne 0x5277f8
mov dword [ebx + 0x24], edi
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0x16
jmp 0x529d02
lea eax, [esp + 0x28]
push eax
push ebx
push ebp
push dword [ebp + 0x28]
push dword [ebp + 0x14]
call fcn.0052ae40
add esp, 0x14
test eax, eax
je 0x5269f3
jle 0x5269b0
mov ecx, dword [ebx + 0x54]
mov dword [ebp + 0x38], ecx
jmp 0x5269b3
mov ecx, dword [ebp + 0x38]
mov ebp, dword [esp + 0x6c]
cmp ecx, dword [ebp + 0x54]
jb case.default.0x527c59
movzx eax, word [ebp + 0x3c]
mov edx, eax
test ax, ax
je case.default.0x527c59
cmp ecx, dword [ebp + 0x5c]
ja 0x5269de
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp edx, 1
ja 0x521512
jmp case.default.0x527c59
mov eax, dword [esp + 0x28]
add eax, eax
add dword [ebp + 0x38], eax
mov ebp, dword [esp + 0x6c]
jmp 0x5200e4
mov ecx, dword [esp + 0x10]
add esi, 2
mov dword [ecx], esi
nop
movzx eax, word [esi + 2]
lea esi, [esi + eax*2]
mov dword [ecx], esi
cmp word [esi], 0x78
je 0x526a10
lea eax, [esi + 4]
mov dword [ecx], eax
jmp 0x5200f0
cmp dword [ebp + 0x20], 0
mov ebx, dword [esp + 0x10]
jne 0x526a3d
cmp dword [ebx + 0x18], 0
jne 0x5273f9
xor eax, eax
jmp 0x529b09
mov ebx, dword [esp + 0x10]
lea eax, [esp + 0x28]
push eax
push ebp
push ebx
call fcn.0051feb0
mov esi, eax
add esp, 0xc
test esi, esi
jg case.default.0x527c59
js 0x520433
mov eax, dword [esp + 0x28]
add eax, eax
add dword [ebx], eax
jmp 0x5200e8
movzx eax, word [esi + 2]
mov edi, dword [esp + 0x10]
mov dword [edi + 0xc], eax
cmp word [esi + eax*2], 0x78
je 0x526a8c
add eax, 0xfffffffe
mov dword [edi + 0xc], eax
lea ebx, [esi + 4]
mov dword [edi], ebx
movzx eax, word [ebx]
mov ecx, eax
cmp eax, 0x76
je 0x526aa0
cmp eax, 0x77
jne 0x526ad0
lea eax, [esp + 0x28]
push eax
push ebp
push edi
call fcn.0051feb0
mov esi, eax
add esp, 0xc
test esi, esi
jg case.default.0x527c59
js 0x520433
mov eax, dword [edi]
mov ecx, dword [esp + 0x28]
lea ebx, [eax + ecx*2]
mov dword [edi], ebx
sub dword [edi + 0xc], ecx
movzx ecx, word [ebx]
movzx ecx, cx
lea eax, [ecx - 0x90]
cmp eax, 0x12
ja case.0x526ae9.150
movzx eax, byte [eax + 0x52aa88]
jmp dword [eax*4 + 0x52aa6c]
mov ecx, dword [edi + 0x44]
cmp ecx, 0xffffffff
je case.0x526ae9.148
movzx eax, word [ebx + 2]
mov ebx, dword [esp + 0x10]
cmp eax, 0xffff
je 0x5295ae
cmp eax, ecx
je 0x5295ae
jmp 0x5295c0
mov edi, dword [edi + 0x44]
cmp edi, 0xffffffff
je case.0x526ae9.148
movzx esi, word [ebp + 0x42]
movzx ecx, word [ebx + 2]
mov eax, dword [ebp + 0x44]
movzx edx, word [ebx + 4]
imul ecx, esi
lea ecx, [eax + ecx*2]
test edx, edx
je case.0x526ae9.148
movzx eax, word [ecx]
dec edx
cmp eax, edi
je 0x526b79
lea ecx, [ecx + esi*2]
test edx, edx
jg 0x526b45
mov eax, dword [esp + 0x1c]
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], ebx
jmp 0x5295c0
mov ebx, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x24]
mov ecx, dword [ebx]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x18], eax
movzx eax, word [ecx]
mov dword [esp + 0x10], ebx
movzx eax, byte [eax + 0x5a4b10]
jmp 0x5295c5
movzx eax, word [ebx + 2]
mov ebx, dword [esp + 0x10]
lea eax, [eax*2 - 2]
cmp eax, dword [ebx + 0x50]
jae 0x5295c0
cmp dword [ebx + eax*4 + 0x54], 0xffffffff
je 0x5295c0
mov ecx, dword [ebx]
movzx eax, word [ecx]
movzx eax, byte [eax + 0x5a4b10]
jmp 0x5295c5
movzx ecx, word [ebx + 2]
movzx esi, word [ebp + 0x42]
mov eax, dword [ebp + 0x44]
movzx edx, word [ebx + 4]
mov ebx, dword [esp + 0x10]
imul ecx, esi
lea ecx, [eax + ecx*2]
test edx, edx
je 0x5295c0
mov edi, dword [ebx + 0x50]
movzx eax, word [ecx]
dec edx
lea eax, [eax*2 - 2]
cmp eax, edi
jae 0x526c1c
cmp dword [ebx + eax*4 + 0x54], 0xffffffff
jne 0x5295ae
lea ecx, [ecx + esi*2]
test edx, edx
jg 0x526c02
jmp 0x5295c0
cmp dword [esp + 0x14], 0
movzx edx, word [esi + 2]
mov ebx, dword [esp + 0x10]
je 0x526c6f
test edx, edx
je 0x526c6a
mov ecx, dword [ebx + 0x38]
mov esi, 0xfc00
dec edx
cmp ecx, dword [ebp + 0x50]
jbe case.default.0x527c59
add ecx, 0xfffffffe
mov dword [ebx + 0x38], ecx
mov ax, word [ecx]
and ax, si
cmp ax, word [esp + 0x30]
jne 0x526c66
add ecx, 0xfffffffe
mov dword [ebx + 0x38], ecx
test edx, edx
jne 0x526c43
mov ecx, dword [ebx + 0x38]
jmp 0x526c89
mov ecx, dword [ebx + 0x38]
mov eax, ecx
sub eax, dword [ebp + 0x4c]
sar eax, 1
cmp edx, eax
jg case.default.0x527c59
lea eax, [edx + edx]
sub ecx, eax
mov dword [ebx + 0x38], ecx
cmp ecx, dword [ebp + 0x5c]
jae 0x526c91
mov dword [ebp + 0x5c], ecx
add dword [ebx], 4
jmp 0x5200e8
movzx eax, word [esi + 2]
lea esi, [esi + eax*2]
mov eax, dword [esp + 0x10]
mov dword [eax], esi
cmp word [esi], 0x78
je case.0x520114.120
jmp 0x5200f0
movzx eax, word [esi + 2]
mov ecx, 0x86
add eax, eax
sub esi, eax
movzx eax, word [esi]
cmp ax, cx
je 0x526d3d
mov ecx, 0x8a
cmp ax, cx
je 0x526d3d
mov ebx, dword [esp + 0x10]
mov ecx, dword [edi + 0x18]
add ecx, dword [ebx + 0x4c]
mov edi, ecx
mov dword [esp + 0x1c], ecx
sub edi, dword [esp + 0x64]
mov eax, dword [edi + 0x4c]
mov dword [ebx + 0x4c], eax
mov eax, dword [ecx + 0x1c]
and eax, 0xffff0000
cmp eax, 0x30000
jne 0x526d38
mov eax, dword [ebx + 0x50]
shl eax, 2
push eax
lea eax, [ebx + 0x54]
push eax
lea eax, [edi + 0x54]
push eax
call fcn.0056a220
mov eax, dword [ebx + 0x50]
add esp, 0xc
mov dword [edi + 0x50], eax
mov esi, 1
mov eax, dword [ebx + 0x40]
mov dword [edi + 0x40], eax
mov eax, ebx
sub eax, edi
mov dword [ebx + 0x10], eax
jmp 0x520433
movzx eax, word [esi]
jmp 0x526d47
mov ebx, dword [esp + 0x10]
xor edi, edi
mov ecx, dword [esp + 0x1c]
movzx eax, ax
add eax, 0xffffff82
cmp eax, 0x10
ja case.0x526d5d.134
movzx eax, byte [eax + 0x52aab8]
jmp dword [eax*4 + 0x52aa9c]
mov eax, dword [ebx + 0x38]
cmp eax, dword [ebp + 0x60]
jbe 0x526d6f
mov dword [ebp + 0x60], eax
mov eax, dword [edi + 0x38]
mov dword [ebx + 0x38], eax
jmp case.0x526d5d.134
mov eax, dword [ebx + 0x38]
cmp eax, dword [ebp + 0x60]
jbe 0x526d85
mov dword [ebp + 0x60], eax
mov eax, dword [edi + 0x38]
mov dword [ebx + 0x38], eax
mov eax, ebx
sub eax, edi
mov dword [ebx + 0x10], eax
mov ecx, dword [edi]
movzx eax, word [ecx + 2]
cmp word [ecx + eax*2], 0x78
lea ecx, [ecx + eax*2]
jne case.0x526d5d.134
nop word [eax + eax]
mov dword [edi], ecx
movzx eax, word [ecx + 2]
cmp word [ecx + eax*2], 0x78
lea ecx, [ecx + eax*2]
je 0x526db0
jmp case.0x526d5d.134
mov eax, dword [esp + 0x10]
mov esi, 1
jmp 0x52043b
push edx
push dword [ebx + 0x38]
push dword [edi + 0x38]
call fcn.005375d0
add esp, 0xc
test eax, eax
jne case.0x526d5d.134
jmp case.default.0x527c59
movzx eax, word [esi + 4]
cmp dword [ebx + 0x44], eax
jne 0x526e2f
mov esi, ecx
sub esi, dword [esp + 0x64]
mov eax, dword [esi + 0x50]
shl eax, 2
push eax
lea eax, [esi + 0x54]
push eax
lea eax, [ebx + 0x54]
push eax
call fcn.0056a220
mov eax, dword [esi + 0x50]
add esp, 0xc
mov dword [ebx + 0x50], eax
mov eax, dword [esi + 0x48]
mov dword [ebx + 0x48], eax
mov eax, dword [esi + 0x44]
mov dword [ebx + 0x44], eax
mov eax, dword [esi]
add eax, 4
mov dword [ebx], eax
jmp 0x5200e4
mov dword [ebx + 0x48], eax
lea edx, [eax + eax]
mov eax, dword [edi + 0x38]
lea ecx, [edx - 2]
sub eax, dword [ebp + 0x4c]
sar eax, 1
mov dword [ebx + ecx*4 + 0x54], eax
mov eax, dword [ebx + 0x38]
sub eax, dword [ebp + 0x4c]
sar eax, 1
mov dword [ebx + ecx*4 + 0x58], eax
cmp ecx, dword [ebx + 0x50]
jb case.0x526d5d.134
mov dword [ebx + 0x50], edx
mov edx, dword [ebx]
cmp word [edx], 0x7c
jne 0x526e7e
push dword [esp + 0x48]
lea eax, [ebx + 0x38]
push eax
lea eax, [edi + 0x38]
push eax
call fcn.0056a220
add esp, 0xc
mov esi, 0xfffffc1a
jmp 0x520433
mov cl, byte [ebx + 0x31]
cmp cl, 0x79
je 0x526e9a
test edi, edi
je 0x529819
mov eax, dword [ebx + 0x38]
cmp eax, dword [edi + 0x38]
jne 0x529819
add dword [ebx], 4
jmp 0x5200e4
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x38]
cmp eax, dword [ebp + 0x4c]
jne 0x5205af
test byte [ebp + 0x78], 1
jne 0x5205af
lea eax, [esi + 2]
mov dword [ecx], eax
jmp 0x5200f0
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x38]
cmp eax, dword [ebp + 0x4c]
je 0x526ebc
xor esi, esi
mov eax, ecx
jmp 0x52043b
test byte [ebp + 0x78], 2
je 0x526eec
mov eax, dword [esp + 0x10]
xor esi, esi
jmp 0x52043b
test byte [ebp + 0x7c], 0x10
je case.0x520114.23
mov edx, dword [esp + 0x10]
mov eax, dword [edx + 0x38]
cmp eax, dword [ebp + 0x54]
jb case.default.0x527c59
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je 0x526f1d
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
add dword [edx], 2
jmp 0x5200e8
mov ebp, dword [esp + 0x10]
mov ecx, dword [esp + 0x6c]
mov edx, dword [ebp + 0x38]
mov esi, dword [ecx + 0x54]
cmp edx, esi
jae 0x526ff6
mov eax, dword [ecx + 0x88]
lea ebx, [ecx + 0x8c]
test eax, eax
je 0x526f6d
push dword [esp + 0x14]
push ebx
push esi
push eax
push edx
call fcn.005373d0
add esp, 0x14
test eax, eax
je 0x526fa5
mov ecx, dword [esp + 0x6c]
mov edi, dword [ebx]
mov edx, dword [ebp + 0x38]
mov esi, dword [ecx + 0x54]
jmp 0x526f9c
mov edi, dword [ebx]
mov ecx, esi
lea eax, [edi + edi]
sub ecx, eax
cmp edx, ecx
ja 0x526fa5
mov ecx, dword [esp + 0x6c]
mov ax, word [edx]
cmp ax, word [ecx + 0x90]
jne 0x526fa5
cmp edi, 1
je 0x526f9c
mov ax, word [edx + 2]
cmp ax, word [ecx + 0x92]
jne 0x526fa5
lea eax, [edi + edi]
sub esi, eax
cmp edx, esi
je 0x526ff6
mov eax, dword [esp + 0x6c]
movzx eax, word [eax + 0x3c]
mov edx, eax
test ax, ax
je 0x52042d
mov ecx, dword [ebp + 0x38]
mov ebp, dword [esp + 0x6c]
lea eax, [ecx + 2]
cmp eax, dword [ebp + 0x54]
jb case.default.0x527c59
cmp dword [ebp + 0x88], 0
jne case.default.0x527c59
cmp dword [ebx], 2
jne case.default.0x527c59
mov ax, word [ecx]
cmp ax, word [ebp + 0x90]
jne case.default.0x527c59
jmp 0x5227bf
movzx eax, word [ecx + 0x3c]
mov ecx, eax
test ax, ax
je 0x527015
mov eax, dword [esp + 0x6c]
mov dword [eax + 0x1c], 1
cmp ecx, 1
ja 0x521512
add dword [ebp], 2
mov ebp, dword [esp + 0x6c]
jmp 0x5200e4
test byte [ebp + 0x78], 1
mov ebx, dword [esp + 0x10]
je 0x52703d
mov eax, dword [ebx + 0x38]
cmp eax, dword [ebp + 0x4c]
jne 0x52703d
xor esi, esi
mov eax, ebx
jmp 0x52043b
mov ecx, dword [ebx + 0x38]
mov edx, dword [ebp + 0x4c]
cmp ecx, edx
je 0x5271a4
cmp ecx, dword [ebp + 0x54]
jne 0x52705d
test dword [ebp + 0x7c], 0x200000
je case.default.0x527c59
mov esi, dword [ebp + 0x88]
test esi, esi
je 0x527095
cmp ecx, edx
jbe case.default.0x527c59
push dword [esp + 0x14]
lea eax, [ebp + 0x8c]
push eax
push edx
push esi
push ecx
call fcn.00537490
add esp, 0x14
test eax, eax
je case.default.0x527c59
add dword [ebx], 2
jmp 0x5200e4
mov edi, dword [ebp + 0x8c]
lea esi, [edi + edi]
lea eax, [edx + esi]
cmp ecx, eax
jb case.default.0x527c59
sub ecx, esi
mov ax, word [ecx]
cmp ax, word [ebp + 0x90]
jne case.default.0x527c59
cmp edi, 1
je 0x5271a4
mov ax, word [ecx + 2]
cmp ax, word [ebp + 0x92]
je 0x5271a4
jmp case.default.0x527c59
mov ebx, dword [esp + 0x10]
mov ecx, dword [ebp + 0x54]
mov edx, dword [ebx + 0x38]
cmp edx, ecx
jae 0x527174
mov eax, dword [ebp + 0x88]
lea edi, [ebp + 0x8c]
test eax, eax
je 0x527118
push dword [esp + 0x14]
push edi
push ecx
push eax
push edx
call fcn.005373d0
add esp, 0x14
test eax, eax
je 0x527141
add dword [ebx], 2
jmp 0x5200e4
mov esi, dword [edi]
lea eax, [esi + esi]
sub ecx, eax
cmp edx, ecx
ja 0x527141
mov ax, word [edx]
cmp ax, word [ebp + 0x90]
jne 0x527141
cmp esi, 1
je 0x5271a4
mov ax, word [edx + 2]
cmp ax, word [ebp + 0x92]
je 0x5271a4
movzx eax, word [ebp + 0x3c]
mov edx, eax
test ax, ax
je case.default.0x527c59
mov ecx, dword [ebx + 0x38]
lea eax, [ecx + 2]
cmp eax, dword [ebp + 0x54]
jb case.default.0x527c59
cmp dword [ebp + 0x88], 0
jne case.default.0x527c59
cmp dword [edi], 2
jmp 0x526fdb
test byte [ebp + 0x78], 2
jne case.default.0x527c59
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je 0x5271a4
cmp edx, dword [ebp + 0x5c]
ja 0x527194
cmp dword [ebp + 0x24], 0
je 0x5271a4
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
add dword [ebx], 2
jmp 0x5200e4
mov ecx, dword [ebp + 0x34]
mov eax, dword [ebp + 0x4c]
lea eax, [eax + ecx*2]
mov ecx, dword [esp + 0x10]
cmp dword [ecx + 0x38], eax
je 0x526ebc
xor esi, esi
mov eax, ecx
jmp 0x52043b
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x38]
mov dword [ecx + 0x3c], eax
lea eax, [esi + 2]
mov dword [ecx], eax
jmp 0x5200f0
mov ebx, dword [esp + 0x10]
mov edx, dword [ebx + 0x38]
cmp edx, dword [ebp + 0x50]
je 0x5272b0
movzx eax, word [edx - 2]
add edx, 0xfffffffe
cmp dword [esp + 0x14], 0
mov ecx, eax
je 0x52723d
and eax, 0xfc00
cmp eax, 0xdc00
jne 0x527212
movzx ecx, word [edx - 2]
sub edx, 2
movzx ecx, cx
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x52723d
movzx eax, word [edx + 2]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
add ecx, 0x10000
cmp edx, dword [ebp + 0x5c]
jae 0x527245
mov dword [ebp + 0x5c], edx
test dword [ebp + 0x7c], 0x20000
je 0x527298
cmp ecx, 0x5f
jne 0x527258
lea edi, [ecx - 0x5e]
jmp 0x5272b2
mov eax, ecx
and ecx, 0x7f
shr eax, 7
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx eax, byte [eax*4 + 0x5a7211]
mov eax, dword [eax*4 + 0x5a4cb0]
cmp eax, 1
je 0x527291
cmp eax, 3
jne 0x5272b0
mov edi, 1
jmp 0x5272b2
cmp ecx, 0xff
ja 0x5272b0
mov eax, dword [ebp + 0x30]
test byte [ecx + eax], 0x10
je 0x5272b0
mov edi, 1
jmp 0x5272b2
xor edi, edi
mov ecx, dword [ebx + 0x38]
mov eax, dword [ebp + 0x54]
cmp ecx, eax
jb 0x527313
movzx eax, word [ebp + 0x3c]
mov edx, eax
test ax, ax
je 0x5272e2
cmp ecx, dword [ebp + 0x5c]
ja 0x5272d2
cmp dword [ebp + 0x24], 0
je 0x5272e2
mov dword [ebp + 0x1c], 1
cmp edx, 1
ja 0x521512
xor edx, edx
mov eax, dword [ebx]
xor edx, edi
movzx ecx, word [eax]
add eax, 2
mov dword [ebx], eax
cmp ecx, 5
jne 0x5272f8
xor edx, 1
mov edi, dword [esp + 0x68]
test edx, edx
mov edx, dword [esp + 0x14]
je 0x5200f0
mov eax, dword [esp + 0x10]
xor esi, esi
jmp 0x52043b
cmp dword [esp + 0x14], 0
lea esi, [ecx + 2]
mov edx, esi
je 0x527361
cmp edx, eax
jae 0x527335
mov ax, word [edx]
and ax, word [esp + 0x34]
cmp ax, word [esp + 0x30]
jne 0x527335
add edx, 2
movzx ecx, word [ecx]
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x527364
movzx eax, word [esi]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
add ecx, 0x10000
jmp 0x527364
movzx ecx, word [ecx]
cmp edx, dword [ebp + 0x60]
jbe 0x52736c
mov dword [ebp + 0x60], edx
test dword [ebp + 0x7c], 0x20000
je 0x5273c9
cmp ecx, 0x5f
jne 0x527382
lea edx, [ecx - 0x5e]
jmp 0x5272e4
mov eax, ecx
and ecx, 0x7f
shr eax, 7
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx eax, byte [eax*4 + 0x5a7211]
mov eax, dword [eax*4 + 0x5a4cb0]
cmp eax, 1
je 0x5273bf
cmp eax, 3
jne 0x5272e2
mov edx, 1
jmp 0x5272e4
cmp ecx, 0xff
ja 0x5272e2
mov eax, dword [ebp + 0x30]
test byte [ecx + eax], 0x10
je 0x5272e2
mov edx, 1
jmp 0x5272e4
test esi, esi
jne case.0x5274c6.998
mov esi, dword [ebx + 4]
mov dword [ebx], esi
movzx eax, word [esi + 2]
lea edx, [esi + eax*2]
mov dword [ebx + 4], edx
cmp word [edx], 0x78
mov ecx, dword [ebx]
movzx eax, word [ecx]
movzx eax, byte [eax + 0x5a4b10]
lea esi, [ecx + eax*2]
je 0x529837
mov dword [ebx], esi
jmp 0x5200e4
cmp esi, 0xfffffc1f
jne 0x527449
mov ecx, dword [ebx]
movzx eax, word [ecx + 2]
lea eax, [ecx + eax*2]
cmp dword [ebp + 0x6c], eax
jae case.0x5274c6.998
cmp word [ecx], 0x78
je 0x527451
cmp word [eax], 0x78
jmp 0x52744b
test esi, esi
jne case.0x5274c6.998
mov ecx, dword [ebx]
movzx eax, word [ecx + 2]
lea esi, [ecx + eax*2]
mov dword [ebx], esi
cmp word [esi], 0x78
je 0x529b0c
mov eax, dword [esp + 0x10]
xor esi, esi
jmp 0x52043b
cmp esi, 0xfffffc19
je 0x5294d8
test esi, esi
je 0x52748d
cmp esi, 0xfffffc1f
jne case.0x5274c6.998
mov ecx, dword [ebx]
movzx eax, word [ecx + 2]
lea esi, [ecx + eax*2]
mov dword [ebx], esi
cmp word [esi], 0x78
je 0x529bc2
mov eax, dword [esp + 0x10]
xor esi, esi
jmp 0x52043b
test esi, esi
jg 0x5274cd
je case.0x5274c6.993
lea eax, [esi + 0x3e7]
cmp eax, 6
ja case.0x5274c6.998
jmp dword [eax*4 + 0x52aacc]
mov eax, esi
sub eax, 1
mov eax, dword [esp + 0x10]
jne 0x52043b
mov eax, dword [esp + 0x10]
xor esi, esi
jmp 0x52043b
test esi, esi
jg 0x527507
je case.0x527500.993
lea eax, [esi + 0x3e7]
cmp eax, 6
ja case.0x5274c6.998
jmp dword [eax*4 + 0x52aae8]
mov eax, esi
sub eax, 1
jne case.0x5274c6.998
mov eax, dword [ebx + 0x20]
test eax, eax
je 0x5295c0
mov ecx, dword [ebx]
nop
movzx eax, word [ecx + 2]
lea ecx, [ecx + eax*2]
mov dword [ebx], ecx
cmp word [ecx], 0x78
je 0x527520
movzx eax, word [ecx]
movzx eax, byte [eax + 0x5a4b10]
jmp 0x5295c5
test esi, esi
jne case.0x5274c6.998
mov ecx, dword [ebx]
mov edi, dword [esp + 0x68]
movzx eax, word [ecx + 2]
add eax, eax
sub ecx, eax
mov dword [ebx], ecx
jmp 0x5200f0
test esi, esi
je 0x526e9a
mov eax, dword [esp + 0x10]
jmp 0x52043b
cmp esi, 0xfffffc1a
jne 0x5275a1
mov dword [ebx + 0x24], 1
mov eax, dword [ebx + 0x38]
cmp eax, dword [ebx + 4]
jne 0x529840
mov ecx, dword [ebx]
nop dword [eax]
movzx eax, word [ecx + 2]
lea ecx, [ecx + eax*2]
mov dword [ebx], ecx
cmp word [ecx], 0x78
je 0x527590
jmp 0x5275e4
cmp esi, 0xfffffc1f
jne 0x5275c7
mov ecx, dword [ebx]
movzx eax, word [ecx + 2]
lea eax, [ecx + eax*2]
cmp dword [ebp + 0x6c], eax
jae case.0x5274c6.998
cmp word [ecx], 0x78
je 0x5275cf
cmp word [eax], 0x78
jmp 0x5275c9
test esi, esi
jne case.0x5274c6.998
mov ecx, dword [ebx]
movzx eax, word [ecx + 2]
lea ecx, [ecx + eax*2]
mov dword [ebx], ecx
cmp word [ecx], 0x78
je 0x529acd
cmp dword [ebx + 0x24], 0
jne 0x527616
cmp dword [ebx + 0x28], 0
jne 0x527616
mov eax, dword [esp + 0x10]
xor esi, esi
jmp 0x52043b
test esi, esi
jne case.0x5274c6.998
mov ecx, dword [ebx + 4]
movzx eax, word [ecx + 2]
lea ecx, [ecx + eax*2]
mov dword [ebx + 4], ecx
cmp word [ecx], 0x78
je 0x527606
mov edi, dword [esp + 0x68]
lea eax, [ecx + 4]
mov dword [ebx], eax
jmp 0x5200f0
test esi, esi
jne case.0x5274c6.998
add dword [ebx], 2
mov edi, dword [esp + 0x68]
jmp 0x5200f0
mov edx, dword [ebx + 4]
movzx eax, word [edx + 2]
lea ecx, [edx + eax*2]
lea eax, [esi + 0x3e5]
cmp eax, 4
ja 0x527680
mov eax, dword [ebx + 0x20]
xor eax, 0x40000
cmp dword [ebp + 0x74], eax
jne 0x527680
cmp esi, 0xfffffc1f
jne case.default.0x527c59
cmp dword [ebp + 0x6c], ecx
jae case.default.0x527c59
cmp word [edx], 0x78
je 0x52768c
cmp word [ecx], 0x78
je 0x52768c
jmp case.default.0x527c59
mov edx, dword [esp + 0x14]
test esi, esi
jne case.0x5274c6.998
mov dword [ebx + 4], ecx
cmp word [ecx], 0x78
je 0x529b93
jmp case.default.0x527c59
cmp esi, 0xfffffc1e
jne case.0x5274c6.998
mov eax, dword [ebx]
push dword [ebp + 0x70]
add eax, 4
push eax
call fcn.00536d10
mov edx, dword [esp + 0x1c]
add esp, 8
test eax, eax
jne case.0x5274c6.998
mov eax, dword [ebx + 0x38]
mov esi, 0xfffffc1d
mov dword [ebp + 0x70], eax
mov eax, dword [esp + 0x10]
jmp 0x52043b
test esi, esi
jne case.0x5274c6.998
mov eax, dword [ebx + 0x44]
mov esi, 0xfffffc1b
mov dword [ebp + 0x74], eax
mov eax, dword [esp + 0x10]
jmp 0x52043b
test esi, esi
jne case.0x5274c6.998
mov eax, dword [ebx + 0x44]
mov esi, 0xfffffc1c
mov dword [ebp + 0x74], eax
mov eax, dword [esp + 0x10]
jmp 0x52043b
test esi, esi
jne case.0x5274c6.998
mov eax, dword [ebx + 0x38]
mov esi, 0xfffffc1d
mov dword [ebp + 0x70], eax
mov eax, dword [ebx + 0x44]
mov dword [ebp + 0x74], eax
mov eax, dword [esp + 0x10]
jmp 0x52043b
test esi, esi
jne case.0x5274c6.998
mov eax, dword [ebx]
mov esi, 0xfffffc1e
add eax, 4
mov dword [ebp + 0x70], eax
mov eax, dword [ebx + 0x44]
mov dword [ebp + 0x74], eax
mov eax, dword [esp + 0x10]
jmp 0x52043b
test esi, esi
jne case.0x5274c6.998
mov eax, dword [ebx]
mov esi, 0xfffffc1f
mov dword [ebp + 0x6c], eax
mov eax, dword [ebx + 0x44]
mov dword [ebp + 0x74], eax
mov eax, dword [esp + 0x10]
jmp 0x52043b
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
lea eax, [esp + 0x4c]
push eax
push ebp
push ebx
push dword [ebx + 0x28]
push dword [ebx + 0x14]
call fcn.0052ae40
add esp, 0x14
test eax, eax
je 0x52984a
jle 0x5277a7
mov ecx, dword [ebp + 0x54]
mov dword [edi + 0x38], ecx
jmp 0x5277aa
mov ecx, dword [edi + 0x38]
cmp ecx, dword [ebp + 0x54]
jb case.default.0x527c59
movzx eax, word [ebp + 0x3c]
mov edx, eax
test ax, ax
je case.default.0x527c59
cmp ecx, dword [ebp + 0x5c]
ja 0x5277d1
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp edx, 1
ja 0x521512
jmp case.default.0x527c59
test esi, esi
jne case.0x5274c6.998
mov eax, dword [ebx + 0xc]
neg eax
add eax, eax
add dword [ebx + 0x38], eax
mov eax, dword [ebx + 0x38]
cmp eax, dword [ebx + 4]
jb case.default.0x527c59
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0x15
jmp 0x529d02
test esi, esi
jne case.0x5274c6.998
mov esi, dword [ebx + 4]
cmp dword [ebx + 0x38], esi
je case.default.0x527c59
mov dword [ebx + 0x38], esi
dec dword [ebx + 0x24]
mov edi, dword [ebx + 0x20]
cmp edi, dword [ebx + 0x24]
jae 0x527856
lea eax, [esp + 0x50]
push eax
push ebp
push ebx
push dword [ebx + 0x28]
push dword [ebx + 0x14]
call fcn.0052ae40
mov eax, dword [esp + 0x64]
inc edi
add esp, 0x14
lea esi, [esi + eax*2]
mov dword [ebx + 0x38], esi
cmp edi, dword [ebx + 0x24]
jb 0x527831
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0x16
jmp 0x529d02
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov edx, dword [ebx + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x5278b5
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x5278a0
cmp dword [ebp + 0x24], esi
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
lea eax, [edx + 2]
mov dword [ebx + 0x38], eax
cmp ecx, 0xff
jbe 0x5278db
cmp byte [ebx + 0x31], 0x6e
je case.default.0x527c59
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0x17
jmp 0x529d02
mov edx, dword [ebx + 8]
mov esi, ecx
shr esi, 3
and ecx, 7
mov eax, 1
shl eax, cl
test byte [esi + edx], al
jne 0x5278d0
jmp case.default.0x527c59
test esi, esi
jne case.0x5274c6.998
add dword [ebx + 0x38], 0xfffffffe
jmp 0x527909
mov ebx, dword [esp + 0x10]
mov eax, dword [ebx + 0x38]
cmp eax, dword [ebx + 4]
jb case.default.0x527c59
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0x18
jmp 0x529d02
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov ecx, dword [ebx + 0x38]
cmp ecx, dword [ebp + 0x54]
jb 0x527974
movzx eax, word [ebp + 0x3c]
mov edx, eax
test ax, ax
je case.default.0x527c59
cmp ecx, dword [ebp + 0x5c]
ja 0x52795f
cmp dword [ebp + 0x24], esi
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp edx, 1
ja 0x521512
jmp case.default.0x527c59
movzx eax, word [ecx]
cmp dword [ebx + 0x28], eax
je 0x527985
cmp dword [ebx + 0x2c], eax
jne case.default.0x527c59
lea eax, [ecx + 2]
mov dword [ebx + 0x38], eax
mov eax, dword [esp + 0x10]
mov esi, dword [eax]
mov byte [eax + 0x30], 0x19
jmp 0x529d02
add dword [ebx + 0x38], 0xfffffffe
test esi, esi
je 0x52109a
mov eax, dword [esp + 0x10]
jmp 0x52043b
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov esi, dword [ebx + 0x38]
cmp esi, dword [ebp + 0x54]
jb 0x527a04
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp esi, dword [ebp + 0x5c]
ja 0x5279ef
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [esi]
lea eax, [esi + 2]
mov dword [ebx + 0x38], eax
cmp dword [ebx + 0x28], ecx
jne case.default.0x527c59
mov eax, dword [esp + 0x10]
mov esi, dword [eax]
mov byte [eax + 0x30], 0x1b
jmp 0x529d02
add dword [ebx + 0x38], 0xfffffffe
test esi, esi
je 0x5211a2
mov eax, dword [esp + 0x10]
jmp 0x52043b
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov ecx, dword [ebx + 0x38]
cmp ecx, dword [ebp + 0x54]
jb 0x527a8e
movzx eax, word [ebp + 0x3c]
mov edx, eax
test ax, ax
je case.default.0x527c59
cmp ecx, dword [ebp + 0x5c]
ja 0x527a79
cmp dword [ebp + 0x24], esi
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp edx, 1
ja 0x521512
jmp case.default.0x527c59
movzx eax, word [ecx]
cmp dword [ebx + 0x28], eax
je case.default.0x527c59
cmp dword [ebx + 0x2c], eax
je case.default.0x527c59
lea eax, [ecx + 2]
mov dword [ebx + 0x38], eax
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0x1d
jmp 0x529d02
test esi, esi
jne case.0x5274c6.998
add dword [ebx + 0x38], 0xfffffffe
mov eax, dword [ebx + 0x38]
cmp eax, dword [ebx + 4]
jne 0x52986d
mov edi, dword [esp + 0x68]
jmp 0x5200f0
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov esi, dword [ebx + 0x38]
cmp esi, dword [ebp + 0x54]
jb 0x527b2a
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp esi, dword [ebp + 0x5c]
ja 0x527b15
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [esi]
lea eax, [esi + 2]
mov dword [ebx + 0x38], eax
cmp dword [ebx + 0x28], ecx
je case.default.0x527c59
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0x1f
jmp 0x529d02
test esi, esi
jne case.0x5274c6.998
add dword [ebx + 0x38], 0xfffffffe
mov eax, dword [ebx + 0x38]
cmp eax, dword [ebx + 4]
jne 0x529878
mov edi, dword [esp + 0x68]
jmp 0x5200f0
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov edx, dword [ebx + 0x38]
mov ecx, dword [ebp + 0x54]
cmp edx, ecx
jb 0x527bbe
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x527ba9
cmp dword [ebp + 0x24], esi
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
mov edi, dword [ebx + 0x28]
cmp edi, 0xc
jne 0x527c27
mov esi, dword [ebp + 0x88]
lea eax, [ebp + 0x8c]
test esi, esi
je 0x527bf6
push dword [esp + 0x14]
push eax
push ecx
push esi
push edx
call fcn.005373d0
add esp, 0x14
test eax, eax
jne case.default.0x527c59
mov edx, dword [ebx + 0x38]
mov edi, dword [ebx + 0x28]
jmp 0x527c27
mov esi, dword [eax]
lea eax, [esi + esi]
sub ecx, eax
cmp edx, ecx
ja 0x527c27
mov ax, word [edx]
cmp ax, word [ebp + 0x90]
jne 0x527c27
cmp esi, 1
je case.default.0x527c59
mov ax, word [edx + 2]
cmp ax, word [ebp + 0x92]
je case.default.0x527c59
movzx ecx, word [edx]
lea eax, [edi - 6]
lea esi, [edx + 2]
mov dword [ebx + 0x38], esi
cmp eax, 0xf
ja case.0x527c3c.15
jmp dword [eax*4 + 0x52ab04]
cmp ecx, 0x85
ja 0x527c60
je case.0x527c59.11
add ecx, 0xfffffff6
cmp ecx, 3
ja case.default.0x527c59
jmp dword [ecx*4 + 0x52ab44]
sub ecx, 0x2028
je case.0x527c59.11
sub ecx, 1
jne case.default.0x527c59
cmp word [ebp + 0x3e], 2
jne case.0x527c3c.13
jmp case.default.0x527c59
cmp ecx, 0x2000
ja 0x527cd1
je case.default.0x527c59
cmp ecx, 0xa0
ja 0x527cb4
je case.default.0x527c59
cmp ecx, 9
je case.default.0x527c59
cmp ecx, 0x20
jne case.0x527c3c.13
jmp case.default.0x527c59
cmp ecx, 0x1680
je case.default.0x527c59
cmp ecx, 0x180e
jne case.0x527c3c.13
jmp case.default.0x527c59
cmp ecx, 0x3000
ja case.0x527c3c.13
je case.default.0x527c59
add ecx, 0xffffdfff
cmp ecx, 0x5e
ja case.0x527c3c.13
movzx eax, byte [ecx + 0x52ab5c]
jmp dword [eax*4 + 0x52ab54]
cmp ecx, 0x2000
ja 0x527d50
je case.0x527c3c.13
cmp ecx, 0xa0
ja 0x527d33
je case.0x527c3c.13
cmp ecx, 9
je case.0x527c3c.13
cmp ecx, 0x20
je case.0x527c3c.13
jmp case.default.0x527c59
cmp ecx, 0x1680
je case.0x527c3c.13
cmp ecx, 0x180e
je case.0x527c3c.13
jmp case.default.0x527c59
cmp ecx, 0x3000
ja case.default.0x527c59
je case.0x527c3c.13
add ecx, 0xffffdfff
cmp ecx, 0x5e
ja case.default.0x527c59
movzx eax, byte [ecx + 0x52abc4]
jmp dword [eax*4 + 0x52abbc]
cmp ecx, 0x85
ja 0x527da0
je case.default.0x527c59
add ecx, 0xfffffff6
cmp ecx, 3
ja case.0x527c3c.13
jmp dword [ecx*4 + 0x52ac24]
sub ecx, 0x2028
je case.default.0x527c59
sub ecx, 1
jne case.0x527c3c.13
jmp case.default.0x527c59
cmp ecx, 0x85
ja 0x527ddb
je case.0x527c3c.13
add ecx, 0xfffffff6
cmp ecx, 3
ja case.default.0x527c59
jmp dword [ecx*4 + 0x52ac34]
sub ecx, 0x2028
je case.0x527c3c.13
sub ecx, 1
je case.0x527c3c.13
jmp case.default.0x527c59
cmp ecx, 0xff
ja case.0x527c3c.13
mov eax, dword [ebp + 0x30]
test byte [ecx + eax], 8
je case.0x527c3c.13
jmp case.default.0x527c59
cmp ecx, 0xff
ja case.default.0x527c59
mov eax, dword [ebp + 0x30]
test byte [ecx + eax], 8
jne case.0x527c3c.13
jmp case.default.0x527c59
cmp ecx, 0xff
ja case.0x527c3c.13
mov eax, dword [ebp + 0x30]
test byte [ecx + eax], 1
je case.0x527c3c.13
jmp case.default.0x527c59
cmp ecx, 0xff
ja case.default.0x527c59
mov eax, dword [ebp + 0x30]
test byte [ecx + eax], 1
jne case.0x527c3c.13
jmp case.default.0x527c59
cmp ecx, 0xff
ja case.0x527c3c.13
mov eax, dword [ebp + 0x30]
test byte [ecx + eax], 0x10
je case.0x527c3c.13
jmp case.default.0x527c59
cmp ecx, 0xff
ja case.default.0x527c59
mov eax, dword [ebp + 0x30]
test byte [ecx + eax], 0x10
jne case.0x527c3c.13
jmp case.default.0x527c59
test esi, esi
jne case.0x5274c6.998
mov eax, dword [ebx + 0x38]
add eax, 0xfffffffe
mov dword [ebx + 0x38], eax
mov ecx, eax
cmp dword [ebx + 0x28], 0x11
jne 0x527edc
cmp eax, dword [ebx + 4]
jbe 0x527edc
cmp word [eax], 0xa
jne 0x527edc
cmp word [eax - 2], 0xd
lea edx, [eax - 2]
jne 0x527edc
mov dword [ebx + 0x38], edx
mov ecx, edx
cmp ecx, dword [ebx + 4]
je 0x5200e4
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0x22
jmp 0x529d02
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov edx, dword [ebx + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x527f44
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x527f2f
cmp dword [ebp + 0x24], esi
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
mov esi, dword [esp + 0x14]
mov dword [ebx + 0x38], edx
test esi, esi
je 0x527f82
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x527f82
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
add ecx, 0x10000
mov dword [ebx + 0x38], eax
push esi
push dword [ebx + 8]
push ecx
call fcn.00537ac0
add esp, 0xc
test eax, eax
jne 0x5298eb
jmp case.default.0x527c59
test esi, esi
jne case.0x5274c6.998
mov ecx, dword [ebx + 0x38]
lea edx, [ecx - 2]
mov dword [ebx + 0x38], edx
cmp ecx, dword [ebx + 4]
jbe case.default.0x527c59
cmp dword [esp + 0x14], esi
je 0x521ed4
mov ax, word [edx]
mov ecx, 0xfc00
and ax, cx
mov ecx, 0xdc00
cmp ax, cx
jne 0x521ed4
lea eax, [edx - 2]
mov dword [ebx + 0x38], eax
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0x65
jmp 0x529d02
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov edx, dword [ebx + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x52803e
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x528029
cmp dword [ebp + 0x24], esi
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
mov eax, ecx
mov dword [ebx + 0x38], edx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x528074
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
add ecx, 0x10000
mov dword [ebx + 0x38], eax
cmp ecx, 0xff
jbe 0x528091
cmp byte [ebx + 0x31], 0x6e
je case.default.0x527c59
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0xc8
jmp 0x529d02
mov edx, dword [ebx + 8]
mov esi, ecx
shr esi, 3
and ecx, 7
mov eax, 1
shl eax, cl
test byte [esi + edx], al
jne 0x528086
jmp case.default.0x527c59
test esi, esi
jne case.0x5274c6.998
mov ecx, dword [ebx + 0x38]
lea edx, [ecx - 2]
mov dword [ebx + 0x38], edx
cmp ecx, dword [ebx + 4]
jbe case.default.0x527c59
mov ax, word [edx]
mov ecx, 0xfc00
and ax, cx
mov ecx, 0xdc00
cmp ax, cx
jne 0x5298fa
lea eax, [edx - 2]
mov dword [ebx + 0x38], eax
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0xc9
jmp 0x529d02
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov edi, dword [ebx + 0xc]
mov ebp, dword [ebp + 0x54]
mov eax, ebp
mov ebx, dword [ebx + 0x38]
lea esi, [edi + edi]
sub eax, esi
cmp ebx, eax
ja 0x528188
mov eax, dword [esp + 0x10]
mov ecx, ebx
mov edx, dword [eax + 8]
sub esi, 4
jb 0x528142
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x52814b
add ecx, 4
add edx, 4
sub esi, 4
jae 0x528131
cmp esi, 0xfffffffc
je 0x529905
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x528188
cmp esi, 0xfffffffd
je 0x529905
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x528188
cmp esi, 0xfffffffe
je 0x529905
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x528188
cmp esi, 0xffffffff
je 0x529905
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
je 0x529905
mov ecx, dword [esp + 0x10]
mov edi, dword [ecx + 0x14]
test edi, edi
je 0x528207
lea esi, [edi + edi]
mov eax, ebp
sub eax, esi
cmp ebx, eax
ja 0x528207
lea edx, [ecx + 0x32]
mov ecx, ebx
sub esi, 4
jb 0x5281c1
nop dword [eax]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x5281ca
add ecx, 4
add edx, 4
sub esi, 4
jae 0x5281b0
cmp esi, 0xfffffffc
je 0x529905
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x528207
cmp esi, 0xfffffffd
je 0x529905
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x528207
cmp esi, 0xfffffffe
je 0x529905
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x528207
cmp esi, 0xffffffff
je 0x529905
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
je 0x529905
cmp ebx, ebp
mov ebp, dword [esp + 0x6c]
jb case.default.0x527c59
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp ebx, dword [ebp + 0x5c]
ja 0x528231
cmp dword [ebp + 0x24], 0
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
test esi, esi
jne case.0x5274c6.998
add dword [ebx + 0x38], 0xfffffffe
mov edx, 0xfc00
mov ecx, dword [ebx + 0x38]
mov ax, word [ecx]
and ax, dx
mov edx, 0xdc00
cmp ax, dx
mov eax, dword [esp + 0x10]
jne 0x528274
add ecx, 0xfffffffe
mov dword [ebx + 0x38], ecx
cmp ecx, dword [eax + 4]
jbe 0x5200e4
mov esi, dword [eax]
mov byte [eax + 0x30], 0xcb
jmp 0x529d06
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov edx, dword [ebx + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x5282dc
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x5282c7
cmp dword [ebp + 0x24], esi
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
mov eax, ecx
mov dword [ebx + 0x38], edx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x528312
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
add ecx, 0x10000
mov dword [ebx + 0x38], eax
cmp dword [ebx + 0x28], ecx
je case.default.0x527c59
cmp dword [ebx + 0x2c], ecx
je case.default.0x527c59
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0xcc
jmp 0x529d02
test esi, esi
jne case.0x5274c6.998
add dword [ebx + 0x38], 0xfffffffe
mov esi, 0xfc00
mov ecx, dword [ebx + 0x38]
mov ax, word [ecx]
and ax, si
mov esi, 0xdc00
cmp ax, si
mov eax, dword [esp + 0x10]
jne 0x52835d
add ecx, 0xfffffffe
mov dword [ebx + 0x38], ecx
cmp ecx, dword [eax + 4]
ja 0x52991e
mov edi, dword [esp + 0x68]
jmp 0x5200f0
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov edx, dword [ebx + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x5283c3
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x5283ae
cmp dword [ebp + 0x24], esi
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
mov eax, ecx
mov dword [ebx + 0x38], edx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x5283f9
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
add ecx, 0x10000
mov dword [ebx + 0x38], eax
cmp dword [ebx + 0x28], ecx
je case.default.0x527c59
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0xce
jmp 0x529d02
test esi, esi
jne case.0x5274c6.998
add dword [ebx + 0x38], 0xfffffffe
mov esi, 0xfc00
mov ecx, dword [ebx + 0x38]
mov ax, word [ecx]
and ax, si
mov esi, 0xdc00
cmp ax, si
jne 0x528437
lea eax, [ecx - 2]
mov dword [ebx + 0x38], eax
mov eax, dword [ebx + 0x38]
cmp eax, dword [ebx + 4]
ja 0x529929
mov edi, dword [esp + 0x68]
jmp 0x5200f0
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov ecx, dword [ebx + 0x38]
cmp ecx, dword [ebp + 0x54]
jb 0x5284a0
movzx eax, word [ebp + 0x3c]
mov edx, eax
test ax, ax
je case.default.0x527c59
cmp ecx, dword [ebp + 0x5c]
ja 0x52848b
cmp dword [ebp + 0x24], esi
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp edx, 1
ja 0x521512
jmp case.default.0x527c59
movzx eax, word [ecx]
add ecx, 2
mov edx, dword [esp + 0x14]
mov dword [ebx + 0x38], ecx
test edx, edx
je 0x5284c3
and eax, 0xfc00
cmp eax, 0xd800
jne 0x5284c3
lea eax, [ecx + 2]
mov dword [ebx + 0x38], eax
cmp dword [ebx + 0x28], 0xf
jne case.0x5297aa.0
mov eax, dword [esp + 0x10]
xor esi, esi
jmp 0x52043b
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov edx, dword [ebx + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x52852c
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x528517
cmp dword [ebp + 0x24], esi
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov dword [ebx + 0x38], edx
je 0x528569
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x528569
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
add ecx, 0x10000
mov dword [ebx + 0x38], eax
mov eax, ecx
and ecx, 0x7f
shr eax, 7
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
mov al, byte [eax*4 + 0x5a7211]
cmp al, 9
je 0x5285a0
cmp al, 5
je 0x5285a0
cmp al, 8
je 0x5285a0
xor ecx, ecx
jmp 0x5285a5
mov ecx, 1
xor eax, eax
cmp dword [ebx + 0x28], 0xf
sete al
cmp ecx, eax
je case.default.0x527c59
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0xd1
jmp 0x529d02
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov edx, dword [ebx + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x528615
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x528600
cmp dword [ebp + 0x24], esi
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov dword [ebx + 0x38], edx
je 0x528652
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x528652
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
add ecx, 0x10000
mov dword [ebx + 0x38], eax
mov eax, ecx
and ecx, 0x7f
shr eax, 7
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
xor ecx, ecx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx eax, byte [eax*4 + 0x5a7211]
mov eax, dword [eax*4 + 0x5a4cb0]
cmp eax, dword [ebx + 0x2c]
sete cl
xor eax, eax
cmp dword [ebx + 0x28], 0xf
sete al
cmp ecx, eax
je case.default.0x527c59
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0xd2
jmp 0x529d02
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov edx, dword [ebx + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x5286f9
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x5286e4
cmp dword [ebp + 0x24], esi
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov dword [ebx + 0x38], edx
je 0x528736
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x528736
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
add ecx, 0x10000
mov dword [ebx + 0x38], eax
mov eax, ecx
and ecx, 0x7f
shr eax, 7
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
xor ecx, ecx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx eax, byte [eax*4 + 0x5a7211]
cmp eax, dword [ebx + 0x2c]
sete cl
xor eax, eax
cmp dword [ebx + 0x28], 0xf
sete al
cmp ecx, eax
je case.default.0x527c59
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0xd3
jmp 0x529d02
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov edx, dword [ebx + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x5287d6
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x5287c1
cmp dword [ebp + 0x24], esi
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov dword [ebx + 0x38], edx
je 0x528813
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x528813
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
add ecx, 0x10000
mov dword [ebx + 0x38], eax
mov eax, ecx
and ecx, 0x7f
shr eax, 7
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
xor ecx, ecx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx eax, byte [eax*4 + 0x5a7210]
cmp eax, dword [ebx + 0x2c]
sete cl
xor eax, eax
cmp dword [ebx + 0x28], 0xf
sete al
cmp ecx, eax
je case.default.0x527c59
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0xd4
jmp 0x529d02
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov edx, dword [ebx + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x5288b3
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x52889e
cmp dword [ebp + 0x24], esi
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov dword [ebx + 0x38], edx
je 0x5288f0
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x5288f0
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
add ecx, 0x10000
mov dword [ebx + 0x38], eax
mov eax, ecx
and ecx, 0x7f
shr eax, 7
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx eax, byte [eax*4 + 0x5a7211]
mov eax, dword [eax*4 + 0x5a4cb0]
cmp eax, 1
je 0x52892d
cmp eax, 3
je 0x52892d
xor ecx, ecx
jmp 0x528932
mov ecx, 1
xor eax, eax
cmp dword [ebx + 0x28], 0xf
sete al
cmp ecx, eax
je case.default.0x527c59
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0xd5
jmp 0x529d02
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov edx, dword [ebx + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x5289a2
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x52898d
cmp dword [ebp + 0x24], esi
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov dword [ebx + 0x38], edx
je 0x5289df
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x5289df
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
add ecx, 0x10000
mov dword [ebx + 0x38], eax
cmp ecx, 0x20
ja 0x5289f9
je case.0x528aa4.8193
lea eax, [ecx - 9]
cmp eax, 4
ja case.0x528aa4.8203
jmp dword [eax*4 + 0x52ac44]
cmp ecx, 0x2000
ja 0x528a88
je case.0x528aa4.8193
cmp ecx, 0x1680
ja 0x528a80
je case.0x528aa4.8193
mov eax, ecx
sub eax, 0x85
je case.0x528aa4.8193
sub eax, 0x1b
je case.0x528aa4.8193
mov eax, ecx
and ecx, 0x7f
shr eax, 7
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
xor ecx, ecx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx eax, byte [eax*4 + 0x5a7211]
cmp dword [eax*4 + 0x5a4cb0], 6
sete cl
xor eax, eax
cmp dword [ebx + 0x28], 0xf
sete al
cmp ecx, eax
je case.default.0x527c59
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0xd6
jmp 0x529d02
cmp ecx, 0x180e
jmp 0x528a29
cmp ecx, 0x3000
ja case.0x528aa4.8203
je case.0x528aa4.8193
lea eax, [ecx - 0x2001]
cmp eax, 0x5e
ja case.0x528aa4.8203
movzx eax, byte [eax + 0x52ac60]
jmp dword [eax*4 + 0x52ac58]
cmp dword [ebx + 0x28], 0xf
jne case.0x5297aa.7
jmp case.default.0x527c59
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov ecx, dword [ebx + 0x38]
cmp ecx, dword [ebp + 0x54]
jb 0x528b0a
movzx eax, word [ebp + 0x3c]
mov edx, eax
test ax, ax
je case.default.0x527c59
cmp ecx, dword [ebp + 0x5c]
ja 0x528af5
cmp dword [ebp + 0x24], esi
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp edx, 1
ja 0x521512
jmp case.default.0x527c59
movzx edx, word [ecx]
add ecx, 2
cmp dword [esp + 0x14], 0
mov dword [ebx + 0x38], ecx
je 0x528b47
mov eax, edx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x528b47
movzx eax, word [ecx]
and edx, 0x3ff
and eax, 0x3ff
shl edx, 0xa
or edx, eax
lea eax, [ecx + 2]
add edx, 0x10000
mov dword [ebx + 0x38], eax
mov eax, edx
shr eax, 7
movzx ecx, word [eax*2 + 0x5ab420]
mov eax, edx
and eax, 0x7f
shl ecx, 7
add ecx, eax
movzx eax, word [ecx*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx eax, byte [eax*4 + 0x5a7211]
mov eax, dword [eax*4 + 0x5a4cb0]
cmp eax, 1
je 0x528b8b
cmp eax, 3
je 0x528b8b
cmp edx, 0x5f
je 0x528b8b
xor ecx, ecx
jmp 0x528b90
mov ecx, 1
xor eax, eax
cmp dword [ebx + 0x28], 0xf
sete al
cmp ecx, eax
je case.default.0x527c59
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0xd7
jmp 0x529d02
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov edx, dword [ebx + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x528c00
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x528beb
cmp dword [ebp + 0x24], esi
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov dword [ebx + 0x38], edx
je 0x528c3d
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x528c3d
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
add ecx, 0x10000
mov dword [ebx + 0x38], eax
mov eax, dword [ebx + 0x2c]
mov edx, dword [eax*4 + 0x5a6c48]
lea eax, [eax*4 + 0x5a6c48]
cmp ecx, edx
jb 0x528c5f
lea eax, [eax + 4]
cmp ecx, edx
je 0x528c74
mov edx, dword [eax]
cmp ecx, edx
jae 0x528c52
cmp dword [ebx + 0x28], 0xf
jne case.default.0x527c59
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0xd8
jmp 0x529d02
cmp dword [ebx + 0x28], 0xf
jne case.0x5297aa.10
jmp case.default.0x527c59
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov edx, dword [ebx + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x528cd3
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x528cbe
cmp dword [ebp + 0x24], esi
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov dword [ebx + 0x38], edx
je 0x528d10
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x528d10
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
add ecx, 0x10000
mov dword [ebx + 0x38], eax
cmp ecx, 0x24
je 0x528d3b
cmp ecx, 0x40
je 0x528d3b
cmp ecx, 0x60
je 0x528d3b
cmp ecx, 0xa0
jb 0x528d2f
cmp ecx, 0xd7ff
jbe 0x528d3b
cmp ecx, 0xe000
jae 0x528d3b
xor ecx, ecx
jmp 0x528d40
mov ecx, 1
xor eax, eax
cmp dword [ebx + 0x28], 0xf
sete al
cmp ecx, eax
je case.default.0x527c59
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0xd9
jmp 0x529d02
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov ecx, dword [ebx + 0x38]
cmp ecx, dword [ebp + 0x54]
jb 0x52993f
movzx eax, word [ebp + 0x3c]
mov edx, eax
test ax, ax
je case.default.0x527c59
cmp ecx, dword [ebp + 0x5c]
ja 0x528d9f
cmp dword [ebp + 0x24], esi
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp edx, 1
ja 0x521512
jmp case.default.0x527c59
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov edx, dword [ebx + 0x38]
mov ecx, dword [ebp + 0x54]
cmp edx, ecx
jb 0x528e0a
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x528df5
cmp dword [ebp + 0x24], esi
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
mov edi, dword [ebx + 0x28]
cmp edi, 0xc
jne 0x528e73
mov esi, dword [ebp + 0x88]
lea eax, [ebp + 0x8c]
test esi, esi
je 0x528e42
push dword [esp + 0x14]
push eax
push ecx
push esi
push edx
call fcn.005373d0
add esp, 0x14
test eax, eax
jne case.default.0x527c59
mov edx, dword [ebx + 0x38]
mov edi, dword [ebx + 0x28]
jmp 0x528e73
mov esi, dword [eax]
lea eax, [esi + esi]
sub ecx, eax
cmp edx, ecx
ja 0x528e73
mov ax, word [edx]
cmp ax, word [ebp + 0x90]
jne 0x528e73
cmp esi, 1
je case.default.0x527c59
mov ax, word [edx + 2]
cmp ax, word [ebp + 0x92]
je case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
mov eax, ecx
mov dword [ebx + 0x38], edx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x528ea9
movzx eax, word [edx]
and ecx, 0x3ff
shl ecx, 0xa
and eax, 0x3ff
or ecx, eax
add ecx, 0x10000
add edx, 2
mov dword [ebx + 0x38], edx
lea eax, [edi - 6]
cmp eax, 0xf
ja case.0x527c3c.15
jmp dword [eax*4 + 0x52acc0]
cmp ecx, 0x85
ja 0x528ed9
je case.0x528ed2.11
add ecx, 0xfffffff6
cmp ecx, 3
ja case.default.0x527c59
jmp dword [ecx*4 + 0x52ad00]
sub ecx, 0x2028
je case.0x528ed2.11
sub ecx, 1
jne case.default.0x527c59
cmp word [ebp + 0x3e], 2
jne case.0x528eb5.13
jmp case.default.0x527c59
cmp ecx, 0x2000
ja 0x528f4a
je case.default.0x527c59
cmp ecx, 0xa0
ja 0x528f2d
je case.default.0x527c59
cmp ecx, 9
je case.default.0x527c59
cmp ecx, 0x20
jne case.0x528eb5.13
jmp case.default.0x527c59
cmp ecx, 0x1680
je case.default.0x527c59
cmp ecx, 0x180e
jne case.0x528eb5.13
jmp case.default.0x527c59
cmp ecx, 0x3000
ja case.0x528eb5.13
je case.default.0x527c59
add ecx, 0xffffdfff
cmp ecx, 0x5e
ja case.0x528eb5.13
movzx eax, byte [ecx + 0x52ad18]
jmp dword [eax*4 + 0x52ad10]
cmp ecx, 0x2000
ja 0x528fc9
je case.0x528eb5.13
cmp ecx, 0xa0
ja 0x528fac
je case.0x528eb5.13
cmp ecx, 9
je case.0x528eb5.13
cmp ecx, 0x20
je case.0x528eb5.13
jmp case.default.0x527c59
cmp ecx, 0x1680
je case.0x528eb5.13
cmp ecx, 0x180e
je case.0x528eb5.13
jmp case.default.0x527c59
cmp ecx, 0x3000
ja case.default.0x527c59
je case.0x528eb5.13
add ecx, 0xffffdfff
cmp ecx, 0x5e
ja case.default.0x527c59
movzx eax, byte [ecx + 0x52ad80]
jmp dword [eax*4 + 0x52ad78]
cmp ecx, 0x85
ja 0x529019
je case.default.0x527c59
add ecx, 0xfffffff6
cmp ecx, 3
ja case.0x528eb5.13
jmp dword [ecx*4 + 0x52ade0]
sub ecx, 0x2028
je case.default.0x527c59
sub ecx, 1
jne case.0x528eb5.13
jmp case.default.0x527c59
cmp ecx, 0x85
ja 0x529054
je case.0x528eb5.13
add ecx, 0xfffffff6
cmp ecx, 3
ja case.default.0x527c59
jmp dword [ecx*4 + 0x52adf0]
sub ecx, 0x2028
je case.0x528eb5.13
sub ecx, 1
je case.0x528eb5.13
jmp case.default.0x527c59
cmp ecx, 0x100
jae case.0x528eb5.13
mov eax, dword [ebp + 0x30]
test byte [ecx + eax], 8
je case.0x528eb5.13
jmp case.default.0x527c59
cmp ecx, 0x100
jae case.default.0x527c59
mov eax, dword [ebp + 0x30]
test byte [ecx + eax], 8
jne case.0x528eb5.13
jmp case.default.0x527c59
cmp ecx, 0x100
jae case.0x528eb5.13
mov eax, dword [ebp + 0x30]
test byte [ecx + eax], 1
je case.0x528eb5.13
jmp case.default.0x527c59
cmp ecx, 0x100
jae case.default.0x527c59
mov eax, dword [ebp + 0x30]
test byte [ecx + eax], 1
jne case.0x528eb5.13
jmp case.default.0x527c59
cmp ecx, 0x100
jae case.0x528eb5.13
mov eax, dword [ebp + 0x30]
test byte [ecx + eax], 0x10
je case.0x528eb5.13
jmp case.default.0x527c59
cmp ecx, 0x100
jae case.default.0x527c59
mov eax, dword [ebp + 0x30]
test byte [ecx + eax], 0x10
jne case.0x528eb5.13
jmp case.default.0x527c59
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x38]
add edx, 0xfffffffe
mov dword [ebx + 0x38], edx
cmp dword [esp + 0x14], esi
jne 0x5295e6
movzx ecx, word [edx]
jmp 0x52962f
test esi, esi
jne case.0x5274c6.998
add dword [ebx + 0x38], 0xfffffffe
mov edx, 0xfc00
mov ecx, dword [ebx + 0x38]
mov ax, word [ecx]
and ax, dx
mov edx, 0xdc00
cmp ax, dx
jne 0x52916f
add ecx, 0xfffffffe
mov dword [ebx + 0x38], ecx
cmp dword [ebx + 0x28], 0x11
mov eax, ecx
jne 0x529191
cmp ecx, dword [ebx + 4]
jbe 0x529191
cmp word [ecx], 0xa
jne 0x529191
cmp word [ecx - 2], 0xd
lea edx, [ecx - 2]
jne 0x529191
mov dword [ebx + 0x38], edx
mov eax, edx
cmp eax, dword [ebx + 4]
jbe 0x5200e4
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0xdd
jmp 0x529d02
test esi, esi
jne case.0x5274c6.998
mov ecx, dword [ebx + 0x38]
add ecx, 0xfffffffe
mov edx, ecx
mov dword [ebx + 0x38], ecx
cmp dword [esp + 0x14], esi
je 0x5291d9
mov ax, word [edx]
mov esi, 0xfc00
and ax, si
mov esi, 0xdc00
cmp ax, si
jne 0x5291d9
lea ecx, [edx - 2]
mov dword [ebx + 0x38], ecx
cmp ecx, dword [ebx + 4]
jbe 0x5200e4
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0xde
jmp 0x529d02
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov ecx, dword [ebx + 0x38]
cmp ecx, dword [ebp + 0x54]
jb 0x529241
movzx eax, word [ebp + 0x3c]
mov edx, eax
test ax, ax
je case.default.0x527c59
cmp ecx, dword [ebp + 0x5c]
ja 0x52922c
cmp dword [ebp + 0x24], esi
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp edx, 1
ja 0x521512
jmp case.default.0x527c59
movzx edx, word [ecx]
add ecx, 2
cmp dword [esp + 0x14], 0
mov dword [ebx + 0x38], ecx
je 0x52927e
mov eax, edx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x52927e
movzx eax, word [ecx]
and edx, 0x3ff
and eax, 0x3ff
shl edx, 0xa
or edx, eax
lea eax, [ecx + 2]
add edx, 0x10000
mov dword [ebx + 0x38], eax
mov ecx, dword [ebx + 0x2c]
mov eax, edx
shr eax, 7
and edx, 0x7f
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, edx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx edx, word [eax*4 + 0x5a721a]
mov eax, ecx
shr eax, 5
and edx, 0xfff
add edx, eax
and ecx, 0x1f
mov eax, 1
shl eax, cl
mov ecx, dword [edx*4 + 0x5a66c0]
and ecx, eax
neg ecx
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [ebx + 0x28], 0xf
sete al
cmp ecx, eax
je case.default.0x527c59
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0xdf
jmp 0x529d02
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov edx, dword [ebx + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x52933f
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x52932a
cmp dword [ebp + 0x24], esi
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov dword [ebx + 0x38], edx
je 0x52937c
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x52937c
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
add ecx, 0x10000
mov dword [ebx + 0x38], eax
mov eax, ecx
and ecx, 0x7f
shr eax, 7
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
xor ecx, ecx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx eax, word [eax*4 + 0x5a7218]
shr eax, 0xb
cmp eax, dword [ebx + 0x2c]
sete cl
xor eax, eax
cmp dword [ebx + 0x28], 0xf
sete al
cmp ecx, eax
je case.default.0x527c59
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0xe0
jmp 0x529d02
test esi, esi
jne case.0x5274c6.998
mov edx, dword [ebx + 0x20]
lea eax, [edx + 1]
mov dword [ebx + 0x20], eax
cmp edx, dword [ebx + 0x24]
jae case.default.0x527c59
mov edx, dword [ebx + 0x38]
cmp edx, dword [ebp + 0x54]
jb 0x52941f
movzx eax, word [ebp + 0x3c]
mov ecx, eax
test ax, ax
je case.default.0x527c59
cmp edx, dword [ebp + 0x5c]
ja 0x52940a
cmp dword [ebp + 0x24], esi
je case.default.0x527c59
mov dword [ebp + 0x1c], 1
cmp ecx, 1
ja 0x521512
jmp case.default.0x527c59
movzx ecx, word [edx]
add edx, 2
cmp dword [esp + 0x14], 0
mov dword [ebx + 0x38], edx
je 0x52945c
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x52945c
movzx eax, word [edx]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
lea eax, [edx + 2]
add ecx, 0x10000
mov dword [ebx + 0x38], eax
mov eax, ecx
and ecx, 0x7f
shr eax, 7
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
mov ecx, dword [ebx + 0x2c]
movzx eax, word [eax*2 + 0x5af820]
lea edx, [eax + eax*2]
movzx eax, byte [edx*4 + 0x5a7210]
cmp eax, ecx
je 0x5294b7
movzx edx, word [edx*4 + 0x5a7218]
mov eax, ecx
shr eax, 5
and edx, 0x3ff
add edx, eax
and ecx, 0x1f
mov eax, 1
shl eax, cl
test dword [edx*4 + 0x5a6f18], eax
jne 0x5294b7
xor ecx, ecx
jmp 0x5294bc
mov ecx, 1
xor eax, eax
cmp dword [ebx + 0x28], 0xf
sete al
cmp ecx, eax
je case.default.0x527c59
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0xe1
jmp 0x529d02
mov esi, dword [esp + 0x24]
mov eax, dword [esi + 0x50]
shl eax, 2
push eax
lea eax, [esi + 0x54]
push eax
lea eax, [ebx + 0x54]
push eax
call fcn.0056a220
mov eax, dword [esi + 0x50]
add esp, 0xc
mov dword [ebx + 0x50], eax
mov eax, dword [esi + 0x40]
mov dword [ebx + 0x40], eax
mov ecx, dword [ebx]
movzx eax, word [ecx + 2]
lea ecx, [ecx + eax*2]
mov dword [ebx], ecx
cmp word [ecx], 0x78
je 0x529501
lea eax, [ecx + 4]
mov dword [ebx], eax
jmp 0x5200e4
mov esi, dword [ebx]
nop dword [eax]
movzx eax, word [esi + 2]
lea esi, [esi + eax*2]
mov dword [ebx], esi
cmp word [esi], 0x78
je 0x529520
mov edi, dword [esp + 0x68]
lea eax, [esi + 4]
mov dword [ebx], eax
jmp 0x5200f0
mov ecx, dword [ebx]
movzx eax, word [ecx + 2]
lea esi, [ecx + eax*2]
mov dword [ebx], esi
cmp word [esi], 0x78
je 0x529bee
mov edi, dword [esp + 0x68]
lea eax, [esi + 4]
mov dword [ebx], eax
jmp 0x5200f0
mov esi, dword [esp + 0x24]
mov eax, dword [esi + 0x50]
shl eax, 2
push eax
lea eax, [esi + 0x54]
push eax
lea eax, [ebx + 0x54]
push eax
call fcn.0056a220
mov eax, dword [esi + 0x50]
add esp, 0xc
mov dword [ebx + 0x50], eax
jmp 0x527512
mov ecx, dword [ebx + 4]
movzx eax, word [ecx + 2]
lea eax, [ecx + eax*2]
mov dword [ebx + 4], eax
cmp word [eax], 0x78
je 0x5297f2
xor eax, eax
cmp dword [ebx + 0x20], eax
sete al
jmp 0x527515
mov ebx, dword [esp + 0x10]
mov ecx, dword [ebx]
movzx eax, word [ecx]
movzx eax, byte [eax + 0x5a4b10]
jmp 0x5295c5
mov ebx, dword [esp + 0x10]
mov eax, dword [ebx + 0xc]
mov ecx, dword [ebx]
lea esi, [ecx + eax*2]
mov dword [ebx], esi
cmp byte [ebx + 0x31], 0x8f
jne 0x5200e4
mov eax, 0x2008f
mov byte [ebx + 0x30], 0x23
mov dword [esp + 0x20], eax
jmp 0x529d02
movzx eax, word [edx]
mov esi, edx
mov ecx, eax
and eax, 0xfc00
cmp eax, 0xdc00
jne 0x529602
lea esi, [edx - 2]
mov dword [ebx + 0x38], esi
movzx ecx, word [esi]
movzx ecx, cx
mov edx, esi
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x52962f
movzx eax, word [esi + 2]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
add ecx, 0x10000
mov ebx, dword [ebx + 4]
mov eax, ecx
shr eax, 7
and ecx, 0x7f
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx edi, byte [eax*4 + 0x5a7212]
cmp edx, ebx
jbe 0x529700
mov ebp, dword [esp + 0x14]
movzx eax, word [edx - 2]
add edx, 0xfffffffe
mov ecx, eax
test ebp, ebp
je 0x5296b1
and eax, 0xfc00
cmp eax, 0xdc00
jne 0x529686
movzx ecx, word [edx - 2]
sub edx, 2
movzx ecx, cx
mov eax, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x5296b1
movzx eax, word [edx + 2]
and ecx, 0x3ff
and eax, 0x3ff
shl ecx, 0xa
or ecx, eax
add ecx, 0x10000
mov eax, ecx
and ecx, 0x7f
shr eax, 7
movzx eax, word [eax*2 + 0x5ab420]
shl eax, 7
add eax, ecx
mov ecx, edi
movzx eax, word [eax*2 + 0x5af820]
lea eax, [eax + eax*2]
movzx esi, byte [eax*4 + 0x5a7212]
mov eax, 1
shl eax, cl
test dword [esi*4 + 0x5a4c70], eax
je 0x5296fc
mov eax, dword [esp + 0x10]
mov edi, esi
mov dword [eax + 0x38], edx
cmp edx, ebx
ja 0x529666
mov ebp, dword [esp + 0x6c]
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x38]
cmp eax, dword [ecx + 4]
jbe 0x5200e4
mov esi, dword [ecx]
mov byte [ecx + 0x30], 0xdc
jmp 0x529d02
inc dword [ebp + 0x80]
mov ebx, dword [esp + 0x10]
mov eax, dword [ebp + 0x80]
cmp eax, dword [ebp + 0x84]
mov edx, dword [ebx]
movzx eax, word [edx]
movzx ecx, byte [eax + 0x5a4b10]
movzx eax, word [edx + 2]
ja 0x529a2f
add ecx, eax
lea eax, [edx + ecx*2]
mov dword [ebx], eax
jmp 0x5200e8
cmp dword [esp + 0x14], 0
mov ebx, dword [esp + 0x10]
jne 0x528324
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0x1d
jmp 0x529d02
cmp dword [esp + 0x14], 0
mov ebx, dword [esp + 0x10]
jne 0x528402
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0x1f
jmp 0x529d02
cmp dword [esp + 0x14], 0
jne 0x528086
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0x17
jmp 0x529d02
test ecx, ecx
js 0x5297b1
cmp ecx, 0xd
ja case.0x527c3c.15
jmp dword [ecx*4 + 0x52ae00]
cmp dword [ebx + 0x28], 0x16
je 0x5299c0
test esi, esi
jne case.0x528eb5.13
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0x21
jmp 0x529d02
cmp ecx, 0x7e
je 0x5297e1
mov eax, 0x80
cmp cx, ax
je 0x5297e1
xor eax, eax
jmp 0x5297e6
mov eax, 1
mov ebx, dword [esp + 0x10]
mov dword [ebx + 0x20], eax
mov eax, dword [ebx]
mov dword [ebx + 4], eax
mov eax, dword [ebx]
mov ecx, dword [ebx + 4]
movzx eax, word [eax]
or eax, 0x30000
mov dword [esp + 0x20], eax
movzx eax, word [ecx]
movzx eax, byte [eax + 0x5a4b10]
mov byte [ebx + 0x30], 5
lea esi, [ecx + eax*2]
jmp 0x529d02
mov eax, dword [esp + 0x10]
cmp cl, 0x7b
jne 0x52982e
lea esi, [edx + 4]
mov byte [ebx + 0x30], 6
jmp 0x529d06
mov byte [ebx + 0x30], 7
jmp 0x529d06
mov byte [ebx + 0x30], 1
jmp 0x529d02
mov eax, dword [ebx + 8]
mov dword [ebx], eax
jmp 0x529acd
mov eax, dword [esp + 0x4c]
add eax, eax
add dword [ebx + 0x38], eax
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0x14
jmp 0x529d02
mov ebx, dword [esp + 0x10]
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0x14
jmp 0x529d02
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0x1e
jmp 0x529d02
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0x20
jmp 0x529d02
cmp esi, dword [ebp + 0x54]
jae case.0x527c3c.13
cmp word [esi], 0xa
jne case.0x527c3c.13
lea eax, [esi + 2]
mov dword [ebx + 0x38], eax
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0x21
jmp 0x529d02
movzx eax, word [ebp + 0x3c]
mov edx, eax
test ax, ax
je case.0x527c3c.13
cmp esi, dword [ebp + 0x54]
jb case.0x527c3c.13
cmp dword [ebp + 0x88], 0
jne case.0x527c3c.13
cmp dword [ebp + 0x8c], 2
jne case.0x527c3c.13
movzx eax, word [ebp + 0x90]
cmp ecx, eax
jne case.0x527c3c.13
mov dword [ebp + 0x1c], 1
cmp edx, 1
ja 0x521512
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0x21
jmp 0x529d02
mov ebx, dword [esp + 0x10]
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0x64
jmp 0x529d02
mov ebx, dword [esp + 0x10]
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0xc9
jmp 0x529d02
mov ecx, dword [esp + 0x10]
lea eax, [ebx + edi*2]
mov dword [ecx + 0x38], eax
mov eax, dword [esp + 0x10]
mov esi, dword [eax]
mov byte [eax + 0x30], 0xca
jmp 0x529d02
mov esi, dword [eax]
mov byte [eax + 0x30], 0xcd
jmp 0x529d02
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0xcf
jmp 0x529d02
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0xd0
jmp 0x529d02
movzx edx, word [ecx]
add ecx, 2
mov edi, dword [esp + 0x14]
mov esi, ecx
mov dword [ebx + 0x38], ecx
test edi, edi
je 0x52997f
mov eax, edx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x52997f
movzx eax, word [ecx]
lea esi, [ecx + 2]
and edx, 0x3ff
mov dword [ebx + 0x38], esi
shl edx, 0xa
and eax, 0x3ff
or edx, eax
add edx, 0x10000
push 0
push edi
push dword [ebp + 0x54]
push dword [ebp + 0x4c]
push esi
push edx
call fcn.005371d0
add esp, 0x18
mov dword [ebx + 0x38], eax
cmp eax, dword [ebp + 0x54]
jb 0x5299c0
movzx ecx, word [ebp + 0x3c]
mov edx, ecx
test cx, cx
je 0x5299c0
cmp eax, dword [ebp + 0x5c]
ja 0x5299b0
cmp dword [ebp + 0x24], 0
je 0x5299c0
mov dword [ebp + 0x1c], 1
cmp edx, 1
ja 0x521512
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0xda
jmp 0x529d02
cmp edx, dword [ebp + 0x54]
jae case.0x528eb5.13
cmp word [edx], 0xa
jne case.0x528eb5.13
lea eax, [edx + 2]
mov dword [ebx + 0x38], eax
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0xdb
jmp 0x529d02
movzx eax, word [ebp + 0x3c]
mov esi, eax
test ax, ax
je case.0x528eb5.13
cmp edx, dword [ebp + 0x54]
jb case.0x528eb5.13
cmp dword [ebp + 0x88], 0
jne case.0x528eb5.13
cmp dword [ebp + 0x8c], 2
jne case.0x528eb5.13
movzx eax, word [ebp + 0x90]
cmp ecx, eax
jne case.0x528eb5.13
mov dword [ebp + 0x1c], 1
cmp esi, 1
ja 0x521512
mov esi, dword [ebx]
mov byte [ebx + 0x30], 0xdb
jmp 0x529d02
mov byte [ebx + 0x30], 0x11
jmp 0x529cfd
mov eax, dword [esp + 0x10]
add esi, 2
mov dword [eax + 4], esi
mov byte [eax + 0x30], 9
jmp 0x529d02
mov ecx, dword [esp + 0x10]
add esi, 2
mov dword [ecx + 4], esi
movzx eax, word [esi + 2]
lea esi, [esi + eax*2]
mov dword [ecx + 4], esi
cmp word [esi], 0x78
je 0x529a55
add esi, 4
mov byte [ecx + 0x30], 0xa
jmp 0x529d02
mov ebx, dword [esp + 0x10]
add esi, 2
mov ecx, 0x89
mov dword [ebx + 0x28], 1
mov dword [ebx], esi
movzx eax, word [esi]
cmp ax, cx
je 0x529ab7
mov ecx, 0x8e
cmp ax, cx
jne 0x529aa5
jmp 0x529ab7
mov ebx, dword [esp + 0x10]
mov dword [ebx + 0x28], 0
mov eax, 0x20000
jmp 0x529ac0
mov ebx, dword [esp + 0x10]
mov dword [ebx + 0x28], 0
movzx eax, word [esi + 4]
or eax, 0x10000
mov dword [ebx + 0x20], eax
mov dword [ebx + 0x24], 0
mov dword [ebx + 8], esi
mov eax, dword [ebx + 0x38]
mov dword [ebx + 4], eax
mov ecx, dword [ebx]
mov eax, dword [ebx + 0x20]
mov dword [esp + 0x20], eax
movzx eax, word [ecx]
movzx eax, byte [eax + 0x5a4b10]
mov byte [ebx + 0x30], 8
lea esi, [ecx + eax*2]
jmp 0x529d02
movzx eax, word [esi + 4]
or eax, 0x10000
jmp 0x529b05
movzx eax, bl
or eax, 0x20000
mov ebx, dword [esp + 0x10]
mov dword [ebx + 0x20], eax
mov eax, dword [ebx + 0x20]
mov dword [esp + 0x20], eax
movzx eax, word [esi]
movzx eax, byte [eax + 0x5a4b10]
mov byte [ebx + 0x30], 2
lea esi, [esi + eax*2]
jmp 0x529d02
mov ecx, dword [ebp + 0x48]
movzx eax, word [esi + 2]
lea ebx, [ecx + eax*2]
cmp ebx, ecx
jne 0x529b3b
xor edi, edi
jmp 0x529b3f
movzx edi, word [ebx + 4]
mov ebp, dword [esp + 0x10]
cmp dword [ebp + 0x44], 0xffffffff
je 0x529b83
mov eax, dword [ebp + 0x4c]
cmp eax, 0xffffffff
je 0x529b83
mov esi, dword [esp + 0x68]
mov edx, edi
or edx, 0x40000
mov esi, dword [esi + 0x18]
add eax, esi
mov ecx, eax
sub ecx, dword [esp + 0x64]
cmp dword [eax + 0x1c], edx
je 0x529b77
mov eax, dword [ecx + 0x4c]
cmp eax, 0xffffffff
jne 0x529b60
jmp 0x529b83
mov eax, dword [ebp + 0x38]
cmp eax, dword [ecx + 0x38]
je 0x529e8e
mov dword [ebp + 4], ebx
or edi, 0x40000
mov ebx, dword [esp + 0x10]
mov dword [ebx + 0x20], edi
mov ecx, dword [ebx + 4]
mov eax, dword [ebx + 0x20]
mov dword [esp + 0x20], eax
movzx eax, word [ecx]
movzx eax, byte [eax + 0x5a4b10]
mov byte [ebx + 0x30], 0xb
lea esi, [ecx + eax*2]
jmp 0x529d02
movzx eax, bl
mov ebx, dword [esp + 0x10]
or eax, 0x20000
mov dword [ebx + 0x20], eax
mov eax, dword [ebx + 0x20]
mov dword [esp + 0x20], eax
movzx eax, word [esi]
movzx eax, byte [eax + 0x5a4b10]
mov byte [ebx + 0x30], 3
lea esi, [esi + eax*2]
jmp 0x529d02
movzx eax, bl
mov ebx, dword [esp + 0x10]
or eax, 0x20000
mov dword [ebx + 0x20], eax
mov eax, dword [ebx + 0x20]
mov dword [esp + 0x20], eax
movzx eax, word [esi]
movzx eax, byte [eax + 0x5a4b10]
mov byte [ebx + 0x30], 4
lea esi, [esi + eax*2]
jmp 0x529d02
mov ebx, dword [esp + 0x10]
lea eax, [esi + 4]
mov dword [ebp + 0x68], eax
mov dword [ebx + 0x40], eax
mov edx, dword [ebx]
movzx eax, word [edx]
movzx ecx, byte [eax + 0x5a4b10]
movzx eax, word [edx + 2]
mov byte [ebx + 0x30], 0xc
jmp 0x529cfd
movzx eax, word [esi]
movzx eax, byte [eax + 0x5a4b10]
lea esi, [esi + eax*2]
mov eax, dword [esp + 0x10]
mov byte [eax + 0x30], 0xd
jmp 0x529d02
mov ebx, dword [esp + 0x10]
lea eax, [esi + 4]
mov dword [ebp + 0x68], eax
mov dword [ebx + 0x40], eax
mov edx, dword [ebx]
movzx eax, word [edx]
movzx ecx, byte [eax + 0x5a4b10]
movzx eax, word [edx + 2]
mov byte [ebx + 0x30], 0x24
jmp 0x529cfd
movzx eax, word [esi]
movzx eax, byte [eax + 0x5a4b10]
lea esi, [esi + eax*2]
mov eax, dword [esp + 0x10]
mov byte [eax + 0x30], 0xe
jmp 0x529d02
mov ebx, dword [esp + 0x10]
lea eax, [esi + 4]
mov dword [ebp + 0x68], eax
mov dword [ebx + 0x40], eax
mov edx, dword [ebx]
movzx eax, word [edx]
movzx ecx, byte [eax + 0x5a4b10]
movzx eax, word [edx + 2]
mov byte [ebx + 0x30], 0xf
jmp 0x529cfd
movzx eax, word [esi]
movzx eax, byte [eax + 0x5a4b10]
lea esi, [esi + eax*2]
mov eax, dword [esp + 0x10]
mov byte [eax + 0x30], 0x10
jmp 0x529d02
movzx eax, word [esi]
movzx eax, byte [eax + 0x5a4b10]
lea esi, [esi + eax*2]
mov eax, dword [esp + 0x10]
mov byte [eax + 0x30], 0x12
jmp 0x529d02
mov ebx, dword [esp + 0x10]
lea eax, [esi + 4]
mov dword [ebp + 0x68], eax
mov dword [ebx + 0x40], eax
mov edx, dword [ebx]
movzx eax, word [edx]
movzx ecx, byte [eax + 0x5a4b10]
movzx eax, word [edx + 2]
mov byte [ebx + 0x30], 0x13
add ecx, eax
lea esi, [edx + ecx*2]
mov eax, dword [esp + 0x10]
mov ebp, dword [esp + 0x64]
lea edi, [eax + ebp]
mov dword [esp + 0x1c], edi
cmp edi, dword [esp + 0x3c]
jb 0x529dbd
mov eax, dword [esp + 0x68]
mov ebx, dword [eax + 0x1c]
mov eax, dword [esp + 0x6c]
lea edi, [ebx + ebx]
mov ecx, dword [eax + 0xc]
cmp edi, ecx
jbe 0x529d42
xor edx, edx
mov eax, ecx
div ebp
mov edi, ecx
sub edi, edx
cmp ebx, edi
jae 0x529e9b
mov eax, dword [esp + 0x68]
push dword [eax + 8]
mov eax, dword [eax]
push edi
call eax
mov ebx, eax
add esp, 8
test ebx, ebx
je 0x529ea8
mov eax, dword [esp + 0x68]
push dword [esp + 0x38]
push dword [eax + 0x18]
push ebx
call fcn.0056a220
mov eax, dword [esp + 0x74]
mov edx, dword [esp + 0x1c]
mov ecx, dword [eax + 0x18]
mov eax, ebx
sub eax, ecx
add edx, eax
mov eax, dword [esp + 0x74]
mov dword [esp + 0x1c], edx
add edx, ebp
mov dword [esp + 0x28], edx
push dword [eax + 8]
mov eax, dword [eax + 4]
push ecx
call eax
mov eax, dword [esp + 0x7c]
xor edx, edx
add esp, 0x14
mov dword [eax + 0x18], ebx
mov dword [eax + 0x1c], edi
mov eax, edi
div ebp
mov eax, edi
mov edi, dword [esp + 0x1c]
sub eax, edx
mov dword [esp + 0x38], eax
add eax, ebx
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x10]
lea ecx, [ebp - 0x38]
add eax, 0x38
push ecx
push eax
lea eax, [edi + 0x38]
push eax
call fcn.0056a220
mov eax, dword [esp + 0x1c]
add esp, 0xc
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x10], edi
mov eax, dword [eax + 0x18]
inc eax
mov dword [edi + 0x18], eax
mov eax, edi
mov edi, dword [esp + 0x68]
jmp 0x520065
mov eax, ebp
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 0x6c]
mov dword [eax + 0x58], edx
mov eax, dword [ebx + 0x50]
mov dword [ecx + 0x38], eax
mov eax, dword [ebx + 0x40]
mov dword [ecx + 0x64], eax
mov eax, dword [ebx + 0x38]
cmp eax, dword [ecx + 0x60]
jbe 0x529e13
mov dword [ecx + 0x60], eax
mov eax, dword [ebx + 0x3c]
sub eax, dword [ecx + 0x4c]
sar eax, 1
mov dword [edi + 0x34], eax
mov eax, dword [ebx + 0x38]
sub eax, dword [ecx + 0x4c]
sar eax, 1
mov dword [edi + 0x38], eax
movzx esi, word [edi + 0x2e]
movzx eax, word [esp + 0x60]
inc eax
cmp eax, esi
cmovbe esi, eax
add esi, esi
lea eax, [esi*4 - 8]
push eax
lea eax, [ebx + 0x54]
push eax
lea eax, [edi + 0x3c]
push eax
call fcn.0056a220
mov eax, dword [ebx + 0x50]
dec esi
add eax, 2
add esp, 0xc
cmp esi, eax
jb 0x529e77
lea edx, [esi + 0xd]
lea edx, [edi + edx*4]
mov dword [edx], 0xffffffff
lea edx, [edx - 4]
mov ecx, dword [ebx + 0x50]
dec esi
add ecx, 2
cmp esi, ecx
jae 0x529e63
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x44
ret
pop edi
mov eax, esi
pop esi
pop ebp
pop ebx
add esp, 0x44
ret
pop edi
pop esi
pop ebp
mov eax, 0xffffffcc
pop ebx
add esp, 0x44
ret
pop edi
pop esi
pop ebp
mov eax, 0xffffffc1
pop ebx
add esp, 0x44
ret
pop edi
pop esi
pop ebp
mov eax, 0xffffffd0
pop ebx
add esp, 0x44
ret
pop edi
pop esi
pop ebp
mov eax, 0xffffffd4
pop ebx
add esp, 0x44
ret
pop edi
pop esi
pop ebp
mov eax, 0xffffffd1
pop ebx
add esp, 0x44
ret