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

Disassembly:
push ebp
mov ebp, esp
sub esp, 8
push 0x401686
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xc4
push ebx
push esi
push edi
mov dword [ebp - 8], esp
mov dword [ebp - 4], 0x401438
mov eax, dword [0x503110]
lea ecx, [ebp - 0x64]
xor esi, esi
push eax
push ecx
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x1c], esi
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x2c], esi
mov dword [ebp - 0x64], esi
call dword [sym.imp.MSVBVM60.DLL___vbaAryLock]
mov ecx, dword [ebp - 0x64]
cmp ecx, esi
je 0x4f9295
cmp word [ecx], 1
jne 0x4f9295
mov edx, dword [ebp + 8]
mov eax, dword [ecx + 0x10]
mov esi, dword [edx]
mov edx, dword [ecx + 0x14]
sub esi, edx
cmp esi, eax
jb 0x4f928d
call dword [sym.imp.MSVBVM60.DLL___vbaGenerateBoundsError]
mov ecx, dword [ebp - 0x64]
lea eax, [esi + esi*2]
shl eax, 4
jmp 0x4f929e
call dword [sym.imp.MSVBVM60.DLL___vbaGenerateBoundsError]
mov ecx, dword [ebp - 0x64]
mov esi, dword [ecx + 0xc]
mov edi, dword [sym.imp.MSVBVM60.DLL___vbaStrCmp]
add esi, eax
mov eax, dword [0x5030d0]
push eax
push 0x40d064
call edi
test eax, eax
jne 0x4f9772
mov ecx, dword [esi + 4]
push ecx
push 0x40cb8c
call edi
test eax, eax
je 0x4f9772
cmp word [esi + 0x14], 0xffff
je 0x4f9772
mov edx, dword [esi + 4]
push edx
push 0x40d044
call edi
mov ebx, eax
mov eax, dword [esi + 4]
neg ebx
sbb ebx, ebx
push eax
push 0x40d054
neg ebx
call edi
neg eax
mov ecx, dword [esi + 4]
sbb eax, eax
push ecx
neg eax
and ebx, eax
push 0x40ce94
neg ebx
sbb ebx, ebx
neg ebx
call edi
neg eax
sbb eax, eax
neg eax
and ebx, eax
mov eax, dword [0x503178]
neg ebx
mov cl, byte [eax + 0x90]
sbb ebx, ebx
xor edx, edx
neg ebx
cmp cl, 1
setne dl
or ebx, edx
je 0x4f9772
movsx ecx, word [esi]
mov dword [ebp - 0x70], ecx
fild dword [ebp - 0x70]
fstp dword [ebp - 0x74]
fld dword [0x5030c4]
fcomp dword [ebp - 0x74]
fnstsw ax
test ah, 0x41
je 0x4f935f
mov edi, 1
jmp 0x4f9361
xor edi, edi
xor ebx, ebx
mov bl, byte [esi + 0x2a]
cmp ebx, 2
jb 0x4f9371
call dword [sym.imp.MSVBVM60.DLL___vbaGenerateBoundsError]
mov edx, dword [0x50306c]
mov dword [ebp - 0x80], 1
mov ax, word [edx + ebx*2]
add ax, word [esi]
jo 0x4f97bd
movsx ecx, ax
mov dword [ebp - 0x78], ecx
fild dword [ebp - 0x78]
fstp dword [ebp - 0x7c]
fld dword [0x5030c4]
fcomp dword [ebp - 0x7c]
fnstsw ax
test ah, 1
je 0x4f93ae
mov dword [ebp - 0x80], 0
movsx edx, word [esi + 2]
mov dword [ebp - 0x84], edx
mov dword [ebp - 0x8c], 1
fild dword [ebp - 0x84]
fstp dword [ebp - 0x88]
fld dword [0x5030c8]
fcomp dword [ebp - 0x88]
fnstsw ax
test ah, 0x41
jne 0x4f93eb
mov dword [ebp - 0x8c], 0
xor ebx, ebx
mov bl, byte [esi + 0x2a]
cmp ebx, 2
jb 0x4f93fb
call dword [sym.imp.MSVBVM60.DLL___vbaGenerateBoundsError]
mov eax, dword [0x503088]
mov cx, word [eax + ebx*2]
add cx, word [esi + 2]
jo 0x4f97bd
movsx edx, cx
mov dword [ebp - 0x90], edx
fild dword [ebp - 0x90]
fstp dword [ebp - 0x94]
fld dword [0x5030c8]
fcomp dword [ebp - 0x94]
fnstsw ax
test ah, 1
jne 0x4f943d
mov eax, 1
jmp 0x4f943f
xor eax, eax
mov ecx, dword [ebp - 0x80]
or edi, ecx
mov ecx, dword [ebp - 0x8c]
neg edi
sbb edi, edi
neg edi
or edi, ecx
neg edi
sbb edi, edi
neg edi
or edi, eax
jne 0x4f9768
mov eax, dword [0x503010]
test eax, eax
jne 0x4f947e
push 0x503010
push 0x406f1c
call dword [sym.imp.MSVBVM60.DLL___vbaNew2]
mov eax, dword [0x503010]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x334]
lea edx, [ebp - 0x18]
push eax
push edx
call dword [sym.imp.MSVBVM60.DLL___vbaObjSet]
mov edi, eax
lea ecx, [ebp - 0x1c]
push ecx
push 0
mov eax, dword [edi]
push edi
call dword [eax + 0x40]
test eax, eax
fnclex
jge 0x4f94b5
push 0x40
push 0x40bf7c
push edi
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaHresultCheckObj]
mov edi, dword [ebp - 0x1c]
xor eax, eax
mov al, byte [esi + 0x2a]
cmp eax, 2
mov dword [ebp - 0x34], eax
jb 0x4f94cb
call dword [sym.imp.MSVBVM60.DLL___vbaGenerateBoundsError]
xor ebx, ebx
mov bl, byte [esi + 0x2a]
cmp ebx, 2
jb 0x4f94db
call dword [sym.imp.MSVBVM60.DLL___vbaGenerateBoundsError]
mov ecx, dword [0x503088]
lea eax, [ebp - 0x28]
push eax
mov eax, dword [ebp - 0x34]
mov edx, dword [edi]
mov cx, word [ecx + eax*2]
imul cx, word [esi + 0x10]
jo 0x4f97bd
movsx eax, cx
movsx ecx, word [esi + 2]
mov dword [ebp - 0x98], eax
mov dword [ebp - 0xa0], ecx
fild dword [ebp - 0x98]
push ecx
fstp dword [ebp - 0x9c]
fild dword [ebp - 0xa0]
fstp dword [ebp - 0xa4]
fld dword [0x5030c8]
fsub dword [ebp - 0xa4]
fadd dword [ebp - 0x9c]
fnstsw ax
test al, 0xd
jne 0x4f97b8
mov eax, dword [0x50306c]
fstp dword [esp]
mov cx, word [eax + ebx*2]
imul cx, word [esi + 0xe]
jo 0x4f97bd
movsx eax, cx
movsx ecx, word [esi]
mov dword [ebp - 0xa8], eax
mov dword [ebp - 0xb0], ecx
fild dword [ebp - 0xa8]
push ecx
fstp dword [ebp - 0xac]
fild dword [ebp - 0xb0]
fstp dword [ebp - 0xb4]
fld dword [0x5030c4]
fsub dword [ebp - 0xb4]
fadd dword [ebp - 0xac]
fnstsw ax
test al, 0xd
jne 0x4f97b8
fstp dword [esp]
push edi
call dword [edx + 0x284]
test eax, eax
fnclex
jge 0x4f95c1
push 0x284
push 0x40bf8c
push edi
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaHresultCheckObj]
mov eax, dword [0x503010]
test eax, eax
jne 0x4f95df
push 0x503010
push 0x406f1c
call dword [sym.imp.MSVBVM60.DLL___vbaNew2]
mov eax, dword [0x503010]
mov edx, dword [eax]
push eax
call dword [edx + 0x334]
push eax
lea eax, [ebp - 0x20]
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaObjSet]
mov edi, eax
lea edx, [ebp - 0x24]
push edx
push 0
mov ecx, dword [edi]
push edi
call dword [ecx + 0x40]
test eax, eax
fnclex
jge 0x4f9616
push 0x40
push 0x40bf7c
push edi
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaHresultCheckObj]
mov edi, dword [ebp - 0x24]
xor eax, eax
mov al, byte [esi + 0x2a]
cmp eax, 2
mov dword [ebp - 0x4c], eax
jb 0x4f962c
call dword [sym.imp.MSVBVM60.DLL___vbaGenerateBoundsError]
xor ebx, ebx
mov bl, byte [esi + 0x2a]
cmp ebx, 2
jb 0x4f963c
call dword [sym.imp.MSVBVM60.DLL___vbaGenerateBoundsError]
mov eax, dword [0x503088]
lea edx, [ebp - 0x2c]
push edx
mov edx, dword [ebp - 0x4c]
mov ecx, dword [edi]
mov ax, word [eax + edx*2]
push ecx
imul ax, word [esi + 0x10]
jo 0x4f97bd
movsx edx, ax
movsx eax, word [esi + 2]
mov dword [ebp - 0xb8], edx
mov dword [ebp - 0xc0], eax
fild dword [ebp - 0xb8]
mov edx, dword [0x50306c]
fstp dword [ebp - 0xbc]
fild dword [ebp - 0xc0]
fstp dword [ebp - 0xc4]
fld dword [0x5030c8]
fsub dword [ebp - 0xc4]
fadd dword [ebp - 0xbc]
fnstsw ax
test al, 0xd
jne 0x4f97b8
mov ax, word [edx + ebx*2]
imul ax, word [esi + 0xe]
fstp dword [esp]
jo 0x4f97bd
movsx edx, ax
movsx eax, word [esi]
mov dword [ebp - 0xc8], edx
mov dword [ebp - 0xd0], eax
fild dword [ebp - 0xc8]
push ecx
fstp dword [ebp - 0xcc]
fild dword [ebp - 0xd0]
fstp dword [ebp - 0xd4]
fld dword [0x5030c4]
fsub dword [ebp - 0xd4]
fadd dword [ebp - 0xcc]
fnstsw ax
test al, 0xd
jne 0x4f97b8
fstp dword [esp]
push edi
call dword [ecx + 0x284]
test eax, eax
fnclex
jge 0x4f9722
push 0x284
push 0x40bf8c
push edi
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaHresultCheckObj]
mov edx, dword [ebp - 0x2c]
mov ebx, dword [ebp - 0x28]
or edi, 0xffffffff
xor ecx, ecx
cmp edx, edi
lea eax, [ebp - 0x24]
setne cl
neg ecx
xor edx, edx
cmp ebx, 0xff00ff
setne dl
neg edx
and ecx, edx
push eax
mov esi, ecx
lea ecx, [ebp - 0x20]
lea edx, [ebp - 0x1c]
push ecx
lea eax, [ebp - 0x18]
push edx
push eax
push 4
call dword [sym.imp.MSVBVM60.DLL___vbaFreeObjList]
add esp, 0x14
test si, si
je 0x4f9768
mov dword [ebp - 0x14], edi
lea ecx, [ebp - 0x64]
push ecx
call dword [sym.imp.MSVBVM60.DLL___vbaAryUnlock]
wait
push 0x4f97a1
jmp 0x4f9796
lea eax, [ebp - 0x64]
push eax
call dword [sym.imp.MSVBVM60.DLL___vbaAryUnlock]
ret
jmp 0x40168c
call dword [sym.imp.MSVBVM60.DLL___vbaErrorOverflow]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop