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

Disassembly:
sub esp, 0x34
push ebx
push ebp
push esi
push edi
push dword [esp + 0x50]
mov ebp, ecx
lea eax, [esp + 0x30]
push dword [esp + 0x50]
push eax
lea ebx, [ebp + 4]
mov ecx, ebx
mov dword [esp + 0x24], ebx
call fcn.0069fd50
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x40], edx
mov ecx, dword [eax + 8]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x50], eax
cmp eax, 8
jae 0x695640
mov dword [esp + 0x2c], str.Invalid_record
mov ecx, ebx
mov esi, dword [esp + 0x48]
lea eax, [esp + 0x2c]
push eax
push esi
mov word [esp + 0x3c], 0x103
call fcn.0067bc20
mov eax, esi
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret 0xc
push dword [ecx]
mov ecx, ebp
call fcn.0067e3c0
mov esi, eax
mov dword [esp + 0x14], eax
test esi, esi
je 0x695614
cmp byte [esi + 4], 0xe
jne 0x695660
mov esi, dword [esi + 0x10]
mov dword [esp + 0x14], esi
cmp byte [esi + 4], 0xd
je 0x695670
mov dword [esp + 0x2c], str.Invalid_type_for_value
jmp 0x69561c
mov eax, dword [esp + 0x4c]
mov eax, dword [eax + 8]
mov dword [esp + 0x20], eax
test eax, 0xfffffc00
je 0x69568c
mov dword [esp + 0x2c], str.Invalid_calling_convention_ID
jmp 0x69561c
mov ecx, dword [ebp + 0xec]
call fcn.00408fc6
cmp dword [esp + 0x50], 0x10
mov ebx, dword [eax + 0xc]
mov dword [esp + 0x24], ebx
jbe 0x6956b3
mov eax, dword [esp + 0x4c]
mov ebx, dword [eax + 0x80]
mov dword [esp + 0x24], ebx
mov edi, dword [ebp + 0xec]
lea eax, [esp + 0x3c]
push 0x4c
mov word [esp + 0x38], 0x105
mov dword [esp + 0x30], eax
call fcn.0040ff38
add esp, 4
test eax, eax
je 0x6956eb
push edi
lea ecx, [esp + 0x30]
push ecx
push ebx
push 0
push esi
mov ecx, eax
call fcn.00409741
mov edi, eax
jmp 0x6956ed
xor edi, edi
lea eax, [esp + 0x1c]
mov dword [esp + 0x1c], edi
push eax
lea ecx, [ebp + 0x134]
call fcn.0040b3d9
mov ecx, 0xc00f
mov byte [esp + 0x13], 1
mov dword [eax], esi
mov ax, word [edi + 0xa]
and ax, cx
mov ecx, dword [esp + 0x20]
shl ecx, 4
or ax, cx
mov word [edi + 0xa], ax
mov ecx, dword [esp + 0x4c]
mov eax, dword [ecx + 0x10]
or eax, dword [ecx + 0x14]
jne 0x695733
mov byte [esp + 0x13], 0
mov edx, dword [ecx + 0x18]
mov eax, dword [ecx + 0x1c]
push edx
mov dword [esp + 0x24], edx
mov dword [esp + 0x34], eax
call fcn.0067dc10
add esp, 4
mov ecx, edi
push eax
call fcn.0040c1ee
mov eax, dword [esp + 0x4c]
mov ecx, ebp
push dword [eax + 0x20]
lea eax, [esp + 0x2c]
push eax
call fcn.0067c490
xor ebx, ebx
mov eax, dword [eax]
mov dword [edi + 0x48], eax
cmp dword [edi + 0x40], ebx
je 0x6957c3
mov eax, dword [edi + 0x48]
lea ecx, [esp + 0x28]
push 0x3e
push ebx
mov dword [esp + 0x30], eax
call fcn.00414281
test al, al
je 0x6957bd
mov eax, dword [esi + 0xc]
mov ecx, edi
push 0x3e
push ebx
mov esi, dword [eax + ebx*4 + 4]
call fcn.00402775
push dword [esi + 0x10]
lea eax, [esp + 0x30]
push dword [ebp + 0xe8]
push eax
call fcn.00405434
add esp, 0xc
mov ecx, edi
push dword [eax]
push ebx
call fcn.0040563c
mov esi, dword [esp + 0x14]
inc ebx
cmp ebx, dword [edi + 0x40]
jne 0x695771
lea eax, [esp + 0x14]
mov word [esp + 0x14], 0
push eax
mov eax, dword [esp + 0x50]
mov ecx, ebp
push dword [eax + 0x2c]
push dword [eax + 0x28]
lea eax, [esp + 0x34]
push eax
call fcn.00684270
mov ecx, dword [esp + 0x28]
test ecx, ecx
je 0x6957fd
mov eax, dword [esp + 0x48]
mov dword [eax], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret 0xc
push dword [esp + 0x14]
mov ecx, edi
call fcn.0040db52
mov edx, dword [esp + 0x4c]
mov ebx, dword [edx + 0x30]
mov eax, ebx
mov ecx, dword [edx + 0x34]
or eax, ecx
mov dword [esp + 0x28], ecx
je 0x695885
mov ecx, dword [ebp + 0x114]
mov eax, 0x2aaaaaab
sub ecx, dword [ebp + 0x110]
imul ecx
mov eax, dword [esp + 0x28]
sar edx, 2
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov edx, ebx
add edx, 0xffffffff
adc eax, 0xffffffff
test eax, eax
jb 0x695860
ja 0x69584f
cmp edx, ecx
jb 0x695860
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x2c], str.Invalid_ID
jmp 0x69561e
mov ecx, dword [ebp + 0x110]
lea eax, [ebx - 1]
sub esp, 8
lea eax, [eax + eax*2]
lea eax, [ecx + eax*8]
mov ecx, esp
push eax
call fcn.00410b90
mov ecx, edi
call fcn.00404eda
mov edx, dword [esp + 0x4c]
mov eax, dword [edi + 0x14]
and eax, 0xf
cmp eax, 7
je 0x6958ac
cmp eax, 8
je 0x6958ac
push dword [edx + 0x38]
call fcn.0067df50
add esp, 4
mov ecx, edi
push eax
call fcn.004143ee
mov edx, dword [esp + 0x4c]
mov ebx, dword [esp + 0x50]
cmp ebx, 8
jbe 0x695932
mov eax, dword [edx + 0x40]
mov ecx, dword [edx + 0x40]
mov dword [esp + 0x28], eax
mov eax, dword [edx + 0x44]
or ecx, eax
mov dword [esp + 0x14], eax
je 0x695932
mov ecx, dword [ebp + 0x120]
mov eax, 0x2aaaaaab
sub ecx, dword [ebp + 0x11c]
imul ecx
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x14]
sar edx, 2
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
mov edx, eax
add edx, 0xffffffff
adc ecx, 0xffffffff
test ecx, ecx
jb 0x695909
ja 0x69584f
cmp edx, ebx
jae 0x69584f
mov ecx, dword [ebp + 0x11c]
lea eax, [eax + eax*2]
sub esp, 0x18
lea eax, [eax - 3]
lea eax, [ecx + eax*8]
mov ecx, esp
push eax
call fcn.0040c00e
mov ecx, edi
call fcn.0040c671
mov ebx, dword [esp + 0x50]
mov edx, dword [esp + 0x4c]
xor eax, eax
cmp ebx, 9
jbe 0x695944
push dword [edx + 0x48]
call fcn.0067df20
add esp, 4
shl eax, 6
xor eax, dword [edi + 0x14]
and eax, 0xc0
xor dword [edi + 0x14], eax
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x4c]
cmp edx, 0xa
jbe 0x69598c
mov ebx, dword [ecx + 0x50]
mov eax, ebx
or eax, dword [ecx + 0x54]
je 0x69598c
lea eax, [ebx - 1]
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], eax
lea ecx, [ebp + 0x2b4]
lea eax, [esp + 0x2c]
push eax
call fcn.00405eac
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x4c]
cmp edx, 0xb
jbe 0x6959b0
push dword [ecx + 0x58]
call fcn.0067d930
mov edx, dword [esp + 0x24]
add esp, 4
shl eax, 8
xor eax, dword [edi + 0x14]
and eax, 0x300
xor dword [edi + 0x14], eax
jmp 0x6959be
mov edx, dword [esp + 0x20]
push edx
push edi
call fcn.006a26e0
add esp, 8
cmp dword [esp + 0x50], 0xc
jbe 0x6959ff
mov ecx, dword [esp + 0x4c]
mov edx, dword [ecx + 0x60]
test edx, edx
je 0x695a17
mov eax, dword [ebp + 0x17c]
mov ecx, dword [ebp + 0x178]
sub eax, ecx
sar eax, 2
cmp edx, eax
jbe 0x6959f6
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x2c], str.Invalid_function_comdat_ID
jmp 0x69561e
mov eax, dword [ecx + edx*4 - 4]
mov dword [edi + 0x20], eax
jmp 0x695a13
push edx
call fcn.00681950
add esp, 4
test al, al
je 0x695a13
mov dword [edi + 0x20], 1
mov ecx, dword [esp + 0x4c]
cmp dword [esp + 0x50], 0xd
jbe 0x695a47
mov edx, dword [ecx + 0x68]
mov eax, edx
or eax, dword [ecx + 0x6c]
je 0x695a47
lea eax, [edx - 1]
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], eax
lea ecx, [ebp + 0x2a8]
lea eax, [esp + 0x2c]
push eax
call fcn.00405eac
mov ecx, dword [esp + 0x4c]
cmp dword [esp + 0x50], 0xe
jbe 0x695a77
mov edx, dword [ecx + 0x70]
mov eax, edx
or eax, dword [ecx + 0x74]
je 0x695a77
lea eax, [edx - 1]
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], eax
lea ecx, [ebp + 0x2c0]
lea eax, [esp + 0x2c]
push eax
call fcn.00405eac
mov ecx, dword [esp + 0x4c]
cmp dword [esp + 0x50], 0xf
jbe 0x695a9c
push dword [ecx + 0x78]
call fcn.0067d960
movzx ecx, al
add esp, 4
mov eax, dword [edi + 0x14]
shl ecx, 0xe
and eax, 0xffffbfff
or ecx, eax
mov dword [edi + 0x14], ecx
push edi
call fcn.00682500
add esp, 4
cmp dword [esp + 0x50], 0x12
jbe 0x695aca
mov eax, dword [esp + 0x4c]
mov ecx, dword [eax + 0x88]
add ecx, dword [ebp + 0xc4]
push dword [eax + 0x90]
push ecx
mov ecx, edi
call fcn.00410244
push dword [esp + 0x24]
push esi
call fcn.00414b1e
add esp, 8
lea ecx, [ebp + 0x144]
push eax
push edi
call fcn.00401c85
cmp byte [esp + 0x13], 0
jne 0x695b32
mov eax, 0x80
lea ecx, [ebp + 0x2ec]
or word [edi + 0x16], ax
mov eax, dword [ecx + 4]
cmp eax, dword [ecx + 8]
je 0x695b0a
mov dword [eax], edi
add dword [ecx + 4], 4
jmp 0x695b15
lea edx, [esp + 0x1c]
push edx
push eax
call fcn.00412cd8
lea eax, [esp + 0x1c]
push eax
lea ecx, [ebp + 0x31c]
call fcn.00405b91
mov dword [eax], 0
mov dword [eax + 4], 0
mov eax, dword [esp + 0x48]
pop edi
pop esi
pop ebp
mov dword [eax], 0
pop ebx
add esp, 0x34
ret 0xc