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

Disassembly:
sub esp, 0x40
push ebx
mov ebx, dword [esp + 0x54]
push ebp
push esi
mov esi, dword [esp + 0x50]
mov byte [esp + 0xf], 0
mov eax, dword [esi + 8]
mov ecx, dword [esi]
mov dword [esp + 0x14], eax
xor eax, eax
mov dword [esp + 0x18], ecx
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
test ebx, ebx
je 0x678eeb
cmp dword [ebx], 0x40
setge al
dec eax
and ebx, eax
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x3c], ebx
test byte [ecx + 0x44], 0x10
je 0x678f06
mov eax, dword [esp + 0x64]
and eax, 0xfeff
mov dword [esp + 0x1c], eax
mov ebp, eax
jmp 0x678f0e
mov ebp, dword [esp + 0x64]
mov dword [esp + 0x1c], ebp
mov edx, dword [esp + 0x54]
mov eax, dword [edx]
mov dword [esp + 0x10], eax
cmp eax, 0x40
jle 0x678f36
push 0x40
push str.at_most__d_tables_in_a_join
push esi
call fcn.00649670
add esp, 0xc
xor eax, eax
pop esi
pop ebp
pop ebx
add esp, 0x40
ret
mov edx, ebp
and edx, 0x20
mov dword [esp + 0x24], edx
je 0x678f4a
mov eax, 1
mov dword [esp + 0x10], eax
push edi
lea edi, [eax + eax*4]
shl edi, 4
push 0
lea eax, [edi + 0x2f7]
and eax, 0xfffffff8
mov dword [esp + 0x30], eax
add eax, 0x48
push eax
push ecx
call fcn.006478f0
mov ebp, eax
add esp, 0xc
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x34], ebp
cmp byte [eax + 0x49], 0
je 0x678f91
push ebp
push eax
call fcn.00647820
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x40
ret
mov eax, dword [esp + 0x58]
push dword [esp + 0x18]
mov dword [ebp + 4], eax
mov eax, dword [esp + 0x68]
mov dword [ebp], esi
mov esi, dword [esp + 0x60]
mov dword [ebp + 0xc], eax
mov eax, dword [esp + 0x18]
mov dword [ebp + 8], ebx
mov dword [ebp + 0x10], esi
mov dword [ebp + 0x1c], 0xffffffff
mov dword [ebp + 0x18], 0xffffffff
mov byte [ebp + 0x2e], al
call fcn.00673b60
mov dword [ebp + 0x20], eax
lea ecx, [ebp + 0x2f0]
mov dword [ebp + 0x24], eax
mov eax, dword [esp + 0x24]
mov word [ebp + 0x2c], ax
mov eax, dword [esp + 0x70]
mov word [ebp + 0x14], ax
mov eax, dword [esp + 0x58]
mov eax, dword [eax + 0x84]
mov dword [ebp + 0x28], eax
xor eax, eax
mov dword [ebp + 0x2f], eax
mov dword [ebp + 0x33], eax
mov dword [ebp + 0x37], eax
mov dword [ebp + 0x3b], eax
mov dword [ebp + 0x3f], eax
mov dword [ebp + 0x43], eax
mov dword [ebp + 0x47], eax
mov dword [ebp + 0x4b], eax
mov byte [ebp + 0x4f], al
lea eax, [edi + 0x48]
push eax
push 0
push ecx
call sub.MSVCRT.dll_memset
mov ecx, dword [esp + 0x3c]
lea edi, [ebp + 0x50]
add ecx, ebp
mov dword [esp + 0x48], ebp
mov dword [esp + 0x4c], edi
lea edx, [ebp + 0x1e8]
mov dword [esp + 0x54], ecx
push 0x2c
lea eax, [ecx + 0x38]
mov dword [ecx + 0x24], 0
mov dword [ecx + 0x30], eax
xor eax, eax
mov word [ecx + 0x28], ax
mov eax, 3
mov word [ecx + 0x2c], ax
lea eax, [edi + 0x18]
mov dword [edx + 4], 0
push esi
push edi
mov dword [esp + 0x4c], edx
mov dword [esp + 0x40], edi
mov dword [edi], ebp
mov dword [edi + 4], 0
mov dword [edi + 0xc], 0
mov dword [edi + 0x10], 8
mov dword [edi + 0x14], eax
call fcn.0067c5b0
add esp, 0x1c
cmp dword [esp + 0x14], 0
jne 0x6790af
test ebx, ebx
je 0x67909b
mov al, byte [ebx]
mov byte [ebp + 0x2f], al
test dword [esp + 0x20], 0x100
mov ebx, dword [esp + 0x58]
je 0x6790ee
mov byte [ebp + 0x33], 1
jmp 0x6790ee
mov ebx, dword [esp + 0x58]
xor edi, edi
mov ebp, dword [esp + 0x30]
lea esi, [ebx + 8]
lea esp, [esp]
mov ecx, dword [ebp + 4]
push dword [esp + 0x24]
mov eax, dword [esi + 0x30]
push esi
push dword [esp + 0x5c]
mov dword [ebp + ecx*4 + 8], eax
inc dword [ebp + 4]
call fcn.0067c610
inc edi
add esp, 0xc
add esi, 0x50
cmp edi, dword [ebx]
jl 0x6790c0
mov ebp, dword [esp + 0x34]
mov edi, dword [esp + 0x24]
mov esi, dword [edi + 0xc]
dec esi
js 0x679102
push esi
push edi
push ebx
call fcn.00616be0
add esp, 0xc
dec esi
jns 0x6790f4
mov edi, dword [esp + 0x1c]
cmp byte [edi + 0x49], 0
jne 0x679769
mov ecx, dword [esp + 0x3c]
xor ebx, ebx
cmp dword [ecx + 0xc], ebx
jle 0x67916a
xor edi, edi
lea ecx, [ecx]
mov esi, dword [ecx + 0x14]
add esi, edi
mov eax, dword [esi + 0x28]
or eax, dword [esi + 0x2c]
jne 0x67915d
cmp dword [esp + 0x14], eax
je 0x679141
push dword [esi]
call fcn.00618690
add esp, 4
test eax, eax
je 0x679159
push 0x10
push dword [ebp + 0x24]
push dword [esi]
push dword [esp + 0x60]
call fcn.0064cff0
add esp, 0x10
or word [esi + 0xa], 4
mov ecx, dword [esp + 0x3c]
inc ebx
add edi, 0x30
cmp ebx, dword [ecx + 0xc]
jl 0x679120
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x64]
and eax, 0x100
mov esi, dword [esp + 0x54]
mov dword [esp + 0x34], eax
je 0x6791b0
push ebx
lea eax, [ebp + 0x50]
push eax
push dword [esp + 0x60]
push esi
call fcn.0062f7f0
add esp, 0x10
test eax, eax
je 0x67919d
mov byte [ebp + 0x33], 1
jmp 0x6791b0
cmp dword [esp + 0x60], 0
jne 0x6791b0
mov eax, pe_nt_image_headers32
mov dword [ebp + 8], ebx
or word [ebp + 0x2c], ax
cmp dword [esp + 0x14], 1
jne 0x6791c8
lea eax, [esp + 0x38]
push eax
call fcn.0068a2f0
add esp, 4
test eax, eax
jne 0x679214
lea eax, [esp + 0x38]
push eax
call fcn.006864f0
add esp, 4
test eax, eax
jne 0x679769
push eax
push ebp
call fcn.00689270
add esp, 8
cmp byte [edi + 0x49], 0
jne 0x679769
cmp dword [ebp + 8], 0
je 0x67921a
mov ax, word [ebp + 0x48]
inc ax
movzx eax, ax
push eax
push ebp
call fcn.00689270
add esp, 8
cmp byte [edi + 0x49], 0
jne 0x679769
cmp dword [ebp + 8], 0
jne 0x679231
test dword [edi + 0x1c], 0x1000
je 0x679231
mov dword [ebp + 0x40], 0xffffffff
mov dword [ebp + 0x44], 0xffffffff
cmp dword [esi + 0x24], 0
jne 0x679769
cmp byte [edi + 0x49], 0
jne 0x679769
cmp byte [ebp + 0x2e], 2
jb 0x679354
test ebx, ebx
je 0x679354
mov eax, 0x100
test word [edi + 0x44], ax
jne 0x679354
push ebx
lea esi, [ebp + 0x1e8]
push esi
call fcn.0067c320
mov ecx, dword [esp + 0x48]
add esp, 8
mov dword [esp + 0x24], eax
mov dword [esp + 0x60], edx
test ecx, ecx
je 0x6792a4
push ecx
push esi
call fcn.0067c320
mov esi, dword [esp + 0x2c]
add esp, 8
or esi, eax
or dword [esp + 0x60], edx
mov edx, dword [esp + 0x60]
mov dword [esp + 0x24], esi
jmp 0x6792a8
mov esi, dword [esp + 0x24]
cmp byte [ebp + 0x2e], 2
jb 0x679354
mov edi, dword [ebp + 4]
mov bl, byte [ebp + 0x2e]
movzx eax, bl
lea eax, [eax + eax*4]
add eax, eax
mov ecx, dword [ebp + eax*8 + 0x2e0]
movzx eax, byte [ecx + 0x10]
lea eax, [eax + eax*4]
add eax, eax
test byte [edi + eax*8 + 0x2c], 8
je 0x679354
cmp word [esp + 0x34], 0
jne 0x6792e8
test dword [ecx + 0x24], 0x1000
je 0x679354
mov eax, dword [ecx + 0xc]
mov edi, dword [ecx + 8]
mov ecx, edi
mov dword [esp + 0x30], eax
and ecx, esi
and eax, edx
or ecx, eax
jne 0x679354
mov ecx, dword [esp + 0x3c]
mov eax, dword [ecx + 0x14]
mov ecx, dword [ecx + 0xc]
lea esi, [ecx + ecx*2]
shl esi, 4
add esi, eax
cmp eax, esi
jae 0x67933b
mov edx, dword [eax + 0x28]
mov ecx, dword [eax + 0x2c]
and edx, edi
and ecx, dword [esp + 0x30]
or edx, ecx
je 0x67932a
mov ecx, dword [eax]
test byte [ecx + 4], 1
je 0x679333
add eax, 0x30
cmp eax, esi
jb 0x679312
jmp 0x679337
cmp eax, esi
jb 0x679354
mov edx, dword [esp + 0x60]
dec dword [esp + 0x14]
dec bl
mov esi, dword [esp + 0x24]
mov edi, dword [ebp + 4]
mov byte [ebp + 0x2e], bl
cmp bl, 2
jae 0x6792b5
mov ecx, dword [ebp]
movsx eax, word [ebp + 0x48]
mov ebx, dword [esp + 0x20]
add dword [ecx + 0x84], eax
test bl, 4
je 0x6793be
mov eax, dword [ebp + 0x330]
mov ecx, dword [eax + 0x24]
mov eax, ecx
shr eax, 0xc
and eax, 1
jne 0x67938a
test bl, 8
je 0x6793be
test ecx, 0x400
jne 0x6793be
mov edx, dword [esp + 0x58]
test eax, eax
sete al
inc al
mov byte [ebp + 0x31], al
mov eax, dword [edx + 0x18]
test byte [eax + 0x24], 0x20
jne 0x6793c2
test cl, 0x40
je 0x6793c2
test bl, 8
je 0x6793b0
mov byte [esp + 0x13], 8
mov eax, dword [ebp + 0x330]
and ecx, 0xffffffbf
mov dword [eax + 0x24], ecx
jmp 0x6793c2
mov edx, dword [esp + 0x58]
mov ecx, dword [esp + 0x14]
test ecx, ecx
jle 0x679696
lea ebx, [ebp + 0x330]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x60], ebx
lea esp, [esp]
movzx eax, byte [ebx - 0x14]
lea edi, [edx + 8]
mov esi, 0xfff0bdc0
lea eax, [eax + eax*4]
shl eax, 4
add edi, eax
mov dword [esp + 0x34], edi
mov ebx, dword [edi + 0x10]
mov edx, dword [ebx + 0x48]
test edx, edx
je 0x679421
mov eax, dword [esp + 0x1c]
xor esi, esi
mov ecx, dword [eax + 0x14]
test ecx, ecx
jle 0x679421
mov eax, dword [eax + 0x10]
add eax, 0xc
cmp dword [eax], edx
je 0x679421
inc esi
add eax, 0x10
cmp esi, ecx
jl 0x679415
test byte [ebx + 0x24], 2
mov eax, dword [esp + 0x60]
mov ecx, dword [eax]
mov dword [esp + 0x24], ecx
jne 0x679566
cmp dword [ebx + 0xc], 0
jne 0x679566
mov eax, dword [ecx + 0x24]
test eax, 0x400
je 0x679476
push 0xfffffffffffffff4
push ebx
push dword [esp + 0x24]
call fcn.00657510
add esp, 8
push eax
push 0
push 0
push dword [edi + 0x30]
push 0x9c
push dword [esp + 0x30]
call fcn.0066bc70
add esp, 0x1c
jmp 0x679562
cmp dword [ebx + 0x38], 0
jne 0x679566
test al, 0x40
jne 0x67954e
cmp word [esp + 0x28], 0
jne 0x67954e
cmp byte [ebp + 0x31], 0
mov ecx, 0x68
je 0x6794aa
mov eax, dword [edi + 0x30]
mov ecx, 0x69
mov dword [ebp + 0x18], eax
push ecx
push ebx
push esi
push dword [edi + 0x30]
push dword [esp + 0x64]
call fcn.0065b970
add esp, 0x14
cmp byte [ebp + 0x31], 0
jne 0x679538
cmp word [ebx + 0x2a], 0x40
jge 0x679538
test byte [ebx + 0x24], 0x20
jne 0x679538
mov edx, dword [edi + 0x40]
mov eax, edx
mov ecx, dword [edi + 0x44]
xor edi, edi
or eax, ecx
je 0x6794ed
lea ecx, [ecx]
shrd edx, ecx, 1
inc edi
shr ecx, 1
mov eax, edx
or eax, ecx
jne 0x6794e0
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx]
cmp byte [eax + 0x49], 0
je 0x679507
push edi
push 0xfffffffffffffffd
push eax
call fcn.0061ba30
add esp, 0xc
jmp 0x679538
mov eax, dword [ecx + 0x88]
mov edx, dword [esp + 0x18]
dec eax
lea ecx, [eax + eax*4]
mov eax, dword [edx + 0x58]
cmp byte [eax + ecx*4 + 1], 0
lea eax, [eax + ecx*4]
je 0x679531
push 0xfffffffffffffffd
push edi
push eax
push edx
call fcn.0067fa50
add esp, 0x10
jmp 0x679538
mov dword [eax + 0x10], edi
mov byte [eax + 1], 0xfd
mov al, byte [esp + 0x13]
movzx eax, al
push eax
push dword [esp + 0x1c]
call fcn.0066c160
add esp, 8
jmp 0x679562
push dword [ebx]
push 0
push dword [ebx + 0x1c]
push esi
push dword [esp + 0x64]
call fcn.00667af0
add esp, 0x14
mov ecx, dword [esp + 0x24]
test dword [ecx + 0x24], 0x200
je 0x679645
test byte [ebx + 0x24], 0x20
mov edx, 0x68
mov edi, dword [ecx + 0x20]
je 0x6795a2
mov eax, dword [edi + 0x38]
and al, 3
cmp al, 2
mov eax, dword [esp + 0x28]
jne 0x6795a6
test ax, ax
je 0x6795a6
mov ebx, dword [esp + 0x60]
mov eax, dword [ebx - 0x3c]
mov dword [ebx - 0x38], eax
jmp 0x679649
mov eax, dword [esp + 0x28]
cmp byte [ebp + 0x31], 0
mov ecx, dword [esp + 0x6c]
je 0x6795d6
mov eax, dword [esp + 0x34]
mov eax, dword [eax + 0x10]
mov eax, dword [eax + 8]
test eax, eax
je 0x6795cc
mov edi, edi
cmp eax, edi
je 0x6795cc
mov eax, dword [eax + 0x14]
inc ecx
test eax, eax
jne 0x6795c0
mov edx, 0x69
mov dword [ebp + 0x1c], ecx
jmp 0x6795f3
test ecx, ecx
je 0x6795e6
test ax, ax
je 0x6795e6
mov edx, 0x67
jmp 0x6795f3
mov ebx, dword [esp + 0x54]
mov ecx, dword [ebx + 0x28]
lea eax, [ecx + 1]
mov dword [ebx + 0x28], eax
mov ebx, dword [esp + 0x60]
push esi
mov dword [ebx - 0x38], ecx
push dword [edi + 0x2c]
push ecx
push edx
push dword [esp + 0x28]
call fcn.0066bc10
push edi
mov edi, dword [esp + 0x6c]
push edi
call fcn.00675e40
mov eax, dword [esp + 0x40]
add esp, 0x1c
mov eax, dword [eax + 0x24]
test al, 0xf
je 0x67964d
test eax, 0x8002
jne 0x67964d
test byte [ebp + 0x2c], 1
jne 0x67964d
cmp byte [ebp + 0x33], 2
je 0x67964d
push 2
push dword [esp + 0x1c]
call fcn.0066c160
add esp, 8
jmp 0x67964d
mov ebx, dword [esp + 0x60]
mov edi, dword [esp + 0x54]
test esi, esi
js 0x67967d
mov edx, dword [edi + 0x78]
test edx, edx
jne 0x67965a
mov edx, edi
mov edi, dword [edx + 0x5c]
mov eax, 1
mov ecx, esi
shl eax, cl
test edi, eax
jne 0x67967d
or eax, edi
mov dword [edx + 0x5c], eax
cmp esi, 1
jne 0x67967d
push edx
call fcn.0065bc80
add esp, 4
mov edx, dword [esp + 0x58]
add ebx, 0x50
dec dword [esp + 0x2c]
mov dword [esp + 0x60], ebx
jne 0x6793e0
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
mov eax, dword [eax + 0x88]
mov dword [ebp + 0x38], eax
mov eax, dword [esp + 0x1c]
cmp byte [eax + 0x49], 0
jne 0x679769
or edx, 0xffffffff
or ebx, 0xffffffff
xor edi, edi
mov dword [esp + 0x60], edx
test ecx, ecx
jle 0x67975f
lea esi, [ebp + 0x31c]
jmp 0x6796d0
mov eax, dword [esi + 0x14]
test dword [eax + 0x24], 0x4000
je 0x67970f
lea eax, [esi - 0x2c]
push eax
movzx eax, byte [esi]
push edx
mov edx, dword [esp + 0x60]
add edx, 8
lea eax, [eax + eax*4]
shl eax, 4
push ebx
add eax, edx
push eax
lea eax, [ebp + 0x50]
push eax
push dword [esp + 0x68]
call fcn.00612fb0
mov eax, dword [esp + 0x34]
add esp, 0x18
cmp byte [eax + 0x49], 0
jne 0x679769
push dword [esp + 0x20]
movzx eax, byte [esi]
push eax
push edi
lea eax, [esi - 0x2c]
push eax
push dword [esp + 0x68]
push dword [esp + 0x68]
call fcn.0067c020
push dword [esp + 0x78]
mov eax, dword [esp + 0x34]
push ebx
push edi
push ebp
mov eax, dword [eax + 0x88]
mov dword [esi - 0xc], eax
call fcn.006798d0
mov ecx, dword [esi - 0x14]
inc edi
add esp, 0x28
mov dword [esp + 0x60], edx
add esi, 0x50
mov dword [ebp + 0x20], ecx
mov ebx, eax
cmp edi, dword [esp + 0x14]
jl 0x6796d0
pop edi
pop esi
mov eax, ebp
pop ebp
pop ebx
add esp, 0x40
ret
mov ecx, dword [esp + 0x54]
mov eax, dword [ebp + 0x28]
push ebp
push dword [esp + 0x20]
mov dword [ecx + 0x84], eax
call fcn.006860c0
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x40
ret