Function at 0x10095860
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], 0x10096140
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 byte [esi + 7], 1
mov dword [esi + 0x98], 0
mov eax, dword [edx + 4]
mov ecx, dword [edx + 8]
lea edx, [esi + 0x38]
push 9
push 0x10153514
mov dword [esi + 0x14], ecx
push ecx
mov dword [esi + 8], eax
push eax
push edx
call fcn.100bec70
add esp, 0x14
cmp dword [esi + 0x38], 0
je 0x10095a94
mov edi, dword [esi + 0x58]
mov edx, dword [esi + 0x74]
mov eax, dword [esi + 0x6c]
mov ecx, edi
mov dword [esi + 0x1c], edx
mov dword [esi + 0x10], eax
sub ecx, edx
cmp ecx, eax
jae 0x10095a9e
mov edx, dword [esi + 0x5c]
mov eax, dword [esi + 0x68]
mov ebx, dword [esi + 0x60]
mov dword [esi + 0x28], edx
mov dword [esi + 0x18], eax
mov eax, dword [esi + 0x4c]
mov edx, dword [esi + 0x1c]
mov dword [esi + 0x30], ebx
cmp eax, edx
mov dword [esi + 0x2c], eax
cmova edx, eax
mov eax, dword [esi + 0x70]
mov dword [esi + 0x24], edx
mov edx, dword [esi + 0x40]
mov dword [esi + 0x20], eax
dec eax
mov dword [esi + 0x84], edx
mov edx, dword [esi + 0x44]
mov dword [esi + 0x7c], eax
mov dword [esi + 0x80], edx
mov edx, dword [esi + 0x50]
mov dword [esi + 0x78], edx
jmp 0x1009596d
cmp dword [esi + 0x28], 0xffffffff
mov ecx, dword [esi + 0x1c]
je 0x1009595c
mov dword [esi + 0x30], ecx
mov ecx, dword [esi + 0xc]
mov edi, ecx
sub ecx, dword [esi + 0x1c]
cmp ecx, dword [esi + 0x10]
jae 0x10095a9e
mov eax, dword [esi + 0x18]
mov dword [esi + 0xc], ecx
mov dword [esi + 0x34], edi
xor edx, edx
mov edi, 1
movzx ecx, byte [eax + ecx]
mov eax, 1
shld edx, eax, cl
shl edi, cl
test cl, 0x20
mov eax, 0
cmovne edx, edi
cmovne edi, eax
and edx, dword [esi + 0x80]
and edi, dword [esi + 0x84]
or edi, edx
je 0x10095950
mov eax, dword [esi + 0x2c]
mov edx, dword [esi + 0x30]
cmp eax, edx
cmovb edx, eax
cmp dword [esi + 0x28], 0xffffffff
cmove edx, eax
lea ecx, [edx - 1]
cmp ecx, dword [esi + 0x1c]
jae 0x10095a1a
mov eax, dword [esi + 0x7c]
mov ebx, dword [esi + 0xc]
mov ecx, edx
neg ecx
lea edi, [eax + edx]
lea edx, [edx + ebx - 1]
nop word cs:[eax + eax]
nop
test ecx, ecx
je 0x10095a30
cmp edx, dword [esi + 0x10]
jae 0x10095e85
movzx ebx, byte [edi]
mov eax, dword [esi + 0x18]
inc ecx
dec edi
cmp bl, byte [eax + edx]
lea edx, [edx - 1]
je 0x100959e0
mov eax, dword [esi + 0x34]
sub eax, dword [esi + 0x2c]
sub eax, ecx
cmp dword [esi + 0x28], 0xffffffff
mov ecx, dword [esi + 0x1c]
mov dword [esi + 0xc], eax
jne 0x10095959
jmp 0x1009595c
test edx, edx
jne 0x10096051
nop word cs:[eax + eax]
nop dword [eax]
cmp dword [esi + 0x28], 0xffffffff
mov ecx, dword [esi + 0x30]
mov edi, dword [esi + 0x2c]
mov edx, dword [esi + 0xc]
mov eax, dword [esi + 0x18]
cmove ecx, dword [esi + 0x1c]
add edx, eax
cmp ecx, edi
cmovbe ecx, edi
nop dword [eax + eax]
cmp ecx, edi
je 0x10095aa5
cmp dword [esi + 0x24], edi
je 0x10095f1a
mov ebx, dword [esi + 0xc]
add ebx, edi
cmp ebx, dword [esi + 0x10]
jae 0x10095f40
mov eax, dword [esi + 0x20]
movzx ebx, byte [eax + edi]
cmp bl, byte [edx + edi]
lea edi, [edi + 1]
je 0x10095a50
mov ecx, dword [esi + 0x78]
mov eax, dword [esi + 0x34]
sub eax, ecx
cmp dword [esi + 0x28], 0xffffffff
mov dword [esi + 0xc], eax
jne 0x10095959
jmp 0x1009595c
cmp byte [esi + 0x46], 0
je 0x10095b29
mov dl, 1
jmp 0x10095b9e
mov edi, dword [esi + 8]
mov eax, dword [esi + 0x14]
mov ecx, dword [esi + 0xc]
lea ebx, [ecx + 9]
mov dword [esi + 0xc], ecx
mov ecx, ebx
test ecx, ecx
je 0x10095ad6
nop word [eax + eax]
cmp ecx, eax
jae 0x10095ad0
cmp byte [edi + ecx], 0xbf
jg 0x10095ad6
jmp 0x10095f95
jne 0x10095f95
cmp eax, ecx
je 0x10095aed
movzx edx, byte [edi + ecx]
add dl, 0xd0
cmp dl, 0xa
jae 0x10095af5
inc ecx
test ecx, ecx
jne 0x10095ac0
jmp 0x10095ad6
mov edx, eax
test ecx, ecx
jne 0x10095afb
jmp 0x10095b74
mov edx, ecx
test ecx, ecx
je 0x10095b74
cmp eax, edx
jbe 0x10095b72
cmp byte [edi + edx], 0xbf
jg 0x10095b74
mov byte [esi + 7], 1
mov dword [esi + 0x98], 0
push 0x10153608
push eax
push edx
push eax
push edi
call fcn.10114300
add esp, 0x14
jmp 0x10096070
mov edx, dword [esi + 0x40]
movzx ebx, byte [esi + 0x45]
test edx, edx
je 0x10095cc8
mov eax, dword [esi + 0x6c]
mov ecx, dword [esi + 0x68]
cmp edx, eax
mov dword [esi + 0x10], eax
jae 0x10095cdd
cmp byte [ecx + edx], 0xc0
jge 0x10095ce3
mov ebx, ecx
mov byte [esi + 7], 1
push 0x101532d0
push edx
push 0
push dword [esi + 0x10]
push ebx
call fcn.10114300
add esp, 0x14
jmp 0x10096070
jne 0x10095b05
mov edi, eax
sub edi, edx
cmp edi, 8
jb 0x10095b9c
mov eax, dword [esi + 8]
mov edi, 0x6c6f6320
mov dword [esi + 0x10], ebx
mov ebx, 0x206e6d75
xor edi, dword [eax + edx]
xor ebx, dword [eax + edx + 4]
or ebx, edi
je 0x10095c66
mov dl, 1
mov eax, dword [ebp + 8]
mov ebx, dword [esi + 0x14]
mov ecx, dword [eax]
mov eax, dword [esi + 8]
cmp ecx, ebx
jbe 0x10095bfd
test ebx, ebx
mov dword [esi + 0x18], edx
je 0x10095be7
push ebx
push 1
push ecx
push dword [esi + 8]
mov dword [esi + 0xc], ecx
call fcn.100218d0
add esp, 0x10
mov edx, dword [esi + 0x18]
test eax, eax
jne 0x10095bfd
mov dword [esi + 0x98], 1
push ebx
push 1
call fcn.10113ca0
add esp, 8
jmp 0x10096070
push 1
push ecx
push dword [esi + 8]
call fcn.100218b0
add esp, 0xc
mov edx, dword [esi + 0x18]
mov eax, 1
xor ecx, ecx
test dl, dl
mov edx, dword [esi + 0x10]
mov dword [esi + 0x38], 0
mov dword [esi + 0x3c], eax
mov dword [esi + 0x40], ebx
cmovne edi, ecx
cmovne edx, ecx
mov dword [esi + 0x44], edx
mov dword [esi + 0x48], edi
movzx eax, byte [0x10180e99]
push 4
push 0x14
call fcn.100218a0
add esp, 8
test eax, eax
je 0x10095fb9
mov ecx, dword [esi + 0x48]
movsd xmm0, qword [esi + 0x38]
movsd xmm1, qword [esi + 0x40]
mov edx, dword [esi + 0x90]
mov dword [eax + 0x10], ecx
movsd qword [eax + 8], xmm1
movsd qword [eax], xmm0
mov dword fs:[0], edx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
lea eax, [edx + 8]
mov dword [esi + 0x18], eax
mov ebx, eax
mov eax, dword [esi + 0x14]
test ebx, ebx
je 0x10095ca6
nop word cs:[eax + eax]
nop
cmp ebx, eax
jae 0x10095ca0
mov edi, dword [esi + 8]
cmp byte [edi + ebx], 0xbf
jg 0x10095ca6
jmp 0x10095fd4
jne 0x10095fd4
cmp eax, ebx
je 0x10095d08
mov edi, edx
mov edx, ebx
mov ebx, dword [esi + 8]
movzx ebx, byte [ebx + edx]
add bl, 0xd0
cmp bl, 0xa
jae 0x10095d10
inc edx
mov ebx, edx
mov edx, edi
test ebx, ebx
jne 0x10095c80
jmp 0x10095ca6
mov edi, dword [esi + 8]
mov eax, dword [esi + 0x14]
xor ecx, ecx
test bl, bl
jne 0x10095aae
jmp 0x10095a9e
jne 0x10095b53
movzx eax, byte [ecx + edx - 1]
movzx edi, al
test al, al
js 0x10095dc3
mov eax, dword [esi + 0x14]
test bl, bl
je 0x10095e29
mov edi, dword [esi + 8]
mov ecx, edx
jmp 0x10095aae
mov dword [esi + 0x20], eax
mov eax, dword [esi + 0x10]
jmp 0x10095d22
cmp edx, eax
mov eax, dword [esi + 0x10]
mov dword [esi + 0x20], edx
mov ebx, edx
mov edx, edi
jb 0x10095b9c
mov edi, edx
mov dword [esi + 0x24], ebx
sub edi, eax
jb 0x10095ff7
test eax, eax
je 0x10095d46
mov ebx, dword [esi + 8]
mov eax, dword [esi + 0x10]
cmp byte [ebx + eax], 0xc0
mov eax, dword [esi + 0x10]
jl 0x10095ff7
test ecx, ecx
je 0x10095d61
mov ecx, dword [esi + 8]
cmp byte [ecx + edx], 0xbf
mov dword [esi + 0x98], 0
jle 0x10095ff7
add eax, dword [esi + 8]
mov byte [esi + 7], 1
mov dword [esi + 0x98], 0
push edi
push eax
lea eax, [esi + 0x38]
push eax
call fcn.100c0770
add esp, 0xc
cmp byte [esi + 0x38], 0
mov edi, dword [esi + 0x18]
mov ebx, dword [esi + 0x24]
mov dl, 1
jne 0x10095aa0
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 8]
sub eax, edi
jb 0x1009601c
mov edx, dword [esi + 0x3c]
test edi, edi
je 0x10095eb6
cmp edi, dword [esi + 0x14]
jae 0x10095eb0
cmp byte [ecx + edi], 0xc0
jge 0x10095eb6
jmp 0x1009601c
mov eax, ecx
movzx ecx, byte [ecx + edx - 2]
mov dword [esi + 0x18], eax
cmp cl, 0xbf
jg 0x10095dfc
mov byte [esi + 0x24], bl
movzx ebx, byte [eax + edx - 3]
mov dword [esi + 0xc], ebx
cmp byte [esi + 0xc], 0xbf
jg 0x10095e01
movzx eax, byte [eax + edx - 4]
and eax, 7
shl eax, 6
mov dword [esi + 0x20], eax
mov eax, dword [esi + 0xc]
and eax, 0x3f
add eax, dword [esi + 0x20]
jmp 0x10095e07
and ecx, 0x1f
jmp 0x10095e13
mov eax, dword [esi + 0xc]
and eax, 0xf
movzx ebx, byte [esi + 0x24]
shl eax, 6
and ecx, 0x3f
or ecx, eax
shl ecx, 6
and edi, 0x3f
mov eax, dword [esi + 0x14]
or edi, ecx
mov ecx, dword [esi + 0x18]
test bl, bl
jne 0x10095cfe
cmp edi, 0x110000
je 0x10095a9e
mov ebx, ecx
mov ecx, 0xffffffff
cmp edi, 0x80
jb 0x10095e5f
mov ecx, 0xfffffffe
cmp edi, 0x800
jb 0x10095e5f
xor ecx, ecx
cmp edi, 0x10000
setb cl
or ecx, 0xfffffffc
mov edi, dword [esi + 8]
mov eax, dword [esi + 0x14]
add ecx, edx
je 0x10095ea9
cmp ecx, dword [esi + 0x10]
jae 0x10095efd
cmp byte [ebx + ecx], 0xbf
mov edx, ebx
jg 0x10095f05
mov edx, ecx
jmp 0x10095b55
mov byte [esi + 7], 1
mov dword [esi + 0x98], 0
push 0x10153280
push dword [esi + 0x10]
push edx
call fcn.10113f90
add esp, 0xc
jmp 0x10096070
xor ecx, ecx
jmp 0x10095aae
jne 0x1009601c
test ebx, ebx
je 0x10095ec6
mov ebx, dword [esi + 0x20]
cmp ebx, dword [esi + 0x14]
jne 0x1009601c
mov dword [esi + 0x10], edx
add edi, ecx
mov byte [esi + 7], 1
push eax
push edi
lea eax, [esi + 0x38]
push eax
call fcn.100c0770
add esp, 0xc
cmp byte [esi + 0x38], 0
mov ecx, dword [esi + 0xc]
mov dl, 1
jne 0x10095aa0
mov eax, dword [esi + 0x14]
mov edi, dword [esi + 0x3c]
cmp eax, ecx
jae 0x10095f70
xor edx, edx
jmp 0x10095b9e
mov edx, ebx
jne 0x10095e7e
cmp byte [edx + ecx - 1], 0
jns 0x10095aae
cmp byte [edx + ecx - 2], 0xbf
jmp 0x10095aae
mov byte [esi + 7], 1
mov dword [esi + 0x98], 0
push 0x10153250
push dword [esi + 0x1c]
push dword [esi + 0x24]
call fcn.10113f90
add esp, 0xc
jmp 0x10096070
mov ecx, dword [esi + 0xc]
mov eax, dword [esi + 0x10]
mov byte [esi + 7], 1
mov dword [esi + 0x98], 0
add ecx, dword [esi + 0x2c]
cmp eax, ecx
cmova ecx, eax
push 0x10153260
push eax
push ecx
call fcn.10113f90
add esp, 0xc
jmp 0x10096070
test ecx, ecx
je 0x10095f85
cmp eax, ecx
jbe 0x10095f85
mov eax, dword [esi + 8]
cmp byte [eax + ecx], 0xbf
jle 0x10096037
mov eax, dword [ebp + 8]
xor edx, edx
mov dword [esi + 0x14], ecx
mov dword [eax + 8], ecx
jmp 0x10095b9e
mov byte [esi + 7], 1
mov dword [esi + 0x98], 0
push 0x101535f8
push eax
push ecx
push eax
push edi
call fcn.10114300
add esp, 0x14
jmp 0x10096070
mov dword [esi + 0x98], 2
push 0x14
push 4
call fcn.10113cc0
add esp, 8
jmp 0x10096070
mov byte [esi + 7], 1
mov dword [esi + 0x98], 0
push 0x10153618
push eax
push ebx
push eax
push dword [esi + 8]
call fcn.10114300
add esp, 0x14
jmp 0x10096070
mov byte [esi + 7], 1
mov dword [esi + 0x98], 0
push 0x10153628
push edx
push eax
push dword [esi + 0x14]
push dword [esi + 8]
call fcn.10114300
add esp, 0x14
jmp 0x10096070
mov byte [esi + 7], 1
push 0x10153638
push dword [esi + 0x20]
push edi
push dword [esi + 0x14]
push ecx
call fcn.10114300
add esp, 0x14
jmp 0x10096070
mov byte [esi + 7], 1
push 0x101532c0
push 0x30
push str.assertion_failed:_self.is_char_boundary_new_len_
call fcn.10113ef0
add esp, 0xc
jmp 0x10096070
mov byte [esi + 7], 1
mov dword [esi + 0x98], 0
push 0x10153270
push dword [esi + 0x1c]
push ecx
call fcn.10113f90
add esp, 0xc
ud2