Function at 0x100d07cf
Capabilities:
Check os version
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xb0
mov esi, esp
mov dword [esi + 0x98], ebp
lea eax, [esi + 0xa0]
mov edx, dword [ebp + 8]
mov dword [eax - 4], esp
or dword [eax + 8], 0xffffffff
mov dword [eax + 4], 0x100d2810
mov ecx, dword fs:[0]
mov dword [eax], ecx
mov dword fs:[0], eax
and dword [eax + 8], 0
mov byte [esi + 3], 1
lea eax, [esi + 0x30]
mov ecx, dword [edx + 4]
mov edx, dword [edx + 8]
push 9
push 0x101721be
mov dword [esi + 0x24], edx
push edx
mov dword [esi + 0x78], ecx
push ecx
push eax
call fcn.100f4f50
add esp, 0x14
cmp dword [esi + 0x30], 0
je 0x100d09e3
mov ecx, dword [esi + 0x44]
mov edx, dword [esi + 0x60]
mov eax, dword [esi + 0x6c]
mov ebx, dword [esi + 0x68]
mov edi, ecx
mov dword [esi + 0x20], edx
sub edx, eax
mov dword [esi + 4], eax
mov dword [esi + 0x14], ecx
mov dword [esi + 0x90], ebx
neg edi
mov dword [esi + 0x84], edx
mov edx, ecx
mov dword [esi + 0x74], edi
mov edi, dword [esi + 0x38]
sub edx, eax
mov eax, dword [esi + 0x54]
mov dword [esi + 0x80], edx
mov edx, dword [esi + 0x64]
mov dword [esi + 0x8c], edi
mov edi, dword [esi + 0x3c]
mov dword [esi + 0x1c], eax
mov eax, dword [esi + 0x58]
mov dword [esi + 0xc], edx
mov edx, dword [esi + 0x50]
mov dword [esi + 0x88], edi
mov edi, dword [esi + 0x48]
mov dword [esi + 0x2c], edi
lea edi, [ebx + ecx]
mov dword [esi + 0x7c], edi
cmp ecx, eax
mov edi, eax
cmovb edi, ecx
cmp dword [esi + 0x1c], 0xffffffff
cmove eax, dword [esi + 4]
cmove edi, ecx
dec edi
mov dword [esi + 8], edi
mov dword [esi + 0x94], eax
mov eax, edx
mov ecx, eax
sub eax, dword [esi + 4]
cmp eax, dword [esi + 0xc]
jae 0x100d0b74
mov dword [esi + 0x18], ecx
mov ecx, dword [esi + 0x20]
xor edx, edx
xor edi, edi
mov dword [esi + 0x10], eax
inc edi
mov cl, byte [ecx + eax]
mov eax, 0
shld edx, edi, cl
shl edi, cl
test cl, 0x20
cmovne edx, edi
cmovne edi, eax
and edx, dword [esi + 0x88]
and edi, dword [esi + 0x8c]
or edi, edx
je 0x100d0957
mov eax, dword [esi + 0x84]
mov ecx, dword [esi + 0x18]
lea edx, [eax + ecx]
mov ecx, dword [esi + 8]
cmp ecx, 0xffffffff
je 0x100d0966
mov eax, dword [esi + 8]
cmp eax, dword [esi + 4]
jae 0x100d0cc8
mov eax, dword [esi + 0x10]
lea edi, [eax + ecx]
cmp edi, dword [esi + 0xc]
jae 0x100d0ce9
mov al, byte [ebx + ecx]
lea edi, [ecx - 1]
cmp al, byte [edx + ecx]
mov ecx, edi
je 0x100d0912
mov edx, dword [esi + 0x18]
mov eax, edx
sub eax, dword [esi + 0x14]
cmp dword [esi + 0x1c], 0xffffffff
lea eax, [eax + edi + 1]
je 0x100d08c1
jmp 0x100d09d1
cmp dword [esi + 0x1c], 0xffffffff
mov eax, dword [esi + 0x10]
je 0x100d08c1
jmp 0x100d09cd
mov eax, dword [esi + 0x80]
mov ecx, dword [esi + 0x18]
mov edi, dword [esi + 0x7c]
mov edx, dword [esi + 0x14]
add ecx, eax
cmp edx, dword [esi + 0x94]
jae 0x100d0ace
cmp edx, dword [esi + 4]
jae 0x100d0d0f
cmp ecx, dword [esi + 0xc]
jae 0x100d0d36
mov al, byte [edi]
mov ebx, dword [esi + 0x20]
inc edi
inc edx
mov byte [esi + 0x28], al
mov al, byte [esi + 0x28]
cmp al, byte [ebx + ecx]
mov ebx, dword [esi + 0x90]
lea ecx, [ecx + 1]
je 0x100d0977
mov edx, dword [esi + 0x18]
sub edx, dword [esi + 0x2c]
cmp dword [esi + 0x1c], 0xffffffff
mov eax, edx
je 0x100d08c1
mov eax, dword [esi + 0x2c]
mov ecx, dword [esi + 0x14]
jmp 0x100d08a3
mov edx, eax
jmp 0x100d09d8
add edx, dword [esi + 0x74]
lea edx, [edi + edx + 1]
mov eax, dword [esi + 4]
mov ecx, dword [esi + 0x14]
jmp 0x100d08a3
mov al, byte [esi + 0x3e]
mov bl, byte [esi + 0x3d]
mov ecx, dword [esi + 0x60]
mov edx, dword [esi + 0x64]
mov byte [esi + 4], al
mov eax, dword [esi + 0x38]
mov dword [esi + 0xc], ecx
mov dword [esi + 8], edx
mov dword [esi + 0x10], eax
mov eax, ebx
cmp byte [esi + 4], 0
jne 0x100d0b74
mov edi, dword [esi + 0x10]
test edi, edi
je 0x100d0ac6
cmp edi, edx
jae 0x100d0a24
cmp byte [ecx + edi], 0xbf
jg 0x100d0a2a
jmp 0x100d0d65
jne 0x100d0d65
mov bl, byte [ecx + edi - 1]
test bl, bl
js 0x100d0a37
movzx ebx, bl
jmp 0x100d0a86
mov edx, ecx
movzx ecx, byte [ecx + edi - 2]
cmp cl, 0xc0
jge 0x100d0a60
mov bh, al
movzx eax, byte [edx + edi - 3]
cmp al, 0xc0
jge 0x100d0a68
movzx edi, byte [edx + edi - 4]
and eax, 0x3f
and edi, 7
shl edi, 6
or eax, edi
jmp 0x100d0a6b
mov edx, dword [esi + 8]
and ecx, 0x1f
jmp 0x100d0a78
and eax, 0xf
mov edx, dword [esi + 8]
shl eax, 6
and ecx, 0x3f
or ecx, eax
mov al, bh
and bl, 0x3f
shl ecx, 6
movzx ebx, bl
or ebx, ecx
mov ecx, dword [esi + 0xc]
test al, al
jne 0x100d0ace
cmp ebx, 0x110000
je 0x100d0b74
cmp ebx, 0x80
mov eax, 0xffffffff
jb 0x100d0abc
cmp ebx, 0x800
push 0xfffffffffffffffe
pop eax
jb 0x100d0abc
xor eax, eax
cmp ebx, 0x10000
setb al
or eax, 0xfffffffc
add dword [esi + 0x10], eax
mov al, 1
jmp 0x100d0a00
test al, al
je 0x100d0b74
mov eax, dword [esi + 0x10]
and dword [esi + 0xa8], 0
add eax, 9
mov edx, eax
mov dword [esi + 0x28], eax
mov ecx, dword [ebp + 8]
mov byte [esi + 3], 1
mov dword [esi + 4], edx
push 0x10172278
call fcn.100cc38e
pop ecx
test edx, edx
je 0x100d0b07
mov al, byte [eax]
add al, 0xd0
cmp al, 0xa
jae 0x100d0b07
mov edx, dword [esi + 4]
inc edx
jmp 0x100d0ae0
mov edx, dword [esi + 4]
mov ecx, dword [ebp + 8]
mov byte [esi + 3], 1
push 0x10172288
call fcn.100cc38e
pop ecx
mov byte [esi + 3], 1
push 8
push 0x101721c7
push edx
push eax
call fcn.100cc90a
add esp, 0x10
test al, al
je 0x100d0b7b
mov eax, dword [esi + 4]
mov dword [esi + 8], 0
lea edx, [eax + 8]
mov dword [esi + 0x20], edx
mov ecx, dword [ebp + 8]
mov byte [esi + 3], 1
mov dword [esi + 0xc], edx
push 0x10172298
call fcn.100cc38e
pop ecx
test edx, edx
je 0x100d0bff
mov al, byte [eax]
add al, 0xd0
cmp al, 0xa
jae 0x100d0bff
mov edx, dword [esi + 0xc]
inc edx
jmp 0x100d0b45
and dword [esi + 0xa8], 0
mov dword [esi + 8], 0
mov dword [esi + 4], 0
mov ecx, dword [ebp + 8]
mov byte [esi + 3], 0
mov eax, dword [ecx + 8]
movsd xmm0, qword [ecx]
mov dword [esi + 0x38], eax
lea eax, [esi + 0x30]
movsd qword [esi + 0x30], xmm0
push eax
call fcn.100ce87e
pop ecx
and dword [esi + 0x38], 0
mov dword [esi + 0x3c], eax
mov eax, dword [esi + 4]
mov dword [esi + 0x40], edx
mov dword [esi + 0xa8], 1
mov dword [esi + 0x30], eax
mov eax, dword [esi + 8]
mov dword [esi + 0x34], eax
push 0x14
pop ecx
call fcn.100c996a
mov ecx, dword [esi + 0x40]
mov dword [eax + 0x10], ecx
movsd xmm0, qword [esi + 0x30]
movsd xmm1, qword [esi + 0x38]
movsd qword [eax + 8], xmm1
movsd qword [eax], xmm0
mov ecx, dword [esi + 0xa0]
mov dword fs:[0], ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esi + 0xc]
cmp eax, dword [esi + 0x24]
jb 0x100d0b82
mov edx, dword [esi + 0x28]
mov ecx, dword [ebp + 8]
mov byte [esi + 3], 1
push 0x101722a8
push dword [esi + 4]
call fcn.100cc36f
pop ecx
pop edi
mov byte [esi + 3], 1
push edx
push eax
lea eax, [esi + 0x30]
push eax
call fcn.100f7080
add esp, 0xc
cmp byte [esi + 0x30], 0
jne 0x100d0b82
mov eax, dword [esi + 0x34]
mov edx, dword [esi + 0x20]
mov ecx, dword [ebp + 8]
mov byte [esi + 3], 1
mov dword [esi + 4], eax
push 0x101722b8
push dword [esi + 0xc]
call fcn.100cc36f
pop ecx
pop edi
mov byte [esi + 3], 1
push edx
push eax
lea eax, [esi + 0x30]
push eax
call fcn.100f7080
add esp, 0xc
cmp byte [esi + 0x30], 0
jne 0x100d0b82
mov ecx, dword [esi + 0x10]
mov edx, dword [esi + 0x34]
cmp dword [esi + 0x24], ecx
mov dword [esi + 8], edx
jb 0x100d0b89
test ecx, ecx
je 0x100d0d5a
cmp dword [esi + 0x24], ecx
jbe 0x100d0d54
mov eax, dword [esi + 0x78]
cmp byte [eax + ecx], 0xc0
jge 0x100d0d5a
mov byte [esi + 3], 1
push 0x1017149c
push 0x30
push str.assertion_failed:_self.is_char_boundary_new_len_G
call fcn.1010c750
add esp, 0xc
jmp 0x100d0d82
and dword [esi + 0xa8], 0
mov byte [esi + 3], 1
push 0x1017102c
push dword [esi + 4]
push ecx
call fcn.1010c7f0
add esp, 0xc
jmp 0x100d0d82
mov eax, dword [esi + 0x18]
and dword [esi + 0xa8], 0
mov byte [esi + 3], 1
sub eax, dword [esi + 4]
add eax, ecx
push 0x1017103c
push dword [esi + 0xc]
push eax
call fcn.1010c7f0
add esp, 0xc
jmp 0x100d0d82
mov ebx, dword [esi + 4]
mov eax, dword [esi + 0x14]
mov byte [esi + 3], 1
cmp eax, ebx
cmovbe eax, ebx
and dword [esi + 0xa8], 0
push 0x1017104c
push ebx
push eax
call fcn.1010c7f0
add esp, 0xc
jmp 0x100d0d82
and dword [esi + 0xa8], 0
mov byte [esi + 3], 1
push 0x1017105c
push dword [esi + 0xc]
push ecx
call fcn.1010c7f0
add esp, 0xc
jmp 0x100d0d82
jne 0x100d0cab
mov eax, dword [ebp + 8]
mov dword [eax + 8], ecx
jmp 0x100d0b89
and dword [esi + 0xa8], 0
mov byte [esi + 3], 1
push 0x10171534
push edi
push 0
push edx
push ecx
call fcn.1010cc70
add esp, 0x14
ud2