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

Disassembly:
push 0xffffffffffffffff
push 0x1004c361
mov eax, dword fs:[0]
push eax
sub esp, 0x28
push ebx
push ebp
push esi
push edi
mov eax, dword [0x10077990]
xor eax, esp
push eax
lea eax, [esp + 0x3c]
mov dword fs:[0], eax
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x54]
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x24], 0
mov dword [esi + 0x38], eax
mov eax, dword [eax + 0x1c]
push eax
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
mov ecx, dword [eax]
mov dword [esp + 0x2c], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x38], 0x7f
mov dword [esp + 0x3c], 0x86
call dword [ecx + 4]
mov ecx, dword [esp + 0x58]
test ecx, ecx
je 0x1001c839
mov dword [esi + 0x3c], ecx
mov eax, dword [ecx]
call dword [eax + 0x18]
push eax
mov ecx, dword [eax]
call dword [ecx + 4]
mov ecx, dword [esi + 0x3c]
call fcn.10009af0
mov ecx, dword [esi + 0x40]
test ecx, ecx
je 0x1001c845
call fcn.10039b10
mov eax, dword [esi + 0x38]
mov ecx, dword [eax + 0x58]
mov dword [esi + 0x40], ecx
test ecx, ecx
je 0x1001c857
call fcn.100397b0
mov eax, dword [esi + 0x38]
mov ecx, dword [esp + 0x70]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x4c], eax
test ecx, ecx
je 0x1001c87f
mov eax, dword [esp + 0x74]
test eax, eax
je 0x1001c87f
mov dword [esi + 0xb0], ecx
mov eax, dword [eax]
mov dword [esi + 0xb4], eax
push 0x28
call fcn.1003d386
add esp, 4
mov dword [esp + 0x54], eax
mov dword [esp + 0x44], 0
test eax, eax
je 0x1001c8a2
mov ecx, eax
call fcn.10010bf0
jmp 0x1001c8a4
xor eax, eax
mov dword [esp + 0x44], 0xffffffff
mov dword [esi + 0x68], eax
test eax, eax
je 0x1001d0f5
push 0xc
push eax
call fcn.10010c30
test eax, eax
js 0x1001d0f5
mov eax, dword [esp + 0x6c]
lea ecx, [esi + 0x98]
mov dword [esi + 0x74], eax
call fcn.10014da0
mov edi, eax
test edi, edi
js 0x1001d0fa
push dword [esp + 0x68]
lea ecx, [esi + 0x98]
call fcn.10013a10
mov edi, eax
test edi, edi
js 0x1001d0fa
mov ebp, dword [esp + 0x5c]
lea ecx, [esi + 0x98]
test ebp, ebp
je 0x1001ca76
push 1
lea eax, [esp + 0x70]
push eax
push dword [esp + 0x90]
lea eax, [esp + 0x24]
push eax
call fcn.100182c0
mov edi, eax
test edi, edi
js 0x1001d0fa
mov eax, dword [esi + 0x38]
lea ebx, [esi + 0x6c]
mov edi, dword [esp + 0x4c]
push ebx
push dword [esp + 0x1c]
push 0
push 0
push ebp
push dword [eax + 0x14]
push edi
call sub.msjet40.dll_Ordinal_158
mov dword [esp + 0x14], eax
cmp eax, 0xfffffc15
jne 0x1001c97a
mov ecx, dword [esp + 0x18]
mov eax, dword [esi + 0x38]
or ecx, 0x40
push ebx
push ecx
push 0
push 0
push ebp
mov dword [esp + 0x2c], ecx
push dword [eax + 0x14]
push edi
call sub.msjet40.dll_Ordinal_158
mov dword [esp + 0x14], eax
cmp eax, 0xfffff88d
jg 0x1001ca07
je 0x1001c9e8
cmp eax, 0xfffff434
jg 0x1001c9a7
je 0x1001ca3a
cmp eax, 0xfffff250
je 0x1001c9b9
cmp eax, 0xfffff3e4
je 0x1001c9b9
jmp 0x1001ca51
cmp eax, 0xfffff43e
je 0x1001c9c9
cmp eax, 0xfffff82f
jne 0x1001ca51
mov dword [ebx], 0xffffffff
mov edi, 0x80040e37
jmp 0x1001d0fe
push 0x10068c38
push eax
mov edi, 0x80040e10
mov dword [ebx], 0xffffffff
push edi
push dword [esi + 0x38]
call fcn.10010bd0
jmp 0x1001d2f0
push 0x10068c38
push eax
mov edi, 0x80040e09
mov dword [ebx], 0xffffffff
push edi
push dword [esi + 0x38]
call fcn.10010bd0
jmp 0x1001d2f0
test eax, eax
jg 0x1001ca4a
je 0x1001ca65
cmp eax, 0xfffffae7
je 0x1001ca3a
cmp eax, 0xfffffaea
jne 0x1001ca51
push 0x10068c38
push eax
mov edi, 0x80004005
mov dword [ebx], 0xffffffff
push edi
push dword [esi + 0x38]
call fcn.10010bd0
jmp 0x1001d2f0
mov edi, 0x80040e37
mov dword [ebx], 0xffffffff
jmp 0x1001d0fe
cmp eax, 0xbd8
je 0x1001ca65
test eax, eax
jg 0x1001ca65
mov edi, 0x80004005
mov dword [ebx], 0xffffffff
jmp 0x1001d0fe
mov eax, dword [esp + 0x18]
mov dword [esi + 0x78], eax
mov dword [esp + 0x2c], 1
jmp 0x1001ca95
push dword [esp + 0x88]
call fcn.10016150
mov edi, eax
test edi, edi
js 0x1001d0fa
mov eax, dword [esp + 0x64]
lea ebx, [esi + 0x6c]
mov dword [ebx], eax
mov edi, dword [esp + 0x60]
mov ebp, dword [esp + 0x4c]
test edi, edi
je 0x1001cadb
push edi
push dword [ebx]
push ebp
call sub.msjet40.dll_Ordinal_173
mov dword [esp + 0x14], eax
cmp eax, 0xfffffa84
je 0x1001cafe
cmp eax, 0xfffffae0
je 0x1001cafe
test eax, eax
je 0x1001cac7
mov edi, 0x80004005
jmp 0x1001cb03
xor eax, eax
xor ecx, ecx
cmp cx, word [edi]
setne al
mov dword [esi + 0xd0], eax
or dword [esi + 0x60], 0x20
push 0xa
push 4
lea eax, [esp + 0x28]
push eax
push dword [ebx]
push ebp
call sub.msjet40.dll_Ordinal_148
mov dword [esp + 0x14], eax
test eax, eax
jns 0x1001cb1a
mov edi, 0x80004005
jmp 0x1001d0fe
mov edi, 0x80040e35
test eax, eax
jns 0x1001cad7
push dword [ebx]
push ebp
call sub.msjet40.dll_Ordinal_108
mov dword [ebx], 0xffffffff
jmp 0x1001d0fa
mov ebp, dword [esp + 0x7c]
mov eax, dword [esp + 0x20]
mov dword [esi + 0xd4], eax
test ebp, ebp
jne 0x1001cbaa
push 6
push 4
lea eax, [esp + 0x20]
push eax
push dword [ebx]
push dword [esp + 0x5c]
call sub.msjet40.dll_Ordinal_148
mov dword [esp + 0x14], eax
cmp eax, 0xfffffae0
je 0x1001cb92
cmp eax, 0xfffffc15
je 0x1001cb69
test eax, eax
je 0x1001cb60
mov edi, 0x80004005
jmp 0x1001d0fe
cmp dword [esp + 0x18], 0
jne 0x1001cbaa
jmp 0x1001cba2
cmp dword [esp + 0x6c], 4
mov dword [esp + 0x14], 0
je 0x1001cbaa
mov dword [esp + 0x18], 0x30
mov dword [esp + 0x6c], 3
mov dword [esp + 0x28], 1
jmp 0x1001cbaa
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x6c], 0
mov eax, dword [esi + 0xd4]
add eax, 0xfffffff1
cmp eax, 0x2a
ja case.0x1001cbbf.18
movzx eax, byte [eax + 0x1001d550]
jmp dword [eax*4 + 0x1001d548]
test byte [esp + 0x18], 0x30
je case.0x1001cbbf.18
mov dword [esp + 0x6c], 5
jmp 0x1001cbf6
mov eax, dword [esp + 0x6c]
test eax, eax
je 0x1001cbe4
cmp eax, 1
jne 0x1001cbf6
mov ecx, dword [esi + 0xa0]
push 0
push 0x86
call fcn.10017f60
mov eax, dword [esp + 0x58]
test eax, eax
je 0x1001cc13
mov ecx, eax
call fcn.1001d580
mov edi, eax
test edi, edi
js 0x1001d0fa
mov eax, dword [esp + 0x58]
push dword [esp + 0x84]
mov ecx, esi
push dword [esp + 0x84]
push eax
lea eax, [esi + 0x98]
push eax
push dword [esp + 0x7c]
call fcn.1001ed60
mov edi, eax
test edi, edi
js 0x1001d0fa
mov eax, dword [esi + 0x78]
mov ecx, dword [esi + 0xa4]
mov dword [esp + 0x54], eax
lea eax, [esp + 0x54]
push eax
push 0xfe
call fcn.100160e0
lea ecx, [esi + 0x98]
call fcn.100174d0
test byte [esp + 0x18], 0x30
mov ecx, dword [esp + 0x6c]
jne 0x1001cc79
cmp ebp, 1
jne 0x1001cc8a
test ecx, ecx
je 0x1001cc8a
cmp ecx, 5
je 0x1001cc8a
mov dword [esi + 0x84], 1
jmp 0x1001cc94
mov dword [esi + 0x84], 0
cmp dword [esi + 0x84], 1
jne 0x1001ccca
lea eax, [ecx - 2]
cmp eax, 2
ja 0x1001ccca
mov ecx, esi
call fcn.1001d610
mov dword [esp + 0x14], eax
test eax, eax
jns 0x1001ccbe
mov edi, 0x80004005
jmp 0x1001d0fe
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x30], 1
mov eax, dword [esp + 0x78]
test eax, eax
jne 0x1001cd25
push 0x10
call fcn.1003d386
add esp, 4
test eax, eax
je 0x1001cceb
mov ecx, eax
call fcn.10002dc0
mov ecx, eax
jmp 0x1001cced
xor ecx, ecx
mov dword [esi + 0x94], ecx
test ecx, ecx
je 0x1001d0f5
mov eax, dword [esi + 0x38]
lea edx, [esp + 0x14]
push 0
push 0
push edx
push dword [ebx]
push dword [eax + 0x14]
push dword [esp + 0x60]
call fcn.10007a40
mov edi, eax
test edi, edi
js 0x1001d0fa
mov ecx, dword [esp + 0x6c]
jmp 0x1001cd2b
mov dword [esi + 0x94], eax
cmp dword [esi + 0x84], 1
je 0x1001cd39
cmp ecx, 5
jne 0x1001cd69
push 1
push 0
lea eax, [esp + 0x1c]
push eax
push 0
push SysReAllocStringLen
push esi
call fcn.1001e080
mov edi, eax
cmp edi, 0x40ec6
je 0x1001cd63
cmp dword [esp + 0x14], 0xfffff9bd
jne 0x1001cd69
xor edi, edi
mov dword [esp + 0x14], edi
cmp dword [esi + 0xd4], 4
je 0x1001cefa
mov ecx, dword [esi + 0xa0]
push 0x9f
call fcn.10015160
mov ebx, eax
mov ecx, ebx
call fcn.10015c00
mov ebp, dword [esp + 0x58]
cmp eax, 1
jne 0x1001ce43
movdqu xmm0, xmmword [0x10056c68]
xor ecx, ecx
lea eax, [esi + 0x98]
test ebp, ebp
setne cl
add ecx, 7
push ecx
push dword [esp + 0x88]
push dword [esp + 0x88]
push ebp
push eax
sub esp, 0x10
mov eax, esp
push 0x9f
movdqu xmmword [eax], xmm0
call fcn.1003ccf0
mov edi, eax
test edi, edi
jns 0x1001ce0d
cmp edi, 0x80004005
jne 0x1001d0fa
push dword [esp + 0x88]
push 0x10068cb8
call fcn.10002d40
test al, al
je 0x1001d0fa
mov edi, 0x80004002
jmp 0x1001d0fa
test dword [ebx + 0x28], 2
je 0x1001ce20
mov edi, 0x80040e21
jmp 0x1001d0fa
or dword [ebx + 0x20], 0x400
mov ecx, ebx
push 0
call fcn.10017fc0
or dword [ebx + 0x28], 2
and dword [ebx + 0x20], 0xfffffbff
mov dword [esp + 0x1c], 1
mov ecx, dword [esi + 0xa0]
push 0x117
call fcn.10015160
mov ebx, eax
mov ecx, ebx
call fcn.10015c00
cmp eax, 1
jne 0x1001cefa
movdqu xmm0, xmmword [0x10056c68]
xor ecx, ecx
lea eax, [esi + 0x98]
test ebp, ebp
setne cl
add ecx, 7
push ecx
push dword [esp + 0x88]
push dword [esp + 0x88]
push ebp
push eax
sub esp, 0x10
mov eax, esp
push 0x117
movdqu xmmword [eax], xmm0
call fcn.1003ccf0
mov edi, eax
test edi, edi
jns 0x1001cec4
cmp edi, 0x80004005
jne 0x1001d0fa
push dword [esp + 0x88]
push 0x10068ee8
jmp 0x1001cdf6
test dword [ebx + 0x28], 2
je 0x1001ced7
mov edi, 0x80040e21
jmp 0x1001d0fa
or dword [ebx + 0x20], 0x400
mov ecx, ebx
push 0
call fcn.10017fc0
or dword [ebx + 0x28], 2
and dword [ebx + 0x20], 0xfffffbff
mov dword [esp + 0x1c], 1
mov ecx, dword [esi + 0xa0]
push 0x88
call fcn.10015b60
mov ecx, dword [esi + 0xac]
xor ecx, eax
and ecx, 1
xor dword [esi + 0xac], ecx
mov ecx, dword [esi + 0xa0]
push 0x89
call fcn.10015b60
add eax, eax
xor eax, dword [esi + 0xac]
and eax, 2
xor dword [esi + 0xac], eax
push 0x14
call fcn.1003d386
add esp, 4
test eax, eax
je 0x1001cf59
push dword [esi + 8]
mov ecx, eax
push 1
push esi
call fcn.10009010
jmp 0x1001cf5b
xor eax, eax
mov dword [esi + 0x28], eax
test eax, eax
je 0x1001d0f5
mov ecx, dword [esi + 0xa0]
push 0x7b
call fcn.10015b60
test eax, eax
je 0x1001cfa1
push 0x14
call fcn.1003d386
add esp, 4
test eax, eax
je 0x1001cf94
push dword [esi + 8]
mov ecx, eax
push 1
push esi
call fcn.10009040
jmp 0x1001cf96
xor eax, eax
mov dword [esi + 0x2c], eax
test eax, eax
je 0x1001d0f5
push 0x14
call fcn.1003d386
add esp, 4
test eax, eax
je 0x1001cfbe
push dword [esi + 8]
mov ecx, eax
push 1
push esi
call fcn.10009070
jmp 0x1001cfc0
xor eax, eax
mov dword [esi + 0x30], eax
test eax, eax
je 0x1001d0f5
push 0xc
call fcn.1003d386
add esp, 4
test eax, eax
je 0x1001cfeb
mov dword [eax], vtable.CImpIRowsetLocate.0
mov dword [eax + 4], 0
mov dword [eax + 8], esi
jmp 0x1001cfed
xor eax, eax
mov dword [esi + 0x10], eax
test eax, eax
je 0x1001d0f5
mov ecx, dword [esi + 0xa0]
push 0xe
call fcn.10015b60
test eax, eax
je 0x1001d03b
or dword [esi + 0x60], 8
mov ecx, dword [esi + 0xa0]
push 0x82
call fcn.10015b60
test eax, eax
jne 0x1001d035
mov ecx, dword [esi + 0xa0]
push 0x85
call fcn.10015b60
test eax, eax
je 0x1001d03b
mov eax, dword [esi + 0x10]
mov dword [esi + 0x14], eax
push 0xc
call fcn.1003d386
add esp, 4
test eax, eax
je 0x1001d05b
mov dword [eax], vtable.CImpIRowsetInfo.0
mov dword [eax + 4], 0
mov dword [eax + 8], esi
jmp 0x1001d05d
xor eax, eax
mov dword [esi + 0x20], eax
test eax, eax
je 0x1001d0f5
mov eax, dword [esi + 0x38]
lea ecx, [esp + 0x24]
push ecx
mov ecx, dword [eax + 0x54]
call fcn.10088d5c
mov ecx, dword [esi + 0xa0]
push 0x7f
call fcn.10015b60
test eax, eax
je 0x1001d0b2
push 0xc
call fcn.1003d386
add esp, 4
test eax, eax
je 0x1001d0a9
mov dword [eax], vtable.CImpIRowsetUpdate.0
mov dword [eax + 4], 0
mov dword [eax + 8], esi
jmp 0x1001d0ab
xor eax, eax
mov dword [esi + 0x24], eax
test eax, eax
je 0x1001d0f5
mov ecx, dword [esi + 0xa0]
push 0x86
call fcn.10015b60
test eax, eax
je 0x1001d11a
cmp dword [esi + 0x24], 0
jne 0x1001d11e
push 0xc
call fcn.1003d386
add esp, 4
test eax, eax
je 0x1001d0ec
mov dword [eax], vtable.CImpIRowsetUpdate.0
mov dword [eax + 4], 0
mov dword [eax + 8], esi
jmp 0x1001d0ee
xor eax, eax
mov dword [esi + 0x24], eax
test eax, eax
jne 0x1001d11e
mov edi, 0x8007000e
mov eax, dword [esp + 0x14]
test eax, eax
je 0x1001d2d6
push 0x10068c38
push eax
push edi
push dword [esi + 0x38]
call fcn.10010bd0
jmp 0x1001d2f0
or dword [esi + 0x60], 0x10
test byte [esp + 0x24], 1
je 0x1001d1aa
xor ebx, ebx
jmp 0x1001d130
mov ebp, dword [esp + ebx*4 + 0x34]
mov ecx, dword [esi + 0xa0]
push ebp
call fcn.10015b60
cmp eax, 1
jne 0x1001d1a4
movdqu xmm0, xmmword [0x10056c68]
push 8
push dword [esp + 0x88]
lea eax, [esi + 0x98]
push dword [esp + 0x88]
push dword [esp + 0x64]
push eax
sub esp, 0x10
mov eax, esp
push ebp
movdqu xmmword [eax], xmm0
call fcn.1003ccf0
mov edi, eax
test edi, edi
js 0x1001d0fa
mov ecx, dword [esi + 0xa0]
push ebp
call fcn.10015160
test byte [eax + 0x28], 2
jne 0x1001ce16
mov edi, 0x40eda
mov dword [esp + 0x1c], 1
inc ebx
cmp ebx, 2
jb 0x1001d130
mov ecx, dword [esi + 0xa0]
push 0x7c
call fcn.10015b60
test eax, eax
je 0x1001d20f
push 0x2c
call fcn.1003d386
add esp, 4
mov dword [esp + 0x58], eax
mov dword [esp + 0x44], 1
test eax, eax
je 0x1001d1e1
push dword [esi + 8]
mov ecx, eax
call fcn.10018880
jmp 0x1001d1e3
xor eax, eax
mov dword [esp + 0x44], 0xffffffff
mov dword [esi + 0x34], eax
test eax, eax
je 0x1001d0f5
mov ecx, eax
call fcn.10019300
mov edi, eax
test edi, edi
js 0x1001d0fa
mov ecx, dword [esi + 0x34]
call fcn.10019420
mov ecx, dword [esi + 0xa0]
push 0x9f
call fcn.10015b60
test eax, eax
jne 0x1001d237
mov ecx, dword [esi + 0xa0]
push 0x117
call fcn.10015b60
test eax, eax
je 0x1001d26b
cmp dword [esp + 0x28], 1
jne 0x1001d26b
push 0xc
call fcn.1003d386
add esp, 4
test eax, eax
je 0x1001d25e
mov dword [eax], vtable.CImpIRowsetIndex.0
mov dword [eax + 4], 0
mov dword [eax + 8], esi
jmp 0x1001d260
xor eax, eax
mov dword [esi + 0x1c], eax
test eax, eax
je 0x1001d0f5
push 0x30
call fcn.1003d386
add esp, 4
mov dword [esp + 0x58], eax
mov dword [esp + 0x44], 2
test eax, eax
je 0x1001d292
push dword [esi + 8]
mov ecx, eax
push esi
call fcn.10001120
jmp 0x1001d294
xor eax, eax
mov dword [esp + 0x44], 0xffffffff
mov dword [esi + 0xc], eax
test eax, eax
je 0x1001d0f5
push 1
push eax
call fcn.10001c30
test eax, eax
js 0x1001d0f5
mov ecx, dword [esi + 0xa4]
push 0xec
call fcn.10015b60
or dword [esi + 0x60], 0x203
mov dword [esi + 0x44], eax
jmp 0x1001d0fa
test edi, edi
jns 0x1001d2f2
mov eax, dword [esi + 0x38]
push 0
push 0x10068c38
push edi
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.100105d0
test edi, edi
jne 0x1001d309
cmp dword [esp + 0x1c], 1
jne 0x1001d530
mov eax, 0x40eda
jmp 0x1001d532
test edi, edi
jns 0x1001d530
mov eax, dword [esi + 0x38]
test eax, eax
je 0x1001d328
mov eax, dword [eax + 0x1c]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov dword [esi + 0x38], 0
mov ecx, dword [esi + 0x3c]
test ecx, ecx
je 0x1001d349
call fcn.100095c0
mov ecx, dword [esi + 0x3c]
mov eax, dword [ecx]
call dword [eax + 0x18]
push eax
mov ecx, dword [eax]
call dword [ecx + 8]
mov dword [esi + 0x3c], 0
mov ecx, dword [esi + 0x40]
test ecx, ecx
je 0x1001d35c
call fcn.10039b10
mov dword [esi + 0x40], 0
cmp dword [esp + 0x2c], 1
mov ebx, dword [esp + 0x4c]
jne 0x1001d37d
mov eax, dword [esi + 0x6c]
cmp eax, 0xffffffff
je 0x1001d37d
push eax
push ebx
call sub.msjet40.dll_Ordinal_108
mov dword [esi + 0x6c], 0xffffffff
cmp dword [esp + 0x30], 1
mov dword [esi + 0x6c], 0xffffffff
jne 0x1001d3a1
mov eax, dword [esi + 0x70]
cmp eax, 0xffffffff
je 0x1001d3a1
push eax
push ebx
call sub.msjet40.dll_Ordinal_108
mov dword [esi + 0x70], 0xffffffff
mov ebx, dword [esi + 0xc]
mov dword [esi + 0x70], 0xffffffff
test ebx, ebx
je 0x1001d3bf
mov ecx, ebx
call fcn.10001170
push ebx
call fcn.1003d3fc
add esp, 4
mov eax, dword [esi + 0x18]
test eax, eax
je 0x1001d3d5
push eax
mov dword [eax], vtable.CImpIRowsetIdentity.0
call fcn.1003d3fc
add esp, 4
mov eax, dword [esi + 0x1c]
test eax, eax
je 0x1001d3eb
push eax
mov dword [eax], vtable.CImpIRowsetIndex.0
call fcn.1003d3fc
add esp, 4
mov eax, dword [esi + 0x20]
test eax, eax
je 0x1001d401
push eax
mov dword [eax], vtable.CImpIRowsetInfo.0
call fcn.1003d3fc
add esp, 4
mov eax, dword [esi + 0x10]
test eax, eax
je 0x1001d417
push eax
mov dword [eax], vtable.CImpIRowsetLocate.0
call fcn.1003d3fc
add esp, 4
mov eax, dword [esi + 0x24]
test eax, eax
je 0x1001d42d
push eax
mov dword [eax], vtable.CImpIRowsetUpdate.0
call fcn.1003d3fc
add esp, 4
mov eax, dword [esi + 0x28]
test eax, eax
je 0x1001d443
push eax
mov dword [eax], vtable.CImpIColumnsInfo.0
call fcn.1003d3fc
add esp, 4
mov eax, dword [esi + 0x2c]
test eax, eax
je 0x1001d459
push eax
mov dword [eax], vtable.CImpIColumnsRowset.0
call fcn.1003d3fc
add esp, 4
mov eax, dword [esi + 0x30]
test eax, eax
je 0x1001d46f
push eax
mov dword [eax], vtable.CImpIConvertType.0
call fcn.1003d3fc
add esp, 4
mov ebx, dword [esi + 0x68]
test ebx, ebx
je 0x1001d486
mov ecx, ebx
call fcn.10010c10
push ebx
call fcn.1003d3fc
add esp, 4
mov edx, dword [esi + 0x8c]
test edx, edx
je 0x1001d4a0
mov eax, dword [0x1007a1e0]
test eax, eax
je 0x1001d4a0
mov ecx, dword [eax]
push edx
push eax
call dword [ecx + 0x14]
mov ecx, dword [esi + 0x94]
test ecx, ecx
je 0x1001d4b1
mov eax, dword [ecx]
push 1
call dword [eax + 4]
mov dword [esi + 0xb0], 0
mov dword [esi + 0xb4], 0
mov dword [esi + 0xc], 0
mov dword [esi + 0x18], 0
mov dword [esi + 0x1c], 0
mov dword [esi + 0x20], 0
mov dword [esi + 0x14], 0
mov dword [esi + 0x10], 0
mov dword [esi + 0x24], 0
mov dword [esi + 0x28], 0
mov dword [esi + 0x2c], 0
mov dword [esi + 0x30], 0
mov dword [esi + 0x68], 0
mov dword [esi + 0x8c], 0
mov dword [esi + 0x90], 0
mov dword [esi + 0x94], 0
mov eax, edi
mov ecx, dword [esp + 0x3c]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret 0x40