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

Disassembly:
push ebp
push edi
xor eax, eax
push esi
push ebx
sub esp, 0x4c
mov esi, dword [esp + 0x7c]
mov ebx, dword [esp + 0x6c]
mov edx, dword [esp + 0x70]
mov edi, dword [esp + 0x74]
mov ecx, dword [esi]
mov dword [esp + 0x3c], ebx
test ecx, ecx
jg 0x671fce23
test ebx, ebx
sete cl
test edx, edx
setne al
test cl, al
jne 0x671fce2b
cmp edx, 0xffffffff
jl 0x671fce2b
mov eax, dword [esp + 0x60]
test eax, eax
jne 0x671fcc66
mov ebp, dword [esp + 0x64]
test ebp, ebp
jne 0x671fce2b
mov eax, dword [esp + 0x64]
shr eax, 0x1f
test al, al
jne 0x671fce2b
cmp edi, 0x10ffff
jg 0x671fce2b
mov eax, edi
and eax, 0xfffff800
cmp eax, 0xd800
je 0x671fce2b
mov esi, dword [esp + 0x78]
test esi, esi
je 0x671fcca5
mov eax, dword [esp + 0x78]
mov dword [eax], 0
mov eax, dword [esp + 0x60]
mov esi, dword [esp + 0x64]
cmp edx, 0xffffffff
lea eax, [eax + esi*2]
mov dword [esp + 0x24], eax
je 0x671fce3f
test ebx, ebx
mov ebp, dword [esp + 0x60]
jne 0x671fcf73
xor ebx, ebx
mov dword [esp + 0x28], 0
mov dword [esp + 0x14], 0
mov eax, edi
mov dword [esp + 0x18], 0
sar eax, 0xa
sub ax, 0x2840
mov word [esp + 0x1e], ax
mov eax, edi
and ax, 0x3ff
or ax, 0xdc00
mov word [esp + 0x2c], ax
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x20], ebx
sub eax, ebp
sub ecx, ebx
sar eax, 1
cmp eax, ecx
mov esi, eax
jl 0x671fcd58
test ecx, ecx
jle 0x671fcd58
movzx edx, byte [ebx]
test dl, dl
mov byte [esp + 0x2f], dl
js 0x671fcd58
xor edx, edx
cmp dword [esp + 0x14], ebx
jbe 0x671fcd52
movzx edx, byte [esp + 0x2f]
add ebp, 2
add ebx, 1
cmp ebx, dword [esp + 0x14]
mov word [ebp - 2], dx
mov dword [esp + 0x3c], ebx
jne 0x671fcf40
mov edx, ebx
sub edx, dword [esp + 0x20]
sub eax, edx
sub ecx, edx
mov esi, eax
mov eax, ecx
mov edx, 0x55555556
sar ecx, 0x1f
imul edx
sub edx, ecx
cmp edx, esi
cmovle esi, edx
cmp esi, 2
jg 0x671fcd8e
jmp 0x671fcf83
add ebx, 1
mov word [ebp], cx
add ebp, 2
mov dword [esp + 0x3c], ebx
sub esi, 1
test esi, esi
jle 0x671fcd00
movzx ecx, byte [ebx]
cmp ecx, 0x7f
mov eax, ecx
jle 0x671fcd75
cmp ecx, 0xdf
jle 0x671fcee0
cmp ecx, 0xef
jg 0x671fce90
movzx eax, byte [ebx + 1]
add eax, 0xffffff80
cmp al, 0x3f
ja 0x671fce90
movzx edx, byte [ebx + 2]
add edx, 0xffffff80
cmp dl, 0x3f
ja 0x671fce90
movzx edx, dl
shl ecx, 0xc
add ebx, 3
or ecx, edx
movzx edx, al
mov dword [esp + 0x3c], ebx
shl edx, 6
add ebp, 2
or ecx, edx
mov word [ebp - 2], cx
jmp 0x671fcd83
xor eax, eax
mov edx, dword [esp + 0x68]
test edx, edx
je 0x671fcdff
mov edi, dword [esp + 0x68]
mov dword [edi], eax
mov dword [esp + 8], eax
mov eax, dword [esp + 0x64]
mov edi, dword [esp + 0x7c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0xc], edi
mov dword [esp], eax
call sym.icuuc54.dll_u_terminateUChars_54
mov eax, dword [esp + 0x60]
add esp, 0x4c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, dword [esp + 0x7c]
mov dword [eax], 1
add esp, 0x4c
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret
movzx eax, byte [ebx]
test eax, eax
mov edx, eax
je 0x671fcdef
mov esi, dword [esp + 0x24]
cmp dword [esp + 0x60], esi
jae 0x671fcf65
cmp eax, 0x7f
jg 0x671fcf65
mov ebp, dword [esp + 0x60]
lea eax, [ebx + 1]
add ebp, 2
mov word [ebp - 2], dx
mov dword [esp + 0x3c], eax
movzx edx, byte [eax]
mov ebx, eax
movzx ecx, dl
test ecx, ecx
jne 0x671fd241
mov eax, ebp
sub eax, dword [esp + 0x60]
sar eax, 1
jmp 0x671fcdf1
test edi, edi
js 0x671fcf51
cmp edi, 0xffff
jle 0x671fcf12
sub esi, 1
je 0x671fcd00
mov edx, dword [esp + 0x14]
lea eax, [esp + 0x3c]
add ebx, 1
mov dword [esp + 0x3c], ebx
add ebp, 4
call sym.utf8_nextCharSafeBodyPointer_unsigned_char_const__unsigned_char_const__int_
movzx eax, word [esp + 0x1e]
add dword [esp + 0x18], 1
mov ebx, dword [esp + 0x3c]
mov word [ebp - 4], ax
movzx eax, word [esp + 0x2c]
mov word [ebp - 2], ax
jmp 0x671fcd83
cmp ecx, 0xbf
jle 0x671fce90
movzx edx, byte [ebx + 1]
add edx, 0xffffff80
cmp dl, 0x3f
ja 0x671fce90
and eax, 0x1f
movzx edx, dl
add ebx, 2
shl eax, 6
mov dword [esp + 0x3c], ebx
add ebp, 2
or edx, eax
mov word [ebp - 2], dx
jmp 0x671fcd83
mov edx, dword [esp + 0x14]
lea eax, [esp + 0x3c]
add ebx, 1
mov dword [esp + 0x3c], ebx
add ebp, 2
call sym.utf8_nextCharSafeBodyPointer_unsigned_char_const__unsigned_char_const__int_
mov word [ebp - 2], di
add dword [esp + 0x18], 1
mov ebx, dword [esp + 0x3c]
jmp 0x671fcd83
movzx edx, byte [ebx]
cmp edx, 0x7f
jle 0x671fcd34
jmp 0x671fcd4c
mov eax, dword [esp + 0x7c]
mov dword [eax], 0xa
add esp, 0x4c
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret
mov ebp, dword [esp + 0x60]
mov dword [esp], ebx
call sym._strlen
mov edx, eax
lea eax, [ebx + edx]
mov dword [esp + 0x14], eax
mov dword [esp + 0x28], eax
jmp 0x671fccdb
mov esi, edi
and si, 0x3ff
or si, 0xdc00
nop
cmp dword [esp + 0x14], ebx
jbe 0x671fcfbe
cmp ebp, dword [esp + 0x24]
jae 0x671fcfbe
movzx ecx, byte [ebx]
cmp ecx, 0x7f
mov eax, ecx
jg 0x671fd0a0
mov word [ebp], cx
add ebx, 1
add ebp, 2
cmp dword [esp + 0x14], ebx
mov dword [esp + 0x3c], ebx
ja 0x671fcf96
xor esi, esi
test edi, edi
mov edx, 1
js 0x671fd07c
mov edx, ebx
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x28]
add esi, 1
lea esi, [esi]
cmp edi, edx
lea eax, [esi - 1]
jbe 0x671fd1fd
movzx ecx, byte [edx]
cmp ecx, 0x7f
jle 0x671fd120
cmp ecx, 0xdf
jle 0x671fd16c
cmp ecx, 0xef
jle 0x671fd1c6
add edx, 1
lea eax, [esp + 0x3c]
mov dword [esp + 0x3c], edx
mov edx, edi
call sym.utf8_nextCharSafeBodyPointer_unsigned_char_const__unsigned_char_const__int_
add dword [esp + 0x18], 1
mov edx, dword [esp + 0x3c]
add esi, 1
jmp 0x671fcfe0
cmp eax, 0xdf
jle 0x671fd25a
cmp eax, 0xef
jg 0x671fcf51
mov eax, dword [esp + 0x28]
sub eax, ebx
cmp eax, 2
jle 0x671fcf51
movzx eax, byte [ebx + 1]
add eax, 0xffffff80
cmp al, 0x3f
ja 0x671fcf51
movzx eax, byte [ebx + 2]
add eax, 0xffffff80
cmp al, 0x3f
ja 0x671fcf51
add ebx, 3
mov dword [esp + 0x3c], ebx
add edx, 1
cmp dword [esp + 0x14], ebx
lea eax, [edx - 1]
jbe 0x671fd1fd
movzx eax, byte [ebx]
cmp eax, 0x7f
jg 0x671fd02f
add ebx, 1
mov dword [esp + 0x3c], ebx
jmp 0x671fd079
cmp ecx, 0xdf
jle 0x671fd12f
cmp ecx, 0xef
jg 0x671fd0e0
mov eax, dword [esp + 0x28]
sub eax, ebx
cmp eax, 2
jle 0x671fd0e0
movzx eax, byte [ebx + 1]
add eax, 0xffffff80
cmp al, 0x3f
ja 0x671fd0e0
movzx edx, byte [ebx + 2]
add edx, 0xffffff80
cmp dl, 0x3f
jbe 0x671fd21e
lea esi, [esi]
test edi, edi
js 0x671fcf51
mov edx, dword [esp + 0x14]
lea eax, [esp + 0x3c]
add ebx, 1
mov dword [esp + 0x3c], ebx
call sym.utf8_nextCharSafeBodyPointer_unsigned_char_const__unsigned_char_const__int_
add dword [esp + 0x18], 1
cmp edi, 0xffff
jg 0x671fd1a0
mov word [ebp], di
mov ebx, dword [esp + 0x3c]
add ebp, 2
jmp 0x671fcf90
add edx, 1
add esi, 1
mov dword [esp + 0x3c], edx
jmp 0x671fcfe0
cmp ecx, 0xbf
jle 0x671fd0e0
mov edx, dword [esp + 0x28]
sub edx, ebx
cmp edx, 1
jle 0x671fd0e0
movzx edx, byte [ebx + 1]
add edx, 0xffffff80
cmp dl, 0x3f
ja 0x671fd0e0
and eax, 0x1f
movzx edx, dl
add ebx, 2
shl eax, 6
mov dword [esp + 0x3c], ebx
add ebp, 2
or edx, eax
mov word [ebp - 2], dx
jmp 0x671fcf90
cmp ecx, 0xbf
jle 0x671fd00f
mov eax, ebx
sub eax, edx
cmp eax, 1
jle 0x671fd00f
movzx eax, byte [edx + 1]
add eax, 0xffffff80
cmp al, 0x3f
ja 0x671fd00f
add edx, 2
mov dword [esp + 0x3c], edx
jmp 0x671fd02a
lea eax, [ebp + 2]
movzx edx, word [esp + 0x1e]
cmp dword [esp + 0x24], eax
mov word [ebp], dx
jbe 0x671fd28f
mov word [ebp + 2], si
mov ebx, dword [esp + 0x3c]
add ebp, 4
jmp 0x671fcf90
mov eax, ebx
sub eax, edx
cmp eax, 2
jle 0x671fd00f
movzx eax, byte [edx + 1]
add eax, 0xffffff80
cmp al, 0x3f
ja 0x671fd00f
movzx eax, byte [edx + 2]
add eax, 0xffffff80
cmp al, 0x3f
ja 0x671fd00f
add edx, 3
mov dword [esp + 0x3c], edx
jmp 0x671fd02a
mov ecx, dword [esp + 0x78]
test ecx, ecx
je 0x671fd20f
mov edi, dword [esp + 0x78]
mov esi, dword [esp + 0x18]
mov dword [edi], esi
mov edx, ebp
sub edx, dword [esp + 0x60]
sar edx, 1
add eax, edx
jmp 0x671fcdf1
shl ecx, 0xc
movzx edx, dl
movzx eax, al
or edx, ecx
shl eax, 6
add ebx, 3
or eax, edx
mov dword [esp + 0x3c], ebx
add ebp, 2
mov word [ebp - 2], ax
jmp 0x671fcf90
add eax, 1
cmp ecx, 0x7f
jg 0x671fcf69
cmp esi, ebp
ja 0x671fce66
jmp 0x671fcf69
cmp eax, 0xbf
jle 0x671fcf51
mov eax, dword [esp + 0x28]
sub eax, ebx
cmp eax, 1
jle 0x671fcf51
movzx eax, byte [ebx + 1]
add eax, 0xffffff80
cmp al, 0x3f
ja 0x671fcf51
add ebx, 2
mov dword [esp + 0x3c], ebx
jmp 0x671fd079
mov ebx, dword [esp + 0x3c]
mov ebp, eax
mov esi, 1
jmp 0x671fcfcd