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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x40
push edi
mov edi, dword [ebp + 0xc]
mov eax, dword [edi + 0x44]
mov dword [ebp - 0x14], eax
test eax, eax
je 0x6713b0
mov eax, dword [ebp + 8]
push ebx
push esi
mov esi, dword [eax + 0x14]
mov ebx, dword [esi + 0x2c]
mov dword [ebp - 0x20], ebx
cmp ebx, 4
jne 0x670a13
mov ebx, 2
mov dword [ebp - 0x20], ebx
mov edx, dword [ebp + 0x10]
mov ecx, 0x6873d0
mov dword [ebp - 0x40], eax
mov eax, dword [edi + 0xc]
mov dword [ebp - 0x34], eax
mov eax, dword [edi + 0x20]
mov dword [ebp - 0x3c], edi
mov dword [ebp - 0x38], edx
mov dword [ebp - 0x30], eax
mov eax, dword [esi + 0x18]
test eax, eax
cmovne ecx, eax
mov dword [ebp - 0x2c], ecx
mov ecx, 0x684810
mov eax, dword [esi + 0x1c]
test eax, eax
cmovne ecx, eax
test ebx, ebx
mov dword [ebp - 0x28], ecx
sete byte [ebp - 0x1c]
test ebx, ebx
je 0x670a65
cmp ebx, 1
je 0x670a5f
cmp ebx, 3
jne 0x670a65
mov byte [ebp - 0xc], 0
jmp 0x670a69
mov byte [ebp - 0xc], 1
mov eax, dword [edi + 0x50]
xor esi, esi
mov dword [edi + 0x54], eax
mov eax, dword [ebp - 0x14]
mov byte [ebp - 1], 1
mov word [edi + 0x3e], 1
mov dword [edi + 0x48], 0
mov dword [edi + 0x40], 0
nop dword [eax]
lea ebx, [esi + 1]
mov dword [ebp - 0x10], ebx
cmp ebx, eax
jae 0x670ac6
mov eax, dword [edi + 0x50]
lea ecx, [ebx + 1]
lea ecx, [ebx + ecx*4]
lea ecx, [eax + ecx*4]
movzx eax, word [ecx]
and eax, 0x1f
sub eax, 0xa
cmp eax, 2
jbe 0x670ac2
inc ebx
add ecx, 0x14
mov dword [ebp - 0x10], ebx
cmp ebx, dword [ebp - 0x14]
jb 0x670aa6
jmp 0x670ac6
dec ebx
mov dword [ebp - 0x10], ebx
cmp byte [ebp - 0xc], 0
je 0x670b66
mov eax, dword [edi + 0x50]
lea ecx, [esi + esi*4]
lea edx, [eax + ecx*4]
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp - 0x10]
lea ebx, [edx + 0xc]
sub ecx, esi
mov esi, dword [eax + 0x74]
mov eax, dword [esi + 0xc]
test eax, eax
je 0x670af1
mov eax, dword [eax + 0xc]
push eax
mov eax, dword [esi + 0x20]
push 0x14
push ebx
mov ebx, dword [ebp + 0x10]
push 0x14
push edx
push ecx
push dword [ebx + 0x78]
push ebx
call eax
add esp, 0x20
mov esi, eax
cmp byte [edi + 0x3e], 0
je 0x670b5d
mov ecx, dword [edi + 0x54]
cmp ecx, dword [edi + 0x50]
jne 0x670b20
mov ecx, dword [edi + 0x48]
cmp ecx, dword [edi + 0x40]
je 0x670b5a
push esi
push esi
mov ecx, edi
call fcn.006ab180
test al, al
je 0x670e90
lea eax, [esi + esi*4]
shl eax, 2
push eax
mov eax, dword [edi + 0x40]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x50]
lea eax, [eax + ecx*4]
push eax
mov eax, dword [edi + 0x48]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x54]
lea eax, [eax + ecx*4]
push eax
call fcn.005c3580
add esp, 0xc
add dword [edi + 0x48], esi
add dword [edi + 0x40], esi
mov edx, dword [ebp - 0x38]
mov ebx, dword [ebp - 0x10]
mov esi, dword [edi + 0x40]
cmp esi, ebx
jae 0x670db3
cmp byte [edi + 0x3c], 0
je 0x670db3
cmp byte [ebp - 0xc], 0
mov esi, dword [ebp - 0x3c]
mov eax, dword [esi + 0x40]
lea ecx, [eax + eax*4]
mov eax, dword [esi + 0x50]
mov ebx, dword [eax + ecx*4]
mov dword [ebp - 0x24], ebx
mov dword [ebp - 8], 0
je 0x670bc7
mov eax, dword [ebp - 0x30]
mov dword [ebp - 8], eax
mov ecx, dword [edx + 0x74]
mov eax, dword [ecx + 0xc]
test eax, eax
je 0x670bad
mov eax, dword [eax + 8]
push eax
lea eax, [ebp - 8]
push eax
mov eax, dword [ecx + 0x1c]
push ebx
push dword [edx + 0x78]
push edx
call eax
add esp, 0x14
test eax, eax
jne 0x670d8c
push ebx
push dword [ebp - 0xc]
lea eax, [ebp - 0x40]
push eax
call fcn.00686f90
add esp, 0xc
test eax, eax
je 0x670be3
inc dword [esi + 0x40]
jmp 0x670da3
cmp byte [ebp - 0xc], 0
jne 0x670c19
mov eax, dword [ebp - 0x30]
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x38]
mov edx, dword [eax + 0x74]
mov ecx, dword [edx + 0xc]
test ecx, ecx
je 0x670bff
mov ecx, dword [ecx + 8]
push ecx
lea ecx, [ebp - 8]
push ecx
push ebx
push dword [eax + 0x78]
push eax
mov eax, dword [edx + 0x1c]
call eax
add esp, 0x14
test eax, eax
jne 0x670d8c
mov eax, dword [esi + 0x40]
lea ecx, [eax + eax*4]
mov eax, dword [esi + 0x50]
mov al, byte [eax + ecx*4 + 0x10]
and al, 0x1f
cmp al, 0x1d
jne case.0x670c76.8203
cmp ebx, 0x2000
ja 0x670c52
je case.0x670c76.8194
cmp ebx, 0x20
je 0x670c4b
cmp ebx, 0xa0
jne 0x670d8c
mov ebx, 0x12
jmp 0x670cc8
cmp ebx, 0x3000
ja case.0x670c76.8203
je case.0x670c76.8193
lea eax, [ebx - 0x2001]
cmp eax, 0x5e
ja case.0x670c76.8203
movzx eax, byte [eax + 0x6713e8]
jmp dword [eax*4 + 0x6713b8]
mov ebx, 2
jmp 0x670cc8
mov ebx, 3
jmp 0x670cc8
mov ebx, 4
jmp 0x670cc8
mov ebx, 6
jmp 0x670cc8
mov ebx, 0x13
jmp 0x670cc8
mov ebx, 0x14
jmp 0x670cc8
mov ebx, 5
jmp 0x670cc8
mov ebx, 0x10
jmp 0x670cc8
mov ebx, 0x15
jmp 0x670cc8
mov ebx, 0x11
jmp 0x670cc8
mov ebx, 1
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x18], 0
mov edx, dword [eax + 0x74]
mov ecx, dword [edx + 0xc]
test ecx, ecx
je 0x670cdf
mov ecx, dword [ecx + 8]
push ecx
lea ecx, [ebp - 0x18]
push ecx
push 0x20
push dword [eax + 0x78]
push eax
mov eax, dword [edx + 0x1c]
call eax
add esp, 0x14
test eax, eax
jne 0x670d00
mov eax, dword [esi + 0x1c]
mov dword [ebp - 0x18], eax
test eax, eax
je 0x670d45
mov eax, dword [esi + 0x40]
lea ecx, [eax + eax*4]
mov eax, dword [esi + 0x50]
movzx edx, word [eax + ecx*4 + 0x10]
lea ecx, [eax + ecx*4]
mov al, dl
and al, 0x1f
cmp al, 0x1d
jne 0x670d25
shl ebx, 8
movzx eax, dl
or ebx, eax
mov word [ecx + 0x10], bx
mov eax, dword [esi + 0x40]
mov ecx, dword [esi + 0x50]
lea edx, [eax + eax*4]
mov eax, dword [ebp - 0x18]
mov dword [ecx + edx*4 + 0xc], eax
mov ecx, esi
call fcn.006acb80
or dword [esi + 0x90], 4
jmp 0x670da3
mov ebx, dword [ebp - 0x24]
cmp ebx, 0x2011
jne 0x670d8c
mov eax, dword [ebp - 0x38]
mov dword [ebp - 0x18], 0
mov edx, dword [eax + 0x74]
mov ecx, dword [edx + 0xc]
test ecx, ecx
je 0x670d67
mov ecx, dword [ecx + 8]
push ecx
lea ecx, [ebp - 0x18]
push ecx
push 0x2010
push dword [eax + 0x78]
push eax
mov eax, dword [edx + 0x1c]
call eax
add esp, 0x14
test eax, eax
je 0x670d8c
mov eax, dword [esi + 0x40]
lea edx, [eax + eax*4]
mov eax, dword [ebp - 0x18]
jmp 0x670d95
mov eax, dword [esi + 0x40]
lea edx, [eax + eax*4]
mov eax, dword [ebp - 8]
mov ecx, dword [esi + 0x50]
mov dword [ecx + edx*4 + 0xc], eax
mov ecx, esi
call fcn.006acb80
mov esi, dword [edi + 0x40]
cmp esi, dword [ebp - 0x10]
jae 0x670db3
mov edx, dword [ebp - 0x38]
jmp 0x670b71
mov edx, dword [ebp - 0x14]
cmp esi, edx
je 0x670e8d
cmp byte [edi + 0x3c], 0
je 0x670e8d
inc esi
mov byte [ebp - 1], 0
cmp esi, edx
jae 0x670df6
mov eax, dword [edi + 0x50]
lea ecx, [esi + 1]
lea ecx, [esi + ecx*4]
lea ecx, [eax + ecx*4]
nop dword [eax]
movzx eax, word [ecx]
and eax, 0x1f
sub eax, 0xa
cmp eax, 2
ja 0x670df6
inc esi
add ecx, 0x14
cmp esi, edx
jb 0x670de0
mov ebx, dword [ebp - 0x3c]
mov dword [ebp - 0x18], ebx
mov ecx, dword [ebx + 0x40]
cmp ecx, esi
jae 0x670e39
lea edx, [ecx + ecx*4]
shl edx, 2
cmp byte [ebx + 0x3c], 0
je 0x670e39
nop
mov eax, dword [ebx + 0x50]
mov ebx, dword [edx + eax]
lea eax, [ebx - 0xfe00]
cmp eax, 0xf
jbe 0x670e7b
lea eax, [ebx - 0xe0100]
cmp eax, 0xef
jbe 0x670e7b
mov ebx, dword [ebp - 0x18]
inc ecx
add edx, 0x14
cmp ecx, esi
jb 0x670e10
mov eax, dword [ebp - 0x3c]
mov dword [ebp - 0x24], eax
cmp dword [eax + 0x40], esi
jae 0x670e63
mov edi, eax
cmp byte [edi + 0x3c], 0
je 0x670e60
push dword [ebp - 0x1c]
lea eax, [ebp - 0x40]
push eax
call fcn.006870d0
add esp, 8
cmp dword [ebx + 0x40], esi
jb 0x670e46
mov edi, dword [ebp + 0xc]
mov esi, dword [edi + 0x40]
mov eax, dword [ebp - 0x14]
cmp esi, eax
jae 0x670e8d
cmp byte [edi + 0x3c], 0
je 0x670e8d
mov edx, dword [ebp - 0x38]
jmp 0x670a90
push dword [ebp - 0x1c]
lea eax, [ebp - 0x40]
push esi
push eax
call fcn.006974d0
add esp, 0xc
jmp 0x670e63
mov ebx, dword [ebp + 0x10]
cmp byte [edi + 0x3c], 0
je 0x670ebe
mov eax, dword [edi + 0x44]
mov ecx, edi
sub eax, dword [edi + 0x40]
push eax
call fcn.006acbe0
test al, al
je 0x670ebe
mov eax, dword [edi + 0x54]
mov ecx, dword [edi + 0x50]
cmp eax, ecx
je 0x670eb8
mov dword [edi + 0x58], ecx
mov dword [edi + 0x50], eax
mov eax, dword [edi + 0x48]
mov dword [edi + 0x44], eax
cmp byte [ebp - 1], 0
mov eax, dword [edi + 0x50]
mov byte [edi + 0x3e], 0
mov dword [edi + 0x48], 0
mov dword [edi + 0x54], eax
mov dword [edi + 0x40], 0
jne 0x670fb8
push str.start_reorder
push ebx
push edi
call fcn.006ac0d0
add esp, 0xc
test al, al
je 0x670fb8
mov ecx, dword [edi + 0x44]
xor ebx, ebx
mov edx, dword [edi + 0x50]
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0x1c], edx
test ecx, ecx
je 0x670fa7
nop dword [eax]
lea eax, [ebx + ebx*4]
movzx edx, word [edx + eax*4 + 0x10]
mov eax, edx
and eax, 0x1f
sub eax, 0xa
cmp eax, 2
ja 0x670f9b
cmp edx, 0x100
jb 0x670f9b
lea esi, [ebx + 1]
cmp esi, ecx
jae 0x670f69
mov ecx, dword [ebp - 0x1c]
lea eax, [esi + esi*4]
mov edi, dword [ebp - 0x18]
lea ecx, [ecx + eax*4]
add ecx, 0x10
movzx edx, word [ecx]
mov eax, edx
and eax, 0x1f
sub eax, 0xa
cmp eax, 2
ja 0x670f63
cmp edx, 0x100
jb 0x670f63
inc esi
add ecx, 0x14
cmp esi, edi
jb 0x670f43
mov edi, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x18]
mov eax, esi
sub eax, ebx
cmp eax, 0x20
ja 0x670f99
push 0x6821d0
push esi
push ebx
mov ecx, edi
call fcn.006c79f0
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x14]
mov eax, dword [eax + 0x24]
test eax, eax
je 0x670f96
push esi
push ebx
push edi
push ecx
call eax
add esp, 0x10
mov ecx, dword [ebp - 0x18]
mov ebx, esi
mov edx, dword [ebp - 0x1c]
inc ebx
cmp ebx, ecx
jb 0x670f10
push str.end_reorder
push dword [ebp + 0x10]
push edi
call fcn.006ac0d0
add esp, 0xc
test byte [edi + 0x90], 0x10
je 0x671035
mov ecx, dword [edi + 0x44]
mov esi, dword [edi + 0x50]
mov dword [ebp - 0x18], ecx
cmp ecx, 2
jbe 0x671035
mov eax, dword [ebp - 0x18]
mov ecx, 2
mov dword [ebp - 0x14], ecx
add esi, 0x24
mov edi, 0xffbf
cmp dword [esi - 0x10], 0x34f
jne 0x671027
movzx ebx, word [esi + 0x14]
mov eax, ebx
and eax, 0x1f
sub eax, 0xa
cmp eax, 2
ja 0x671021
shr ebx, 8
test ebx, ebx
je 0x671021
movzx edx, word [esi - 0x14]
xor eax, eax
mov ecx, edx
shr edx, 8
and ecx, 0x1f
sub ecx, 0xa
cmp ecx, 2
mov ecx, dword [ebp - 0x14]
cmovbe eax, edx
cmp eax, ebx
ja 0x671024
and word [esi], di
mov eax, dword [ebp - 0x18]
inc ecx
add esi, 0x14
mov dword [ebp - 0x14], ecx
cmp ecx, eax
jb 0x670fe2
mov edi, dword [ebp + 0xc]
cmp byte [ebp - 1], 0
jne 0x6713ae
cmp byte [edi + 0x3c], 0
je 0x6713ae
mov eax, dword [ebp - 0x20]
cmp eax, 2
je 0x67105a
cmp eax, 3
jne 0x6713ae
mov eax, dword [edi + 0x50]
xor esi, esi
mov ecx, dword [edi + 0x44]
mov dword [edi + 0x40], 0
mov dword [edi + 0x48], 0
inc dword [edi + 0x48]
mov dword [edi + 0x54], eax
mov dword [edi + 0x40], 1
mov eax, dword [edi + 0x40]
mov word [edi + 0x3e], 1
mov dword [ebp - 0xc], ecx
mov dword [ebp + 0xc], esi
cmp eax, ecx
jae 0x671368
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x50]
lea ebx, [eax + ecx*4]
movzx eax, word [ebx + 0x10]
and eax, 0x1f
sub eax, 0xa
cmp eax, 2
ja 0x6712d7
mov ecx, dword [edi + 0x48]
lea eax, [ecx - 1]
cmp esi, eax
je 0x6710e6
xor edx, edx
test ecx, ecx
cmove eax, edx
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x54]
lea eax, [eax + ecx*4]
push eax
call fcn.0066fee0
push ebx
mov esi, eax
call fcn.0066fee0
add esp, 8
cmp esi, eax
mov esi, dword [ebp + 0xc]
jae 0x6712d7
lea eax, [ebp - 0x20]
push eax
mov eax, dword [edi + 0x54]
lea ecx, [esi + esi*4]
push dword [ebx]
push dword [eax + ecx*4]
lea eax, [ebp - 0x40]
push eax
call dword [ebp - 0x28]
add esp, 0x10
test al, al
je 0x6712d7
mov edx, dword [ebp + 0x10]
mov dword [ebp - 0x1c], 0
mov ecx, dword [edx + 0x74]
mov eax, dword [ecx + 0xc]
test eax, eax
je 0x67111e
mov eax, dword [eax + 8]
push eax
lea eax, [ebp - 0x1c]
push eax
push dword [ebp - 0x20]
mov eax, dword [ecx + 0x1c]
push dword [edx + 0x78]
push edx
call eax
add esp, 0x14
test eax, eax
je 0x6712d7
cmp byte [edi + 0x3e], 0
je 0x67118c
mov eax, dword [edi + 0x54]
cmp eax, dword [edi + 0x50]
jne 0x671150
mov eax, dword [edi + 0x48]
cmp eax, dword [edi + 0x40]
je 0x671189
push 1
push 1
mov ecx, edi
call fcn.006ab180
test al, al
je 0x671368
mov eax, dword [edi + 0x40]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x50]
movups xmm0, xmmword [eax + ecx*4]
lea edx, [eax + ecx*4]
mov eax, dword [edi + 0x48]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x54]
movups xmmword [eax + ecx*4], xmm0
lea ecx, [eax + ecx*4]
mov eax, dword [edx + 0x10]
mov dword [ecx + 0x10], eax
inc dword [edi + 0x48]
push dword [edi + 0x48]
inc dword [edi + 0x40]
mov ecx, edi
push esi
call fcn.006abf80
mov ecx, dword [edi + 0x54]
lea edx, [esi + esi*4]
dec dword [edi + 0x48]
mov eax, dword [ebp - 0x20]
mov dword [ecx + edx*4], eax
lea edx, [esi + esi*4]
mov ecx, dword [edi + 0x54]
mov eax, dword [ebp - 0x1c]
mov dword [ecx + edx*4 + 0xc], eax
lea ecx, [esi + esi*4]
mov eax, dword [edi + 0x54]
mov ebx, dword [eax + ecx*4]
lea ecx, [eax + ecx*4]
mov eax, dword [edi + 0xc]
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], ecx
push dword [eax + 0x38]
push ebx
push eax
mov eax, dword [eax + 0x18]
call eax
add esp, 0xc
mov dword [ebp - 0x18], eax
mov esi, eax
cmp ebx, 0x80
jb 0x6712c8
mov ecx, dword [edi + 0x90]
or ecx, 1
push ebx
mov dword [ebp - 0x24], ecx
mov dword [edi + 0x90], ecx
call fcn.006a7910
add esp, 4
mov edx, esi
test eax, eax
je 0x67126d
mov ecx, dword [ebp - 0x24]
or esi, 0x20
or ecx, 2
mov dword [edi + 0x90], ecx
cmp ebx, 0x200c
jne 0x671229
or esi, 0x200
jmp 0x67126d
cmp ebx, 0x200d
jne 0x671239
or esi, 0x100
jmp 0x67126d
lea eax, [ebx - 0x180b]
cmp eax, 2
jbe 0x67126a
lea eax, [ebx - 0x180f]
test eax, eax
je 0x67126a
lea eax, [ebx - 0xe0020]
cmp eax, 0x5f
jbe 0x67126a
cmp ebx, 0x34f
jne 0x67126d
or ecx, 0x10
mov dword [edi + 0x90], ecx
or esi, 0x40
cmp edx, 0x20
jae 0x6712c8
lea eax, [edx - 0xa]
cmp eax, 2
ja 0x6712c8
cmp ebx, 0x1a60
jne 0x671289
mov eax, 0xfe
jmp 0x6712be
cmp ebx, 0xfc6
jne 0x671298
mov eax, 0xfe
jmp 0x6712be
cmp ebx, 0xf39
jne 0x6712a7
mov eax, 0x7f
jmp 0x6712be
mov eax, dword [ebp - 0x14]
push dword [eax + 0x30]
push ebx
push eax
mov eax, dword [eax + 0x10]
call eax
add esp, 0xc
movzx eax, byte [eax + 0x704708]
shl eax, 8
or eax, 0x80
or esi, eax
mov eax, dword [ebp - 0x10]
mov word [eax + 0x10], si
mov esi, dword [ebp + 0xc]
jmp 0x67135c
cmp byte [edi + 0x3e], 0
je 0x671325
mov eax, dword [edi + 0x54]
cmp eax, dword [edi + 0x50]
jne 0x6712ed
mov eax, dword [edi + 0x48]
cmp eax, dword [edi + 0x40]
je 0x671322
push 1
push 1
mov ecx, edi
call fcn.006ab180
test al, al
je 0x671368
mov eax, dword [edi + 0x40]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x50]
movups xmm0, xmmword [eax + ecx*4]
lea edx, [eax + ecx*4]
mov eax, dword [edi + 0x48]
lea ecx, [eax + eax*4]
mov eax, dword [edi + 0x54]
movups xmmword [eax + ecx*4], xmm0
lea ecx, [eax + ecx*4]
mov eax, dword [edx + 0x10]
mov dword [ecx + 0x10], eax
inc dword [edi + 0x48]
mov edx, dword [edi + 0x48]
mov ecx, edx
inc dword [edi + 0x40]
neg ecx
sbb ecx, ecx
lea eax, [edx - 1]
and ecx, eax
mov eax, dword [edi + 0x54]
lea ecx, [ecx + ecx*4]
movzx ecx, word [eax + ecx*4 + 0x10]
mov eax, ecx
and eax, 0x1f
sub eax, 0xa
cmp eax, 2
ja 0x671356
cmp ecx, 0x100
jae 0x67135c
lea esi, [edx - 1]
mov dword [ebp + 0xc], esi
mov eax, dword [edi + 0x40]
cmp eax, dword [ebp - 0xc]
jb 0x671094
cmp byte [edi + 0x3c], 0
je 0x671396
mov eax, dword [edi + 0x44]
mov ecx, edi
sub eax, dword [edi + 0x40]
push eax
call fcn.006acbe0
test al, al
je 0x671396
mov eax, dword [edi + 0x54]
mov ecx, dword [edi + 0x50]
cmp eax, ecx
je 0x671390
mov dword [edi + 0x58], ecx
mov dword [edi + 0x50], eax
mov eax, dword [edi + 0x48]
mov dword [edi + 0x44], eax
mov eax, dword [edi + 0x50]
mov byte [edi + 0x3e], 0
mov dword [edi + 0x48], 0
mov dword [edi + 0x54], eax
mov dword [edi + 0x40], 0
pop esi
pop ebx
pop edi
mov esp, ebp
pop ebp
ret