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

Disassembly:
sub esp, 0x48
mov edx, dword [esp + 0x4c]
push ebx
push ebp
push esi
mov ebx, dword [edx]
push edi
mov edi, dword [esp + 0x64]
mov dword [esp + 0x24], ebx
mov esi, dword [ebx + 8]
mov dword [esp + 0x38], esi
mov ebp, dword [edi + 0x4c]
mov dword [esp + 0x18], ebp
mov ecx, dword [esi + 0x74]
mov dword [esp + 0x34], ecx
cmp dword [esi + 0x78], ecx
jg 0x69461a
push 0
push 0
push 0
push 0x11
push esi
call fcn.00674520
mov edx, dword [esp + 0x70]
add esp, 0x14
mov dword [esp + 0x34], eax
jmp 0x694650
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4], 0x11
mov dword [eax + ecx*4 + 4], 0
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
lea ecx, [ecx]
push edi
push edx
push ebx
call fcn.006d18c0
dec dword [ebx + 0x38]
add esp, 0xc
mov eax, dword [ebx + 0x38]
mov dword [esp + 0x30], eax
mov eax, dword [edi + 4]
mov dword [esp + 0x10], eax
mov eax, dword [ebx + 0x2c]
inc eax
mov dword [ebx + 0x2c], eax
mov dword [edi + 0x34], eax
mov dword [esp + 0x20], eax
movzx eax, byte [edi + 0x38]
lea ecx, [eax + eax*8]
mov eax, dword [esp + 0x5c]
mov eax, dword [eax + 4]
mov eax, dword [eax + ecx*8 + 0x18]
mov ecx, 0xa
movzx eax, word [eax + 0x26]
cwde
cdq
idiv ecx
mov ecx, eax
mov eax, edx
cdq
movzx ecx, cx
mov edi, eax
test edx, edx
jne 0x6946ba
cmp edi, 5
jae 0x6946ba
test edx, edx
jne 0x6946b5
cmp edi, 1
jb 0x6946c0
add edi, 0xffffffff
jmp 0x6946bd
add edi, 0xfffffffe
adc edx, 0xffffffff
cmp cx, 0x3c
jg 0x69471b
cmp cx, 3
jl 0x6946e1
movsx ecx, cx
sub ecx, 3
add edi, 8
mov eax, edi
adc edx, 0
call fcn.0054dc20
jmp 0x6946f8
movsx eax, cx
mov ecx, 3
sub ecx, eax
add edi, 8
mov eax, edi
adc edx, 0
call fcn.0054dda0
mov edi, eax
test edx, edx
ja 0x69471b
jb 0x694708
cmp edi, 0x2710
jae 0x69470f
mov edi, 0x2710
jmp 0x694720
test edx, edx
jne 0x69471b
cmp edi, 0x989680
jbe 0x694728
mov edi, 0x989680
mov dword [esp + 0x2c], 0
mov ecx, dword [esi + 0x74]
mov edx, dword [esp + 0x20]
cmp dword [esi + 0x78], ecx
jg 0x694745
push 0
push edx
push edi
push 0x4c
push esi
call fcn.00674520
add esp, 0x14
jmp 0x694770
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4], 0x4c
mov dword [eax + ecx*4 + 4], edi
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esi + 0x74]
mov dword [esp + 0x20], ecx
cmp dword [esi + 0x78], ecx
jg 0x694799
push 0
push 0
push dword [esp + 0x18]
push 0x26
push esi
call fcn.00674520
mov edx, dword [esp + 0x24]
add esp, 0x14
mov dword [esp + 0x20], eax
jmp 0x6947cc
mov edx, dword [esp + 0x10]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4], 0x26
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x5c]
mov edi, dword [eax + 0x70]
mov eax, dword [eax + 0x64]
lea eax, [eax + eax*2]
shl eax, 4
add eax, edi
cmp edi, eax
jae 0x69484c
mov esi, dword [esp + 0x10]
mov ebp, eax
test byte [edi + 0xa], 2
mov eax, dword [edi]
jne 0x694839
mov dword [esp + 0x40], fcn.0065dec0
mov ecx, 3
mov word [esp + 0x50], cx
mov dword [esp + 0x44], 0x6b9b00
mov dword [esp + 0x54], esi
test eax, eax
je 0x694828
push eax
lea eax, [esp + 0x40]
push eax
call fcn.006df920
add esp, 8
cmp word [esp + 0x50], 0
je 0x694839
push 0x10
push dword [esp + 0x34]
push dword [edi]
push ebx
call fcn.0069c5e0
add esp, 0x10
add edi, 0x30
cmp edi, ebp
jb 0x6947e8
mov esi, dword [esp + 0x38]
mov ebp, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
test dword [ebp + 0x2c], 0x100
je 0x694945
mov al, byte [ebx + 0x13]
test al, al
jne 0x694868
inc dword [ebx + 0x2c]
mov edi, dword [ebx + 0x2c]
jmp 0x694877
dec al
mov byte [ebx + 0x13], al
movzx eax, al
mov edi, dword [ebx + eax*4 + 0x98]
mov ecx, dword [esi + 0x74]
cmp dword [esi + 0x78], ecx
jg 0x694896
push 0
push edi
push dword [esp + 0x18]
push 0x86
push esi
call fcn.00674520
add esp, 0x14
jmp 0x6948c5
mov ebx, dword [esp + 0x24]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4], 0x86
mov dword [eax + ecx*4 + 4], edx
mov dword [eax + ecx*4 + 8], edi
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esp + 0x64]
mov edx, dword [esi + 0x74]
mov eax, dword [eax + 0x34]
mov dword [esp + 0x28], eax
cmp dword [esi + 0x78], edx
jg 0x6948ee
push edi
push 0
push eax
push 0xb2
push esi
call fcn.00674520
add esp, 0x14
mov edx, eax
jmp 0x694921
mov ebp, dword [esp + 0x28]
lea eax, [edx + 1]
mov dword [esi + 0x74], eax
lea ecx, [edx + edx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4 + 4], ebp
mov ebp, dword [esp + 0x18]
mov dword [eax + ecx*4], 0xb2
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], edi
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esi]
cmp byte [eax + 0x57], 0
jne 0x694a74
mov eax, dword [esi + 0x70]
lea ecx, [edx + edx*4]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], 1
jmp 0x694a74
movzx ecx, word [ebp + 0x18]
mov edx, dword [ebp + 0x20]
mov dword [esp + 0x28], edx
mov dword [esp + 0x1c], ecx
cmp ecx, 1
jne 0x694985
mov al, byte [ebx + 0x13]
test al, al
jne 0x69496e
inc dword [ebx + 0x2c]
xor edi, edi
mov eax, dword [ebx + 0x2c]
mov dword [esp + 0x14], eax
jmp 0x6949b9
dec al
xor edi, edi
mov byte [ebx + 0x13], al
movzx eax, al
mov eax, dword [ebx + eax*4 + 0x98]
mov dword [esp + 0x14], eax
jmp 0x6949b9
mov edi, dword [ebx + 0x1c]
mov edx, dword [ebx + 0x20]
mov dword [esp + 0x14], edx
cmp ecx, edi
jg 0x6949a0
lea eax, [edx + ecx]
sub edi, ecx
mov dword [ebx + 0x20], eax
mov dword [ebx + 0x1c], edi
jmp 0x6949af
mov eax, dword [ebx + 0x2c]
lea edx, [eax + 1]
add eax, ecx
mov dword [esp + 0x14], edx
mov dword [ebx + 0x2c], eax
xor edi, edi
test ecx, ecx
jle 0x6949ee
mov edx, dword [esp + 0x28]
mov ebx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x14]
lea eax, [edi + ebp]
push eax
mov eax, dword [edx + 4]
movsx eax, word [eax + edi*2]
push eax
push dword [esp + 0x18]
push dword [edx + 0xc]
push esi
call fcn.00699a10
mov edx, dword [esp + 0x3c]
inc edi
add esp, 0x14
cmp edi, ebx
jl 0x6949c1
mov ebx, dword [esp + 0x24]
mov ebp, dword [esp + 0x18]
mov eax, dword [esp + 0x64]
mov edx, dword [esi + 0x74]
mov eax, dword [eax + 0x34]
mov dword [esp + 0x28], eax
cmp dword [esi + 0x78], edx
jg 0x694a1b
mov edi, dword [esp + 0x14]
push edi
push 0
push eax
push 0xb2
push esi
call fcn.00674520
add esp, 0x14
mov edx, eax
jmp 0x694a4e
mov edi, dword [esp + 0x28]
lea eax, [edx + 1]
mov dword [esi + 0x74], eax
lea ecx, [edx + edx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4 + 4], edi
mov edi, dword [esp + 0x14]
mov dword [eax + ecx*4], 0xb2
mov dword [eax + ecx*4 + 8], 0
mov dword [eax + ecx*4 + 0xc], edi
mov dword [eax + ecx*4 + 0x10], 0
mov eax, dword [esi]
cmp byte [eax + 0x57], 0
jne 0x694a6b
mov eax, dword [esi + 0x70]
lea ecx, [edx + edx*4]
mov edx, dword [esp + 0x1c]
mov byte [eax + ecx*4 + 1], 0xfd
mov dword [eax + ecx*4 + 0x10], edx
jmp 0x694a6f
mov edx, dword [esp + 0x1c]
cmp edx, 1
jne 0x694a8e
test edi, edi
je 0x694a99
mov al, byte [ebx + 0x13]
cmp al, 8
jae 0x694a99
movzx eax, al
mov dword [ebx + eax*4 + 0x98], edi
inc byte [ebx + 0x13]
jmp 0x694a99
cmp edx, dword [ebx + 0x1c]
jle 0x694a99
mov dword [ebx + 0x1c], edx
mov dword [ebx + 0x20], edi
mov ecx, dword [esi + 0xc]
mov edx, dword [esp + 0x30]
not edx
mov eax, dword [ecx + 0x3c]
add eax, dword [ecx + 0x38]
jns 0x694ab7
push edx
push esi
push ecx
call fcn.006865c0
add esp, 0xc
jmp 0x694ac0
mov ecx, dword [ecx + 0x40]
mov eax, dword [esi + 0x74]
mov dword [ecx + edx*4], eax
mov eax, dword [esp + 0x64]
mov edx, dword [esp + 0x20]
mov ecx, dword [esi + 0x74]
inc edx
mov edi, dword [eax + 4]
cmp dword [esi + 0x78], ecx
jg 0x694ae5
push 0
push edx
push edi
push 5
push esi
call fcn.00674520
add esp, 0x14
jmp 0x694b14
mov ebp, dword [esp + 0x18]
lea eax, [ecx + 1]
mov dword [esi + 0x74], eax
lea ecx, [ecx + ecx*4]
mov eax, dword [esi + 0x70]
mov dword [eax + ecx*4], 5
mov dword [eax + ecx*4 + 4], edi
mov dword [eax + ecx*4 + 8], edx
mov dword [eax + ecx*4 + 0xc], 0
mov dword [eax + ecx*4 + 0x10], 0
mov ecx, dword [esp + 0x20]
mov edx, dword [esi + 0x74]
test ecx, ecx
jns 0x694b22
lea ecx, [edx - 1]
mov eax, dword [esi]
cmp byte [eax + 0x57], 0
je 0x694b31
mov eax, 0x7c89b4
jmp 0x694b3a
mov eax, dword [esi + 0x70]
lea ecx, [ecx + ecx*4]
lea eax, [eax + ecx*4]
mov dword [eax + 8], edx
and dword [ebp + 0x2c], 0xffbfffff
mov eax, dword [ebx]
test dword [eax + 0x50], 0x100000
jne 0x694be8
mov edx, dword [esp + 0x5c]
mov eax, dword [esp + 0x60]
inc eax
mov dword [esp + 0x60], eax
movzx edi, byte [edx + 0x30]
cmp eax, edi
jge 0x694bde
mov ecx, dword [edx + 4]
mov ebx, eax
imul eax, ebx, 0x58
add edx, 0x34c
mov dword [esp + 0x30], ecx
add edx, eax
lea esp, [esp]
lea eax, [edx - 0x4c]
mov dword [esp + 0x64], eax
movzx eax, byte [edx - 0x14]
lea eax, [eax + eax*8]
test byte [ecx + eax*8 + 0x2c], 8
jne 0x694bc0
mov ebp, dword [edx]
test ebp, ebp
je 0x694bc0
mov ecx, dword [ebp]
mov eax, dword [ebp + 4]
and ecx, dword [esp + 0x68]
and eax, dword [esp + 0x6c]
or ecx, eax
jne 0x694bbc
mov eax, dword [ebp + 0x2c]
and eax, 0x400004
cmp eax, 0x400000
je 0x694bc8
mov ecx, dword [esp + 0x30]
inc ebx
add edx, 0x58
cmp ebx, edi
jl 0x694b80
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x60], ebx
mov eax, dword [esp + 0x60]
cmp eax, edi
mov ebx, dword [esp + 0x24]
mov dword [esp + 0x18], ebp
mov edi, dword [esp + 0x64]
jl 0x694650
mov ecx, dword [esp + 0x34]
mov edx, dword [esi + 0x74]
test ecx, ecx
jns 0x694bf6
lea ecx, [edx - 1]
mov eax, dword [esi]
cmp byte [eax + 0x57], 0
je 0x694c0c
pop edi
pop esi
pop ebp
mov dword [0x7c89bc], edx
pop ebx
add esp, 0x48
ret
mov eax, dword [esi + 0x70]
lea ecx, [ecx + ecx*4]
pop edi
pop esi
pop ebp
mov dword [eax + ecx*4 + 8], edx
pop ebx
add esp, 0x48
ret