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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xa0
mov esi, esp
mov dword [esi + 0x88], ebp
mov dword [esi + 0x8c], esp
mov dword [esi + 0x98], 0xffffffff
mov dword [esi + 0x94], 0x446fe0
mov edx, dword [ebp + 8]
lea eax, [esi + 0x90]
mov ecx, dword fs:[0]
mov dword [esi + 0x90], ecx
mov dword fs:[0], eax
mov dword [esi + 0x98], 0
lea eax, [esi + 0x48]
mov ecx, dword [edx]
mov edx, dword [edx + 8]
push 9
push 0x5836d4
mov dword [esi + 4], edx
push edx
mov dword [esi + 0x18], ecx
push ecx
push eax
call fcn.00506f70
add esp, 0x14
cmp dword [esi + 0x48], 1
jne 0x4468d0
mov ecx, dword [esi + 0x7c]
mov eax, dword [esi + 0x80]
mov edx, dword [esi + 0x84]
mov ebx, dword [esi + 0x78]
cmp dword [esi + 0x6c], 0xffffffff
mov dword [esi + 0x1c], eax
mov dword [esi + 0xc], edx
mov dword [esi + 8], ecx
je 0x4469e7
mov edi, dword [esi + 0x68]
mov eax, edi
sub eax, edx
cmp eax, ecx
jae 0x446d53
mov ecx, dword [esi + 0x50]
mov edx, dword [esi + 0x5c]
mov dword [esi + 0x24], ebx
mov dword [esi + 0x3c], ecx
mov ecx, dword [esi + 0x54]
mov dword [esi + 0x20], edx
mov dword [esi + 0x28], ecx
mov ecx, dword [esi + 0xc]
cmp edx, ecx
cmova ecx, edx
mov edx, dword [esi + 0x70]
mov dword [esi + 0x38], ecx
mov ecx, dword [esi + 0x60]
mov dword [esi + 0x10], edx
mov dword [esi + 0x34], ecx
nop word cs:[eax + eax]
nop dword [eax + eax]
mov cl, byte [ebx + eax]
mov dword [esi + 0x2c], edi
xor edx, edx
mov edi, 1
shld edx, edi, cl
mov edi, 1
shl edi, cl
test cl, 0x20
mov ecx, 0
cmovne edx, edi
cmovne edi, ecx
and edx, dword [esi + 0x28]
and edi, dword [esi + 0x3c]
or edi, edx
je 0x44685b
mov edx, dword [esi + 0x20]
mov edi, dword [esi + 0x10]
mov ecx, ebx
mov dword [esi + 0x14], eax
add ecx, eax
cmp edx, edi
mov ebx, edx
cmova ebx, edi
dec ebx
mov edi, ebx
nop word cs:[eax + eax]
cmp edi, 0xffffffff
je 0x446880
cmp ebx, dword [esi + 0xc]
jae 0x446dea
mov eax, dword [esi + 0x14]
lea edx, [eax + edi]
cmp edx, dword [esi + 8]
jae 0x446e0a
mov eax, dword [esi + 0x1c]
lea edx, [edi - 1]
movzx eax, byte [eax + edi]
cmp al, byte [ecx + edi]
mov edi, edx
je 0x446820
mov eax, dword [esi + 0x2c]
mov ebx, dword [esi + 0x24]
sub eax, dword [esi + 0x20]
lea eax, [eax + edx + 1]
mov edx, dword [esi + 0xc]
mov dword [esi + 0x10], edx
mov ecx, eax
mov edi, eax
sub ecx, edx
cmp ecx, dword [esi + 8]
mov eax, ecx
jb 0x4467d0
jmp 0x446d53
mov edi, dword [esi + 0x20]
mov ebx, dword [esi + 0x10]
mov edx, dword [esi + 0x38]
cmp ebx, edi
cmovbe ebx, edi
nop
cmp ebx, edi
je 0x446b1c
cmp edx, edi
je 0x446e79
mov eax, dword [esi + 0x14]
add eax, edi
cmp eax, dword [esi + 8]
jae 0x446e99
mov eax, dword [esi + 0x1c]
movzx eax, byte [eax + edi]
cmp al, byte [ecx + edi]
lea edi, [edi + 1]
je 0x446890
mov ecx, dword [esi + 0x34]
mov eax, dword [esi + 0x2c]
mov edx, dword [esi + 0xc]
mov ebx, dword [esi + 0x24]
sub eax, ecx
mov dword [esi + 0x10], ecx
jmp 0x446861
cmp byte [esi + 0x56], 0
jne 0x446d53
mov ecx, dword [esi + 0x78]
mov ebx, dword [esi + 0x7c]
mov dh, byte [esi + 0x55]
mov edi, dword [esi + 0x50]
mov dword [esi + 0x1c], ecx
mov dword [esi + 8], ebx
jmp 0x44690a
mov edi, dword [esi + 0x14]
mov ebx, dword [esi + 8]
add edi, eax
mov dword [esi + 0x50], edi
mov edx, dword [esi + 0x54]
test edx, 0xff0000
jne 0x446d53
mov al, dh
xor al, 1
test edi, edi
mov byte [esi + 0x55], al
je 0x446b0d
cmp edi, ebx
jae 0x446930
cmp byte [ecx + edi], 0xbf
jg 0x446938
jmp 0x446f2e
cmp ebx, edi
jne 0x446f2e
movzx ebx, byte [ecx + edi - 1]
mov dword [esi + 0x14], edi
test bl, bl
js 0x446950
movzx ebx, bl
test dh, dh
je 0x4469a6
jmp 0x446b1c
mov eax, ecx
movzx ecx, byte [ecx + edi - 2]
cmp cl, 0xc0
jge 0x446980
movzx eax, byte [eax + edi - 3]
cmp al, 0xc0
jge 0x446985
mov dword [esi + 0xc], eax
mov eax, dword [esi + 0x1c]
movzx edi, byte [eax + edi - 4]
mov eax, dword [esi + 0xc]
and edi, 7
and eax, 0x3f
shl edi, 6
or eax, edi
jmp 0x446988
and ecx, 0x1f
jmp 0x446990
and eax, 0xf
shl eax, 6
and ecx, 0x3f
or ecx, eax
and bl, 0x3f
shl ecx, 6
movzx ebx, bl
or ebx, ecx
mov ecx, dword [esi + 0x1c]
test dh, dh
jne 0x446b1c
cmp ebx, 0x110000
je 0x446c11
mov eax, 0xffffffff
cmp ebx, 0x80
jb 0x4468f0
mov eax, 0xfffffffe
cmp ebx, 0x800
jb 0x4468f0
xor eax, eax
cmp ebx, 0x10000
setb al
or eax, 0xfffffffc
jmp 0x4468f0
mov edi, dword [esi + 0x68]
mov dword [esi + 0x28], edi
sub edi, edx
cmp edi, ecx
jae 0x446d53
mov eax, dword [esi + 0x50]
mov ecx, dword [esi + 0x5c]
mov dword [esi + 0x24], ebx
mov dword [esi + 0x38], eax
mov eax, dword [esi + 0xc]
mov dword [esi + 0x30], ecx
cmp ecx, eax
cmova eax, ecx
mov dword [esi + 0x3c], eax
mov eax, ecx
neg eax
mov dword [esi + 0x2c], eax
mov eax, dword [esi + 0x54]
mov dword [esi + 0x34], eax
mov eax, dword [esi + 0x60]
mov dword [esi + 0x40], eax
lea eax, [ecx - 1]
mov dword [esi + 0x10], eax
lea eax, [ebx + ecx - 1]
mov dword [esi + 0x44], eax
mov eax, dword [esi + 0x1c]
lea eax, [eax + ecx - 1]
mov dword [esi + 0x20], eax
jmp 0x446a58
mov edi, dword [esi + 0x28]
mov ebx, dword [esi + 0x24]
add edi, edx
mov eax, edi
mov dword [esi + 0x28], edi
sub eax, dword [esi + 0xc]
cmp eax, dword [esi + 8]
mov edi, eax
jae 0x446d53
mov cl, byte [ebx + edi]
xor eax, eax
mov edx, 1
shld eax, edx, cl
mov edx, 1
shl edx, cl
test cl, 0x20
mov ecx, 0
cmovne eax, edx
cmovne edx, ecx
and eax, dword [esi + 0x34]
and edx, dword [esi + 0x38]
or edx, eax
je 0x446a45
mov eax, dword [esi + 0x10]
mov edx, dword [esi + 0x44]
mov dword [esi + 0x14], edi
xor ecx, ecx
lea ebx, [eax + edi]
add edi, edx
nop word cs:[eax + eax]
nop
cmp dword [esi + 0x2c], ecx
je 0x446ad3
mov eax, dword [esi + 0x10]
cmp eax, dword [esi + 0xc]
jae 0x446e2a
lea eax, [ebx + ecx]
cmp eax, dword [esi + 8]
jae 0x446e4f
mov eax, dword [esi + 0x20]
lea edx, [ecx - 1]
movzx eax, byte [eax + ecx]
cmp al, byte [edi + ecx]
mov ecx, edx
je 0x446aa0
jmp 0x446a3d
mov eax, dword [esi + 0x14]
mov ebx, dword [esi + 0x24]
mov edi, dword [esi + 0x30]
lea ecx, [ebx + eax]
nop
cmp dword [esi + 0x3c], edi
je 0x446b1c
mov eax, dword [esi + 0x14]
add eax, edi
cmp eax, dword [esi + 8]
jae 0x446ee2
mov eax, dword [esi + 0x1c]
movzx eax, byte [eax + edi]
cmp al, byte [ecx + edi]
lea edi, [edi + 1]
je 0x446ae0
mov edi, dword [esi + 0x28]
sub edi, dword [esi + 0x40]
jmp 0x446a45
test dh, dh
mov dword [esi + 0x14], 0
je 0x446c11
mov eax, dword [esi + 0x14]
mov ebx, dword [esi + 0x18]
add eax, 9
mov ecx, eax
mov dword [esi + 8], eax
test ecx, ecx
je 0x446b46
nop
cmp dword [esi + 4], ecx
jbe 0x446b40
cmp byte [ebx + ecx], 0xbf
jg 0x446b46
jmp 0x446f0e
jne 0x446f0e
cmp dword [esi + 4], ecx
je 0x446b5e
movzx edx, byte [ebx + ecx]
add dl, 0xd0
cmp dl, 0xa
jae 0x446b67
inc ecx
test ecx, ecx
jne 0x446b30
jmp 0x446b46
mov edx, dword [esi + 4]
test ecx, ecx
jne 0x446b6d
jmp 0x446ba1
mov edx, ecx
test ecx, ecx
je 0x446ba1
mov eax, dword [esi + 4]
cmp eax, edx
jbe 0x446b9d
cmp byte [ebx + edx], 0xbf
jg 0x446ba1
mov dword [esi + 0x98], 0
push 0x583808
mov eax, dword [esi + 4]
push eax
push edx
push eax
push ebx
call fcn.00570b30
add esp, 0x14
jmp 0x446f91
cmp eax, ecx
jne 0x446b7a
mov edi, dword [esi + 4]
sub edi, edx
cmp edi, 8
jb 0x446d53
mov edi, 0x6c6f6320
mov eax, ebx
xor edi, dword [ebx + edx]
mov ebx, 0x206e6d75
xor ebx, dword [eax + edx + 4]
or ebx, edi
jne 0x446d53
lea eax, [edx + 8]
mov dword [esi + 0xc], eax
mov edi, eax
mov eax, dword [esi + 8]
mov ebx, dword [esi + 0x18]
test edi, edi
je 0x446bf6
nop dword [eax]
cmp dword [esi + 4], edi
jbe 0x446bf0
cmp byte [ebx + edi], 0xbf
jg 0x446bf6
jmp 0x446f5c
jne 0x446f5c
cmp dword [esi + 4], edi
je 0x446c1a
movzx ebx, byte [ebx + edi]
add bl, 0xd0
cmp bl, 0xa
jae 0x446c25
inc edi
mov ebx, dword [esi + 0x18]
test edi, edi
jne 0x446be0
jmp 0x446bf6
mov byte [esi + 0x56], 1
jmp 0x446d53
mov eax, dword [esi + 4]
mov dword [esi + 0x10], eax
mov eax, dword [esi + 8]
jmp 0x446c34
cmp edi, dword [esi + 4]
mov ebx, dword [esi + 0x18]
mov dword [esi + 0x10], edi
jb 0x446d53
mov dword [esi + 0x1c], edi
mov edi, edx
sub edi, eax
jb 0x446c6e
test eax, eax
je 0x446c50
cmp dword [esi + 4], eax
jbe 0x446c4e
cmp byte [ebx + eax], 0xc0
jge 0x446c50
jmp 0x446c6e
jne 0x446c6e
test ecx, ecx
je 0x446ca1
mov eax, dword [esi + 4]
cmp eax, edx
jbe 0x446c90
cmp byte [ebx + edx], 0xbf
mov eax, dword [esi + 8]
mov dword [esi + 0x98], 0
jg 0x446ca1
mov dword [esi + 0x98], 0
push 0x583828
push edx
push eax
push dword [esi + 4]
push ebx
call fcn.00570b30
add esp, 0x14
jmp 0x446f91
cmp eax, ecx
mov eax, dword [esi + 8]
mov dword [esi + 0x98], 0
jne 0x446c6e
add eax, ebx
mov dword [esi + 0x98], 0
push edi
push eax
call fcn.00508f40
add esp, 8
mov edi, dword [esi + 0x1c]
test al, 1
jne 0x446d53
mov dword [esi + 8], edx
mov eax, dword [esi + 0x10]
mov edx, dword [esi + 0xc]
mov ecx, dword [esi + 0x18]
sub eax, edx
jb 0x446f7c
test edx, edx
je 0x446cf0
cmp dword [esi + 4], edx
jbe 0x446cea
cmp byte [ecx + edx], 0xc0
jge 0x446cf0
jmp 0x446f7c
jne 0x446f7c
test edi, edi
je 0x446cfd
cmp dword [esi + 4], edi
jne 0x446f7c
add edx, ecx
push eax
push edx
call fcn.00508f40
add esp, 8
test al, 1
jne 0x446d53
mov edi, edx
mov edx, dword [esi + 0x14]
mov eax, dword [ebp + 8]
mov bl, 1
cmp dword [esi + 4], edx
jb 0x446d58
test edx, edx
je 0x446ecb
cmp dword [esi + 4], edx
jbe 0x446ec5
mov ecx, dword [esi + 0x18]
cmp byte [ecx + edx], 0xc0
jge 0x446ecb
push 0x5834ec
push 0x30
push str.assertion_failed:_self.is_char_boundary_new_len_
call fcn.005707b0
add esp, 0xc
jmp 0x446f91
mov eax, dword [ebp + 8]
xor ebx, ebx
mov eax, dword [eax + 4]
cmp eax, dword [esi + 4]
jbe 0x446d9c
mov ecx, dword [esi + 4]
test ecx, ecx
je 0x446d87
push ecx
push 1
push eax
push dword [esi + 0x18]
call fcn.0043c2c0
add esp, 0x10
test eax, eax
mov dword [esi + 0x18], eax
jne 0x446d9c
push 1
push dword [esi + 4]
jmp 0x446f52
push 1
push eax
push dword [esi + 0x18]
call fcn.0043c2a0
add esp, 0xc
mov dword [esi + 0x18], 1
push 4
push 0x14
call fcn.0043c290
add esp, 8
test eax, eax
je 0x446f4e
mov edx, dword [esi + 8]
xor ecx, ecx
test bl, bl
mov ebx, dword [esi + 4]
mov dword [eax], 0
cmove edi, ecx
cmove edx, ecx
mov ecx, dword [esi + 0x18]
mov dword [eax + 4], ecx
mov dword [eax + 8], ebx
mov dword [eax + 0xc], edx
mov edx, dword [esi + 0x90]
mov dword [eax + 0x10], edi
mov dword fs:[0], edx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esi + 0x98], 0
push 0x583464
push dword [esi + 0xc]
push edi
call fcn.00570800
add esp, 0xc
jmp 0x446f91
mov dword [esi + 0x98], 0
push 0x583474
push dword [esi + 8]
push edx
call fcn.00570800
add esp, 0xc
jmp 0x446f91
mov eax, dword [esi + 0x10]
mov dword [esi + 0x98], 0
add eax, ecx
push 0x583464
push dword [esi + 0xc]
push eax
call fcn.00570800
add esp, 0xc
jmp 0x446f91
mov eax, dword [esi + 0x30]
mov dword [esi + 0x98], 0
add eax, dword [esi + 0x14]
lea eax, [ecx + eax - 1]
push 0x583474
push dword [esi + 8]
push eax
call fcn.00570800
add esp, 0xc
jmp 0x446f91
mov dword [esi + 0x98], 0
push 0x583484
push dword [esi + 0xc]
push edx
call fcn.00570800
add esp, 0xc
jmp 0x446f91
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 8]
mov dword [esi + 0x98], 0
add eax, dword [esi + 0x20]
cmp ecx, eax
cmova eax, ecx
push 0x583494
push ecx
push eax
call fcn.00570800
add esp, 0xc
jmp 0x446f91
jne 0x446d3a
mov dword [eax + 8], edx
mov dword [esi + 4], edx
mov eax, dword [eax + 4]
cmp eax, dword [esi + 4]
ja 0x446d60
jmp 0x446d9c
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 8]
mov dword [esi + 0x98], 0
add eax, dword [esi + 0x30]
cmp ecx, eax
cmova eax, ecx
push 0x583494
push ecx
push eax
call fcn.00570800
add esp, 0xc
jmp 0x446f91
mov dword [esi + 0x98], 0
push 0x5837f8
mov eax, dword [esi + 4]
push eax
push ecx
push eax
push ebx
call fcn.00570b30
add esp, 0x14
jmp 0x446f91
mov dword [esi + 0x98], 0
push 0x5834fc
push edi
push 0
push dword [esi + 8]
push ecx
call fcn.00570b30
add esp, 0x14
jmp 0x446f91
push 4
push 0x14
call fcn.00570650
add esp, 8
ud2
mov dword [esi + 0x98], 0
push 0x583818
mov eax, dword [esi + 4]
push eax
push edi
push eax
push ebx
call fcn.00570b30
add esp, 0x14
jmp 0x446f91
push 0x583838
push dword [esi + 0x10]
push edx
push dword [esi + 4]
push ecx
call fcn.00570b30
add esp, 0x14
ud2