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

Disassembly:
jmp 0x1009e634
sub esp, 0x160
mov eax, dword [0x101844f8]
xor eax, esp
mov dword [esp + 0x15c], eax
push ebp
push edi
mov edi, dword [esp + 0x16c]
xor ebp, ebp
mov dword [esp + 0x50], edi
mov dword [esp + 0x34], ebp
mov byte [esp + 0x1e], 1
mov eax, dword [edi]
test eax, eax
je 0x1009e6ae
cmp eax, dword [sym.CoreFoundation.dll___CFConstantStringClassReferencePtr]
je 0x1009e6ae
mov ecx, dword [0x10189b6c]
cmp ecx, 0x400
jae 0x1009e685
mov ecx, dword [ecx*4 + 0x10187378]
jmp 0x1009e687
xor ecx, ecx
cmp eax, ecx
je 0x1009e6ae
push dword [esp + 0x170]
push str._cfNormalize:
call dword [0x1018cc4c]
pop ecx
push eax
push edi
call dword [0x1018cc54]
add esp, 0xc
jmp 0x1009f36f
push ebx
mov bl, byte [edi + 4]
push esi
mov dl, bl
mov cl, bl
push 4
and dl, 5
and cl, 0x60
pop eax
cmp dl, al
je 0x1009e6d2
test cl, cl
jne 0x1009e6cd
mov esi, dword [edi + 8]
jmp 0x1009e6de
mov esi, dword [edi + 0xc]
jmp 0x1009e6de
lea eax, [edi + 8]
test cl, cl
je 0x1009e6db
mov eax, dword [eax]
movzx esi, byte [eax]
mov al, bl
mov dword [esp + 0x44], 0xc
shr al, 4
not al
test al, 1
mov eax, dword [esp + 0x178]
mov dword [esp + 0x34], eax
je 0x1009e762
cmp eax, 2
je 0x1009f36d
test cl, cl
jne 0x1009e71a
push 8
pop ecx
push 4
pop eax
cmp dl, al
cmovne ecx, dword [esp + 0x44]
add ecx, edi
jmp 0x1009e71d
mov ecx, dword [edi + 8]
movzx eax, bl
shr eax, 2
and eax, 1
add eax, ecx
test esi, esi
jle 0x1009f36d
cmp byte [eax + ebp], 0x7f
ja 0x1009e741
inc ebp
mov dword [esp + 0x3c], ebp
cmp ebp, esi
jl 0x1009e730
jmp 0x1009e762
push 1
xor ebx, ebx
lea eax, [esp + 0x60]
push ebx
push 1
push eax
push edi
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], ebx
call fcn.1008fb3a
add esp, 0x14
mov byte [esp + 0x26], bl
cmp ebp, esi
jge 0x1009f36d
mov cl, byte [edi + 4]
mov dl, cl
and cl, 5
and dl, 0x60
jne 0x1009e788
push 8
pop eax
push 4
pop ebx
cmp cl, bl
cmovne eax, dword [esp + 0x44]
add eax, edi
jmp 0x1009e78b
mov eax, dword [edi + 8]
lea ebx, [eax + esi*2]
mov dword [esp + 0x30], ebx
test dl, dl
jne 0x1009e7a7
push 8
pop eax
push 4
pop edx
cmp cl, dl
cmovne eax, dword [esp + 0x44]
add eax, edi
jmp 0x1009e7aa
mov eax, dword [edi + 8]
lea edi, [eax + ebp*2]
mov dword [esp + 0x38], 0x40
lea eax, [esp + 0x6c]
push 0
push 9
mov dword [esp + 0x18], eax
call sym.CoreFoundation.dll_CFUniCharGetBitmapPtrForPlane
push 0
push 8
mov dword [esp + 0x58], eax
call sym.CoreFoundation.dll_CFUniCharGetBitmapPtrForPlane
push 0
push 0
mov dword [esp + 0x64], eax
call sym.CoreFoundation.dll_CFUniCharGetUnicodePropertyDataForPlane
add esp, 0x18
mov dword [esp + 0x40], eax
cmp edi, ebx
jae 0x1009f36d
mov eax, dword [esp + 0x34]
mov esi, 0x3ff
mov ecx, eax
mov dword [esp + 0x54], esi
push 2
and ecx, 1
mov dword [esp + 0x60], 0x1c
pop ebp
and eax, ebp
mov dword [esp + 0x50], ecx
mov dword [esp + 0x34], eax
movzx ecx, word [edi]
lea eax, [ecx + 0x2800]
cmp ax, si
ja 0x1009e84f
lea eax, [edi + 2]
cmp eax, ebx
jae 0x1009e84f
movzx edx, word [eax]
lea eax, [edx + 0x2400]
cmp ax, si
ja 0x1009e84f
mov ebx, edx
shl ecx, 0xa
add ebx, 0xfca02400
mov dword [esp + 0x28], ebp
push 4
add ebx, ecx
pop eax
jmp 0x1009e85b
mov ebx, ecx
mov dword [esp + 0x28], 1
mov eax, ebp
and dword [esp + 0x14], 0
add edi, eax
mov esi, ebx
mov dword [esp + 0x18], ebx
shr esi, 0x10
mov ebp, edi
mov dword [esp + 0x1c], edi
cmp ebx, 0x10000
jae 0x1009e87f
mov edi, dword [esp + 0x48]
jmp 0x1009e88b
push esi
push 9
call sym.CoreFoundation.dll_CFUniCharGetBitmapPtrForPlane
pop ecx
pop ecx
mov edi, eax
test edi, edi
je 0x1009e925
movzx eax, bx
xor edx, edx
mov ecx, eax
mov dword [esp + 0x20], eax
and ecx, 7
shr eax, 3
inc edx
shl edx, cl
test byte [eax + edi], dl
je 0x1009e925
cmp ebx, 0x10000
jae 0x1009e8ba
mov edx, dword [esp + 0x40]
jmp 0x1009e8c6
push esi
push 0
call sym.CoreFoundation.dll_CFUniCharGetUnicodePropertyDataForPlane
pop ecx
pop ecx
mov edx, eax
test edx, edx
je 0x1009e8ec
mov eax, dword [esp + 0x20]
shr eax, 8
mov al, byte [eax + edx]
test al, al
je 0x1009e8ec
movzx ecx, al
mov eax, dword [esp + 0x20]
shl ecx, 8
movzx eax, al
add ecx, edx
mov al, byte [eax + ecx]
jmp 0x1009e8ee
xor al, al
test al, al
mov eax, dword [esp + 0x34]
jne 0x1009e929
test eax, eax
je 0x1009e90a
cmp ebx, 0xac00
jb 0x1009e90a
cmp ebx, 0xd7a4
jbe 0x1009e929
push 0x40
push dword [esp + 0x14]
push ebx
call sym.CoreFoundation.dll_CFUniCharDecomposeCharacter
mov esi, eax
add esp, 0xc
mov eax, dword [esp + 0x34]
mov dword [esp + 0x14], esi
jmp 0x1009e92d
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0x14]
cmp byte [esp + 0x26], 0
jne 0x1009e93c
test eax, eax
je 0x1009eca5
mov edx, dword [esp + 0x30]
cmp ebp, edx
jb 0x1009e950
mov dword [esp + 0x1c], ebp
test esi, esi
jne 0x1009eca5
test esi, esi
jle 0x1009e992
movzx ecx, word [ebp]
mov ebx, 0x3ff
lea eax, [ecx + 0x2800]
cmp ax, bx
ja 0x1009e98c
lea eax, [ebp + 2]
cmp eax, edx
jae 0x1009e98c
movzx edx, word [eax]
lea eax, [edx + 0x2400]
cmp ax, bx
ja 0x1009e98c
mov eax, edx
shl ecx, 0xa
lea ebx, [eax - 0x35fdc00]
add ebx, ecx
jmp 0x1009e98e
mov ebx, ecx
mov dword [esp + 0x18], ebx
cmp ebx, 0x10000
jae 0x1009e9a0
mov edx, dword [esp + 0x40]
jmp 0x1009e9b1
mov eax, ebx
shr eax, 0x10
push eax
push 0
call sym.CoreFoundation.dll_CFUniCharGetUnicodePropertyDataForPlane
pop ecx
pop ecx
mov edx, eax
test edx, edx
je 0x1009e9da
movzx eax, bx
mov dword [esp + 0x20], eax
shr eax, 8
mov al, byte [eax + edx]
test al, al
je 0x1009e9da
movzx ecx, al
mov eax, dword [esp + 0x20]
shl ecx, 8
movzx eax, al
add ecx, edx
mov al, byte [eax + ecx]
jmp 0x1009e9dc
xor al, al
mov dword [esp + 0x1c], ebp
test al, al
je 0x1009ec88
mov edx, ebx
mov edi, ebp
and edx, 0xffff0000
test esi, esi
jne 0x1009ea66
mov ebp, dword [esp + 0x3c]
test edx, edx
push 2
pop eax
push 4
pop ecx
cmovne eax, ecx
sub edi, eax
test ebp, ebp
jle 0x1009ea72
movzx esi, word [edi - 2]
mov ecx, 0x3ff
lea eax, [esi + 0x2400]
cmp ax, cx
ja 0x1009ea49
cmp ebp, 1
jle 0x1009ea49
movzx ecx, word [edi - 4]
lea eax, [ecx + 0x2800]
cmp ax, word [esp + 0x54]
ja 0x1009ea49
shl ecx, 0xa
add ecx, 0xfca02400
push 2
lea eax, [ecx + esi]
pop ecx
push 0xfffffffffffffffe
pop esi
jmp 0x1009ea51
xor ecx, ecx
mov eax, esi
inc ecx
or esi, 0xffffffff
add dword [esp + 0x28], ecx
add ebp, esi
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x3c], ebp
xor ebp, ebp
inc ebp
mov dword [ecx], eax
jmp 0x1009ea76
xor eax, eax
test edx, edx
setne al
inc eax
add dword [esp + 0x28], eax
mov ebp, dword [esp + 0x14]
push 2
pop eax
test edx, edx
push 4
pop edx
cmovne eax, edx
add edi, eax
mov dword [esp + 0x1c], edi
cmp ebx, 0x10000
jae 0x1009ea95
mov esi, dword [esp + 0x48]
jmp 0x1009eaa6
mov eax, ebx
shr eax, 0x10
push eax
push 9
call sym.CoreFoundation.dll_CFUniCharGetBitmapPtrForPlane
pop ecx
pop ecx
mov esi, eax
test esi, esi
je 0x1009eac3
movzx edx, bx
xor eax, eax
mov ecx, edx
inc eax
and ecx, 7
shr edx, 3
shl eax, cl
test byte [edx + esi], al
je 0x1009eac3
mov al, 1
jmp 0x1009eac5
xor al, al
mov esi, dword [esp + 0x10]
lea ecx, [esi + ebp*4]
test al, al
je 0x1009eae4
push 0x40
pop eax
sub eax, ebp
push eax
push ecx
push ebx
call sym.CoreFoundation.dll_CFUniCharDecomposeCharacter
add esp, 0xc
add ebp, eax
jmp 0x1009eae7
mov dword [ecx], ebx
inc ebp
mov edx, dword [esp + 0x30]
mov dword [esp + 0x14], ebp
cmp edi, edx
jae 0x1009ec90
mov edi, dword [esp + 0x38]
mov esi, dword [esp + 0x1c]
shl edi, 2
movzx ecx, word [esi]
mov ebx, 0x3ff
lea eax, [ecx + 0x2800]
cmp ax, bx
ja 0x1009eb39
lea eax, [esi + 2]
cmp eax, edx
jae 0x1009eb39
movzx edx, word [eax]
lea eax, [edx + 0x2400]
cmp ax, bx
ja 0x1009eb39
mov eax, edx
shl ecx, 0xa
lea ebx, [eax - 0x35fdc00]
add ebx, ecx
jmp 0x1009eb3b
mov ebx, ecx
mov dword [esp + 0x18], ebx
cmp ebx, 0x10000
jae 0x1009eb4d
mov edx, dword [esp + 0x40]
jmp 0x1009eb5e
mov eax, ebx
shr eax, 0x10
push eax
push 0
call sym.CoreFoundation.dll_CFUniCharGetUnicodePropertyDataForPlane
pop ecx
pop ecx
mov edx, eax
test edx, edx
je 0x1009eb87
movzx eax, bx
mov dword [esp + 0x20], eax
shr eax, 8
mov al, byte [eax + edx]
test al, al
je 0x1009eb87
movzx ecx, al
mov eax, dword [esp + 0x20]
shl ecx, 8
movzx eax, al
add ecx, edx
mov al, byte [eax + ecx]
jmp 0x1009eb89
xor al, al
test al, al
je 0x1009ec82
push 0
pop eax
mov ecx, ebx
and ecx, 0xffff0000
push 4
setne al
inc eax
add dword [esp + 0x2c], eax
test ecx, ecx
pop eax
push 2
pop ecx
cmove eax, ecx
add esi, eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x1c], esi
cmp ebp, eax
jne 0x1009ec12
add eax, 0x40
lea ecx, [esp + 0x6c]
mov dword [esp + 0x38], eax
add edi, 0x100
mov eax, dword [esp + 0x10]
push 0
push edi
cmp eax, ecx
jne 0x1009ebff
push dword [sym.CoreFoundation.dll_kCFAllocatorSystemDefault]
call sym.CoreFoundation.dll_CFAllocatorAllocate
mov esi, eax
lea eax, [esp + 0x78]
push 0x100
push eax
push esi
mov dword [esp + 0x28], esi
call fcn.101331a9
add esp, 0x18
jmp 0x1009ec12
push eax
push dword [sym.CoreFoundation.dll_kCFAllocatorSystemDefault]
call sym.CoreFoundation.dll_CFAllocatorReallocate
add esp, 0x10
mov dword [esp + 0x10], eax
cmp ebx, 0x10000
jae 0x1009ec20
mov esi, dword [esp + 0x48]
jmp 0x1009ec31
mov eax, ebx
shr eax, 0x10
push eax
push 9
call sym.CoreFoundation.dll_CFUniCharGetBitmapPtrForPlane
pop ecx
pop ecx
mov esi, eax
test esi, esi
je 0x1009ec4e
movzx edx, bx
xor eax, eax
mov ecx, edx
inc eax
and ecx, 7
shr edx, 3
shl eax, cl
test byte [edx + esi], al
je 0x1009ec4e
mov al, 1
jmp 0x1009ec50
xor al, al
mov ecx, dword [esp + 0x10]
lea ecx, [ecx + ebp*4]
test al, al
je 0x1009ec6f
push 0x40
pop eax
sub eax, ebp
push eax
push ecx
push ebx
call sym.CoreFoundation.dll_CFUniCharDecomposeCharacter
add esp, 0xc
add ebp, eax
jmp 0x1009ec72
mov dword [ecx], ebx
inc ebp
mov esi, dword [esp + 0x1c]
mov edx, dword [esp + 0x30]
cmp esi, edx
jb 0x1009eb02
mov dword [esp + 0x14], ebp
jmp 0x1009ec8c
mov ebp, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
cmp byte [esp + 0x26], 0
je 0x1009eca5
cmp ebp, 1
jle 0x1009eca5
push ebp
push esi
call sym.CoreFoundation.dll_CFUniCharPrioritySort
pop ecx
pop ecx
cmp dword [esp + 0x50], 0
je 0x1009ed55
mov ebp, dword [esp + 0x14]
xor edi, edi
test ebp, ebp
jne 0x1009ecd5
push 0x64
push ebx
call sym.CoreFoundation.dll_CFUniCharIsMemberOf
pop ecx
pop ecx
test al, al
je 0x1009ed4d
mov eax, dword [esp + 0x10]
inc ebp
test ebp, ebp
mov dword [eax], ebx
jle 0x1009ed4d
mov eax, dword [esp + 0x38]
mov esi, eax
mov ebx, dword [esp + 0x10]
shl esi, 2
push eax
push ebp
push ebx
call sym.CoreFoundation.dll_CFUniCharCompatibilityDecompose
mov edi, eax
add esp, 0xc
test edi, edi
jne 0x1009ed3d
add dword [esp + 0x38], 0x40
lea eax, [esp + 0x6c]
add esi, 0x100
push edi
push esi
cmp ebx, eax
jne 0x1009ed2c
push dword [sym.CoreFoundation.dll_kCFAllocatorSystemDefault]
call sym.CoreFoundation.dll_CFAllocatorAllocate
mov ebx, eax
lea eax, [esp + 0x78]
push 0x100
push eax
push ebx
call fcn.101331a9
add esp, 0x18
jmp 0x1009ed3d
push ebx
push dword [sym.CoreFoundation.dll_kCFAllocatorSystemDefault]
call sym.CoreFoundation.dll_CFAllocatorReallocate
add esp, 0x10
mov ebx, eax
mov eax, dword [esp + 0x38]
cmp edi, ebp
jl 0x1009ece4
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x18]
mov edx, edi
mov dword [esp + 0x14], edx
jmp 0x1009ed59
mov edx, dword [esp + 0x14]
cmp dword [esp + 0x34], 0
je 0x1009efab
cmp edx, 1
jle 0x1009f04d
mov edx, dword [esp + 0x10]
xor ebx, ebx
mov edi, edx
mov byte [esp + 0x2e], 0
inc ebx
mov dword [esp + 0x20], edi
mov byte [esp + 0x2f], 0
mov ecx, dword [edx]
mov dword [esp + 0x18], ecx
jmp 0x1009ed90
mov edx, dword [esp + 0x10]
lea ebp, [edx + ebx*4]
mov esi, dword [ebp]
cmp esi, 0x10000
jae 0x1009eda4
mov edx, dword [esp + 0x40]
jmp 0x1009edb5
mov eax, esi
shr eax, 0x10
push eax
push 0
call sym.CoreFoundation.dll_CFUniCharGetUnicodePropertyDataForPlane
pop ecx
pop ecx
mov edx, eax
test edx, edx
je 0x1009eddc
movzx eax, si
mov ecx, eax
shr ecx, 8
mov cl, byte [ecx + edx]
test cl, cl
je 0x1009eddc
movzx ecx, cl
shl ecx, 8
movzx eax, al
add ecx, edx
mov al, byte [eax + ecx]
mov byte [esp + 0x27], al
jmp 0x1009ede1
mov byte [esp + 0x27], 0
cmp dword [esp + 0x50], 0
je 0x1009ef14
mov ecx, dword [esp + 0x18]
lea eax, [ecx - 0x1100]
cmp eax, 0xfe
ja 0x1009eec8
cmp cl, 0x13
ja 0x1009eec8
movzx eax, si
push 0x15
add eax, 0xffffee9f
pop edx
movzx edi, ax
cmp ax, dx
ja 0x1009eec8
mov esi, dword [esp + 0x10]
xor edx, edx
mov dword [ebp], 0xfffd
inc ebx
mov ebp, dword [esp + 0x14]
cmp ebx, ebp
jge 0x1009ee59
mov ax, word [esi + ebx*4]
mov edx, 0x11a7
sub ax, dx
movzx edx, ax
cmp ax, word [esp + 0x5c]
ja 0x1009ee57
mov dword [esi + ebx*4], 0xfffd
inc ebx
jmp 0x1009ee59
xor edx, edx
movsx eax, cl
imul ecx, eax, 0x15
movsx eax, di
lea edi, [ebp - 1]
add ecx, eax
movsx eax, dx
imul ecx, ecx, 0x1c
add ecx, 0xac00
add eax, ecx
mov ecx, dword [esp + 0x20]
mov dword [ecx], eax
test edi, edi
jle 0x1009eeb2
push 4
lea esi, [esi + edi*4]
pop eax
cmp dword [esi], 0xfffd
jne 0x1009eea7
dec ebp
dec ebx
mov eax, ebp
sub eax, edi
shl eax, 2
push eax
lea eax, [esi + 4]
push eax
push esi
call fcn.101331a9
add esp, 0xc
push 4
pop eax
dec edi
sub esi, eax
test edi, edi
jg 0x1009ee85
mov dword [esp + 0x14], ebp
mov eax, dword [esp + 0x10]
lea edi, [eax + ebx*4]
mov ecx, dword [edi]
mov dword [esp + 0x20], edi
mov dword [esp + 0x18], ecx
jmp 0x1009ef48
cmp esi, 0x10000
jae 0x1009eed6
mov edi, dword [esp + 0x4c]
jmp 0x1009eee7
mov eax, esi
shr eax, 0x10
push eax
push 8
call sym.CoreFoundation.dll_CFUniCharGetBitmapPtrForPlane
pop ecx
pop ecx
mov edi, eax
test edi, edi
je 0x1009ef00
movzx edx, si
xor eax, eax
mov ecx, edx
inc eax
and ecx, 7
shr edx, 3
shl eax, cl
test byte [edx + edi], al
jne 0x1009ef10
mov ecx, dword [esp + 0x20]
mov edi, ebp
mov eax, dword [esp + 0x18]
mov dword [ecx], eax
mov ecx, esi
jmp 0x1009eebb
mov edi, dword [esp + 0x20]
mov al, byte [esp + 0x2e]
test al, al
je 0x1009ef22
cmp byte [esp + 0x27], al
jbe 0x1009ef44
mov eax, dword [esp + 0x18]
push esi
push eax
call sym.CoreFoundation.dll_CFUniCharPrecomposeCharacter
pop ecx
pop ecx
mov ecx, 0xfffd
cmp eax, ecx
jne 0x1009f03e
mov al, byte [esp + 0x27]
mov byte [esp + 0x2e], al
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
inc ebx
cmp ebx, eax
jl 0x1009ed8c
cmp byte [esp + 0x2f], 0
mov ebp, eax
mov dword [edi], ecx
mov ecx, dword [esp + 0x10]
je 0x1009f298
lea esi, [eax - 1]
test esi, esi
jle 0x1009f298
push 4
lea edi, [ecx + esi*4]
mov dword [esp + 0x18], eax
pop ecx
cmp dword [edi], 0xfffd
jne 0x1009efa4
dec eax
mov dword [esp + 0x14], eax
sub eax, esi
shl eax, 2
push eax
lea eax, [edi + 4]
push eax
push edi
call fcn.101331a9
mov eax, dword [esp + 0x20]
add esp, 0xc
push 4
pop ecx
dec esi
sub edi, ecx
test esi, esi
jg 0x1009ef7d
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x10]
test ebp, ebp
jle 0x1009f337
lea edi, [ecx + ebp*4]
xor ebx, ebx
mov dword [esp + 0x20], edi
mov edx, ecx
mov dword [esp + 0x18], ebx
cmp ecx, edi
jae 0x1009efee
mov eax, dword [edx]
push 4
pop ecx
add edx, ecx
xor ecx, ecx
cmp eax, 0xffff
seta cl
inc ecx
add ebx, ecx
cmp edx, edi
jb 0x1009efd2
mov dword [esp + 0x18], ebx
mov edx, dword [esp + 0x28]
mov ebp, dword [esp + 0x3c]
mov esi, dword [esp + 0x58]
cmp ebx, edx
je 0x1009f01d
push 1
push ebx
push 1
lea eax, [esp + 0x70]
mov dword [esp + 0x70], ebp
push eax
push esi
mov dword [esp + 0x7c], edx
call fcn.1008fb3a
add esp, 0x14
mov dword [esp + 0x28], ebx
mov al, byte [esi + 4]
mov cl, al
and al, 5
and cl, 0x60
jne 0x1009f2a1
push 8
cmp al, 4
pop edx
cmovne edx, dword [esp + 0x44]
add edx, esi
jmp 0x1009f2a4
mov dword [ebp], ecx
mov ecx, eax
mov byte [esp + 0x2f], 1
jmp 0x1009eebf
cmp ebx, 0x1100
jb 0x1009f0f7
cmp ebx, 0x11ff
jae 0x1009f0f7
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x30]
cmp edi, ecx
jae 0x1009f28f
cmp bl, 0x13
ja 0x1009f28f
mov ax, word [edi]
mov edx, 0x1161
sub ax, dx
push 0x15
pop edx
movzx esi, ax
cmp ax, dx
ja 0x1009f28f
mov ebp, dword [esp + 0x28]
xor edx, edx
push 2
pop eax
add edi, eax
inc ebp
mov dword [esp + 0x28], ebp
cmp edi, ecx
jae 0x1009f0d0
mov ax, word [edi]
mov ecx, 0x11a7
sub ax, cx
push 0x1c
pop ecx
movzx edx, ax
cmp ax, cx
ja 0x1009f0ce
push 2
pop eax
add edi, eax
inc ebp
mov dword [esp + 0x28], ebp
jmp 0x1009f0d0
xor edx, edx
movsx eax, bl
xor ebp, ebp
imul ecx, eax, 0x15
movsx eax, si
add ecx, eax
movsx eax, dx
imul ecx, ecx, 0x1c
add ecx, 0xac00
add eax, ecx
mov ecx, dword [esp + 0x10]
inc ebp
mov dword [ecx], eax
jmp 0x1009efb7
mov edi, dword [esp + 0x1c]
mov esi, dword [esp + 0x30]
mov ebp, dword [esp + 0x14]
cmp edi, esi
jae 0x1009efb3
movzx eax, word [edi]
mov edx, 0x3ff
mov ecx, eax
add eax, 0x2800
mov dword [esp + 0x18], ecx
cmp ax, dx
ja 0x1009f1d3
lea eax, [edi + 2]
cmp eax, esi
jae 0x1009f1d3
movzx edx, word [eax]
lea eax, [edx + 0x2400]
cmp ax, word [esp + 0x54]
ja 0x1009f1d3
shl ecx, 0xa
add edx, 0xfca02400
add ecx, edx
mov esi, ecx
mov dword [esp + 0x18], ecx
shr esi, 0x10
push esi
push 8
call sym.CoreFoundation.dll_CFUniCharGetBitmapPtrForPlane
mov edi, eax
pop ecx
pop ecx
test edi, edi
je 0x1009efaf
mov edx, dword [esp + 0x18]
movzx eax, dx
xor edx, edx
mov ecx, eax
mov dword [esp + 0x20], eax
and ecx, 7
shr eax, 3
inc edx
shl edx, cl
test byte [eax + edi], dl
je 0x1009efaf
push esi
push 0
call sym.CoreFoundation.dll_CFUniCharGetUnicodePropertyDataForPlane
mov edx, eax
pop ecx
pop ecx
test edx, edx
je 0x1009f1bf
mov eax, dword [esp + 0x20]
mov ecx, eax
shr ecx, 8
mov cl, byte [ecx + edx]
test cl, cl
je 0x1009f1bf
movzx ecx, cl
shl ecx, 8
movzx eax, al
add ecx, edx
mov al, byte [eax + ecx]
jmp 0x1009f1c1
xor al, al
mov edi, dword [esp + 0x1c]
test al, al
jne 0x1009efb3
mov esi, dword [esp + 0x30]
jmp 0x1009f234
cmp dword [esp + 0x4c], 0
je 0x1009efb3
mov esi, dword [esp + 0x4c]
xor edx, edx
and ecx, 7
inc edx
shl edx, cl
mov ecx, dword [esp + 0x18]
mov eax, ecx
shr eax, 3
test byte [eax + esi], dl
mov esi, dword [esp + 0x30]
je 0x1009efb3
mov edx, dword [esp + 0x40]
test edx, edx
je 0x1009f22a
mov eax, ecx
shr eax, 8
mov al, byte [eax + edx]
test al, al
je 0x1009f22a
mov edx, dword [esp + 0x18]
movzx ecx, al
shl ecx, 8
add ecx, dword [esp + 0x40]
movzx eax, dl
mov al, byte [eax + ecx]
jmp 0x1009f22c
xor al, al
test al, al
jne 0x1009efb3
push dword [esp + 0x18]
push ebx
call sym.CoreFoundation.dll_CFUniCharPrecomposeCharacter
mov ebx, eax
pop ecx
pop ecx
cmp ebx, 0xfffd
je 0x1009efb3
cmp dword [esp + 0x18], 0x10000
push 4
sbb ecx, ecx
xor ebp, ebp
and ecx, 0xfffffffe
inc ebp
pop edx
add ecx, edx
add edi, ecx
mov ecx, dword [esp + 0x10]
cmp dword [esp + 0x18], 0x10000
push 2
sbb eax, eax
mov dword [esp + 0x20], edi
pop edx
add eax, edx
mov dword [ecx], ebx
add dword [esp + 0x28], eax
cmp edi, esi
jb 0x1009f10b
jmp 0x1009efbf
mov ebp, dword [esp + 0x14]
jmp 0x1009efb3
mov edi, dword [esp + 0x1c]
jmp 0x1009efb7
mov edx, dword [esi + 8]
cmp al, 4
je 0x1009f2b6
test cl, cl
jne 0x1009f2b1
mov eax, dword [esi + 8]
jmp 0x1009f2c2
mov eax, dword [esi + 0xc]
jmp 0x1009f2c2
lea eax, [esi + 8]
test cl, cl
je 0x1009f2bf
mov eax, dword [eax]
movzx eax, byte [eax]
mov esi, dword [esp + 0x10]
lea ecx, [edx + eax*2]
mov dword [esp + 0x30], ecx
lea ebp, [edx + ebp*2]
mov dword [esp + 0x1c], ebp
mov edx, ebp
cmp esi, edi
jae 0x1009f32e
mov eax, dword [esp + 0x20]
mov ebx, 0x3ff
push 2
pop ebp
mov ecx, dword [esi]
add esi, 4
cmp ecx, 0xffff
jbe 0x1009f31c
sub ecx, 0x10000
mov eax, ecx
and ecx, ebx
shr eax, 0xa
sub ecx, 0x2400
sub eax, 0x2800
mov word [edx], ax
add edx, 2
mov eax, dword [esp + 0x20]
mov word [edx], cx
add edx, ebp
jmp 0x1009f322
mov word [edx], cx
add edx, 2
cmp esi, eax
jb 0x1009f2e6
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x1c]
lea edi, [ebx*2]
add edi, ebp
mov eax, dword [esp + 0x28]
mov esi, 0x3ff
add dword [esp + 0x3c], eax
mov ebx, dword [esp + 0x30]
push 2
pop ebp
cmp edi, ebx
jb 0x1009e816
mov eax, dword [esp + 0x10]
lea ecx, [esp + 0x6c]
cmp eax, ecx
je 0x1009f36d
push eax
push dword [sym.CoreFoundation.dll_kCFAllocatorSystemDefault]
call sym.CoreFoundation.dll_CFAllocatorDeallocate
pop ecx
pop ecx
pop esi
pop ebx
mov ecx, dword [esp + 0x164]
pop edi
pop ebp
xor ecx, esp
call fcn.1000234c
add esp, 0x160
ret