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

Disassembly:
sub esp, 0x90
push ebx
mov ebx, dword [esp + 0xa4]
cmp ebx, 0xa
jae 0x6702a0
mov eax, 0xffffffec
pop ebx
add esp, 0x90
ret
mov edx, dword [esp + 0x98]
mov eax, dword [esp + 0x9c]
add eax, edx
mov ecx, dword [esp + 0xa8]
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0xa0]
push ebp
push esi
push edi
movzx ebp, word [eax]
lea edi, [ecx + 4]
movzx esi, word [eax + 4]
mov dword [esp + 0x28], ebp
movzx ebp, word [eax + 2]
mov dword [esp + 0x20], ebp
mov ebp, ebx
movzx ebx, word [eax]
sub ebp, esi
sub ebp, dword [esp + 0x20]
add eax, 6
mov dword [esp + 0x1c], eax
sub ebp, ebx
add eax, ebx
mov dword [esp + 0x30], esi
mov dword [esp + 0x40], eax
sub ebp, 6
add eax, dword [esp + 0x20]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xa8]
add eax, 3
mov dword [esp + 0x14], edi
shr eax, 2
add edx, eax
mov dword [esp + 0x24], 1
mov dword [esp + 0x3c], edx
mov dword [esp + 0x2c], edx
lea ebx, [edx + eax]
add eax, ebx
mov dword [esp + 0x18], ebx
mov esi, eax
mov dword [esp + 0x94], eax
mov eax, dword [ecx]
shr eax, 0x10
mov dword [esp + 0x34], ebx
movzx ebx, al
mov dword [esp + 0x98], esi
mov dword [esp + 0x38], ebx
cmp ebp, dword [esp + 0xb0]
ja 0x670715
push dword [esp + 0x28]
lea eax, [esp + 0x84]
push dword [esp + 0x20]
push eax
call fcn.0066eda0
add esp, 0xc
cmp eax, 0xffffff88
ja 0x671030
push dword [esp + 0x20]
lea eax, [esp + 0x48]
push dword [esp + 0x44]
push eax
call fcn.0066eda0
add esp, 0xc
cmp eax, 0xffffff88
ja 0x671030
push dword [esp + 0x30]
lea eax, [esp + 0x70]
push dword [esp + 0x14]
push eax
call fcn.0066eda0
add esp, 0xc
cmp eax, 0xffffff88
ja 0x671030
mov eax, dword [esp + 0x30]
add eax, dword [esp + 0x10]
push ebp
push eax
lea eax, [esp + 0x60]
push eax
call fcn.0066eda0
add esp, 0xc
cmp eax, 0xffffff88
ja 0x671030
mov eax, dword [esp + 0x9c]
mov edx, dword [esp + 0x84]
add eax, 0xfffffffd
mov dword [esp + 0x1c], edx
cmp esi, eax
jae 0x6706d7
mov eax, dword [esp + 0x5c]
neg ebx
mov ebp, dword [esp + 0x70]
and ebx, 0x1f
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x48]
mov dword [esp + 0x28], eax
jmp 0x670428
mov ebp, dword [esp + 0x30]
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x14]
mov ecx, edx
mov edx, dword [esp + 0x80]
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x10]
shr edx, cl
mov ecx, dword [esp + 0xa4]
movzx eax, byte [eax + edx*2]
movzx edi, byte [edi + edx*2 + 1]
mov byte [ecx], al
inc ecx
mov edx, dword [esp + 0x44]
mov dword [esp + 0xa4], ecx
mov ecx, ebx
and ecx, 0x1f
add edi, dword [esp + 0x1c]
shl edx, cl
mov ecx, dword [esp + 0x10]
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2 + 1]
add ebx, eax
movzx eax, byte [ecx + edx*2]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x6c]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x2c], ecx
mov ecx, ebp
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x10]
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2 + 1]
add ebp, eax
movzx eax, byte [ecx + edx*2]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x58]
mov byte [ecx], al
inc ecx
mov eax, dword [esp + 0x14]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x28]
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x10]
shr edx, cl
mov ecx, dword [esp + 0x28]
movzx eax, byte [eax + edx*2 + 1]
add ecx, eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x40], ecx
mov ecx, edi
and ecx, 0x1f
movzx eax, byte [eax + edx*2]
mov edx, dword [esp + 0x14]
mov byte [esi], al
mov eax, dword [esp + 0x80]
shl eax, cl
mov ecx, dword [esp + 0x10]
shr eax, cl
movzx ecx, byte [edx + eax*2 + 1]
movzx eax, byte [edx + eax*2]
add ecx, edi
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x84], ecx
mov ecx, dword [esp + 0xa4]
mov byte [ecx], al
inc ecx
mov eax, dword [esp + 0x44]
mov dword [esp + 0xa4], ecx
mov ecx, ebx
and ecx, 0x1f
shl eax, cl
mov ecx, dword [esp + 0x10]
shr eax, cl
movzx edi, byte [edx + eax*2 + 1]
add edi, ebx
mov dword [esp + 0x20], edi
movzx eax, byte [edx + eax*2]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x48], edi
mov byte [ecx], al
inc ecx
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x2c], ecx
mov ecx, ebp
and ecx, 0x1f
shl eax, cl
mov ecx, dword [esp + 0x10]
shr eax, cl
mov ecx, dword [esp + 0x34]
movzx ebx, byte [edx + eax*2 + 1]
movzx eax, byte [edx + eax*2]
add ebx, ebp
mov byte [ecx], al
inc ecx
mov eax, dword [esp + 0x58]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x40]
and ecx, 0x1f
mov dword [esp + 0x30], ebx
shl eax, cl
mov ecx, dword [esp + 0x10]
shr eax, cl
mov ecx, edx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x70], ebx
movzx ebp, byte [ecx + eax*2 + 1]
movzx eax, byte [ecx + eax*2]
add ebp, dword [esp + 0x40]
mov ecx, dword [esp + 0x88]
mov byte [esi + 1], al
add esi, 2
mov dword [esp + 0x28], ebp
mov dword [esp + 0x5c], ebp
cmp ecx, dword [esp + 0x90]
jae 0x6705cc
mov ecx, 3
jmp 0x6705f3
mov eax, edx
and edx, 7
shr eax, 3
sub ecx, eax
mov dword [esp + 0x1c], edx
mov dword [esp + 0x88], ecx
mov dword [esp + 0x84], edx
mov eax, dword [ecx]
xor ecx, ecx
mov dword [esp + 0x80], eax
xor eax, eax
test ecx, ecx
mov ecx, dword [esp + 0x4c]
cmove eax, dword [esp + 0x24]
mov dword [esp + 0x40], eax
cmp ecx, dword [esp + 0x54]
jae 0x670611
mov ecx, 3
jmp 0x67062f
mov eax, edi
and edi, 7
shr eax, 3
sub ecx, eax
mov dword [esp + 0x20], edi
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x48], edi
mov eax, dword [ecx]
xor ecx, ecx
mov dword [esp + 0x44], eax
xor eax, eax
test ecx, ecx
mov ecx, dword [esp + 0x74]
sete al
and eax, dword [esp + 0x40]
mov dword [esp + 0x40], eax
cmp ecx, dword [esp + 0x7c]
jae 0x67064f
mov ecx, 3
jmp 0x670671
mov eax, ebx
and ebx, 7
shr eax, 3
sub ecx, eax
mov dword [esp + 0x30], ebx
mov dword [esp + 0x74], ecx
mov dword [esp + 0x70], ebx
mov eax, dword [ecx]
xor ecx, ecx
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x40]
xor ebx, ebx
test ecx, ecx
mov ecx, dword [esp + 0x60]
cmove ebx, eax
cmp ecx, dword [esp + 0x68]
jae 0x670689
mov ecx, 3
jmp 0x6706a7
mov eax, ebp
and ebp, 7
shr eax, 3
sub ecx, eax
mov dword [esp + 0x28], ebp
mov dword [esp + 0x60], ecx
mov dword [esp + 0x5c], ebp
mov eax, dword [ecx]
xor ecx, ecx
mov dword [esp + 0x58], eax
xor eax, eax
test ecx, ecx
sete al
and ebx, eax
mov eax, dword [esp + 0x9c]
add eax, 0xfffffffd
mov dword [esp + 0x24], ebx
cmp esi, eax
sbb eax, eax
test ebx, eax
mov ebx, dword [esp + 0x20]
jne 0x670420
mov dword [esp + 0x98], esi
jmp 0x6706ef
mov ebx, dword [esp + 0x48]
mov edi, dword [esp + 0x70]
mov ebp, dword [esp + 0x5c]
mov dword [esp + 0x20], ebx
mov dword [esp + 0x30], edi
mov dword [esp + 0x28], ebp
mov ebx, dword [esp + 0xa4]
mov eax, dword [esp + 0x3c]
cmp ebx, eax
ja 0x670715
mov ecx, dword [esp + 0x18]
cmp dword [esp + 0x2c], ecx
ja 0x670715
mov ecx, dword [esp + 0x94]
cmp dword [esp + 0x34], ecx
jbe 0x670725
pop edi
pop esi
pop ebp
mov eax, 0xffffffec
pop ebx
add esp, 0x90
ret
mov ebp, dword [esp + 0x88]
lea ecx, [eax - 3]
mov dword [esp + 0x24], ecx
mov edi, dword [esp + 0x8c]
cmp edx, 0x20
jbe 0x670750
mov edi, dword [esp + 0x80]
mov dword [esp + 0x10], 3
jmp 0x6707ce
cmp ebp, dword [esp + 0x90]
jb 0x67076d
mov eax, edx
mov dword [esp + 0x10], 0
shr eax, 3
sub ebp, eax
and edx, 7
jmp 0x6707b2
cmp ebp, edi
jne 0x670786
mov edi, dword [esp + 0x80]
cmp edx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x6707ce
mov ecx, edx
mov dword [esp + 0x10], 0
shr ecx, 3
mov eax, ebp
sub eax, ecx
cmp eax, edi
jae 0x6707a7
mov ecx, ebp
mov dword [esp + 0x10], 1
sub ecx, edi
imul eax, ecx, 0xfffffff8
sub ebp, ecx
mov ecx, dword [esp + 0x24]
add edx, eax
mov edi, dword [ebp]
mov dword [esp + 0x80], edi
mov dword [esp + 0x84], edx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x88], ebp
cmp ebx, ecx
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x67085f
mov ebx, dword [esp + 0x38]
mov ecx, edx
mov eax, dword [esp + 0x14]
and ecx, 0x1f
neg ebx
mov edx, edi
shl edx, cl
and ebx, 0x1f
mov ecx, ebx
shr edx, cl
mov ecx, dword [esp + 0xa4]
movzx edi, byte [eax + edx*2 + 1]
movzx eax, byte [eax + edx*2]
add edi, dword [esp + 0x1c]
mov byte [ecx], al
inc ecx
mov eax, dword [esp + 0x80]
mov dword [esp + 0xa4], ecx
mov ecx, edi
and ecx, 0x1f
shl eax, cl
mov ecx, ebx
mov ebx, dword [esp + 0xa4]
shr eax, cl
mov ecx, dword [esp + 0x14]
movzx edx, byte [ecx + eax*2 + 1]
movzx eax, byte [ecx + eax*2]
add edx, edi
mov ecx, dword [esp + 0x24]
mov byte [ebx], al
inc ebx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x84], edx
mov dword [esp + 0xa4], ebx
jmp 0x670733
mov esi, dword [esp + 0x88]
cmp edx, 0x20
jbe 0x670878
mov dword [esp + 0x10], 3
jmp 0x670900
cmp esi, dword [esp + 0x90]
jb 0x670895
mov eax, edx
mov dword [esp + 0x10], 0
shr eax, 3
sub esi, eax
and edx, 7
jmp 0x6708e5
mov edi, dword [esp + 0x8c]
cmp esi, edi
jne 0x6708bd
mov edi, dword [esp + 0x38]
cmp edx, 0x20
jae 0x6708b3
mov dword [esp + 0x10], 1
jmp 0x670904
mov dword [esp + 0x10], 2
jmp 0x670904
mov ecx, edx
mov dword [esp + 0x10], 0
shr ecx, 3
mov eax, esi
sub eax, ecx
cmp eax, edi
jae 0x6708de
mov ecx, esi
mov dword [esp + 0x10], 1
sub ecx, edi
imul eax, ecx, 0xfffffff8
sub esi, ecx
add edx, eax
mov eax, dword [esi]
mov dword [esp + 0x80], eax
mov dword [esp + 0x84], edx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x88], esi
mov edi, dword [esp + 0x38]
neg edi
cmp ebx, dword [esp + 0x3c]
mov dword [esp + 0x40], edi
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x67095f
mov edi, dword [esp + 0x14]
mov ecx, edx
mov edx, dword [esp + 0x80]
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x38]
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x1c]
movzx eax, byte [edi + edx*2 + 1]
add ecx, eax
mov al, byte [edi + edx*2]
mov byte [ebx], al
mov edx, ecx
mov dword [esp + 0x1c], ecx
inc ebx
mov dword [esp + 0x84], ecx
jmp 0x670866
cmp ebx, dword [esp + 0x3c]
jae 0x6709a4
mov ebp, dword [esp + 0x80]
and edi, 0x1f
mov esi, dword [esp + 0x14]
mov ecx, edx
mov edx, ebp
and ecx, 0x1f
shl edx, cl
mov ecx, edi
shr edx, cl
mov ecx, dword [esp + 0x1c]
movzx eax, byte [esi + edx*2 + 1]
add ecx, eax
mov al, byte [esi + edx*2]
mov byte [ebx], al
mov edx, ecx
inc ebx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x84], ecx
cmp ebx, dword [esp + 0x3c]
jb 0x670973
mov ecx, dword [esp + 0x18]
mov edi, dword [esp + 0x20]
add ecx, 0xfffffffd
mov esi, dword [esp + 0x4c]
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x24], ecx
nop dword [eax + eax]
cmp edi, 0x20
jbe 0x6709cc
mov ebx, 3
jmp 0x670a2b
cmp esi, dword [esp + 0x54]
jb 0x6709e6
mov eax, edi
and edi, 7
shr eax, 3
sub esi, eax
mov ebx, dword [esi]
mov dword [esp + 0x44], ebx
xor ebx, ebx
jmp 0x670a23
cmp esi, dword [esp + 0x50]
jne 0x6709f6
cmp edi, 0x20
sbb ebx, ebx
add ebx, 2
jmp 0x670a2b
mov ecx, edi
mov eax, esi
shr ecx, 3
xor ebx, ebx
sub eax, ecx
cmp eax, dword [esp + 0x50]
jae 0x670a12
mov ecx, esi
mov ebx, 1
sub ecx, dword [esp + 0x50]
imul eax, ecx, 0xfffffff8
sub esi, ecx
mov ecx, dword [esp + 0x24]
add edi, eax
mov eax, dword [esi]
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], edi
mov dword [esp + 0x4c], esi
cmp edx, ecx
sbb ecx, ecx
xor eax, eax
neg ecx
test ebx, ebx
sete al
test eax, ecx
je 0x670aa4
mov ebx, dword [esp + 0x38]
mov ecx, edi
mov edx, dword [esp + 0x44]
and ecx, 0x1f
shl edx, cl
neg ebx
and ebx, 0x1f
mov ecx, ebx
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2 + 1]
add edi, eax
movzx eax, byte [ecx + edx*2]
mov edx, dword [esp + 0x2c]
mov ecx, edi
and ecx, 0x1f
mov byte [edx], al
mov eax, dword [esp + 0x44]
shl eax, cl
mov ecx, ebx
shr eax, cl
mov ecx, dword [esp + 0x14]
movzx ebx, byte [ecx + eax*2 + 1]
movzx eax, byte [ecx + eax*2]
add ebx, edi
mov ecx, dword [esp + 0x24]
mov edi, ebx
mov byte [edx + 1], al
add edx, 2
mov dword [esp + 0x20], ebx
mov dword [esp + 0x48], edi
mov dword [esp + 0x2c], edx
jmp 0x6709c0
mov ebp, dword [esp + 0x4c]
mov ebx, dword [esp + 0x40]
nop dword [eax]
cmp edi, 0x20
jbe 0x670abf
mov dword [esp + 0x20], 3
jmp 0x670b3a
cmp ebp, dword [esp + 0x54]
jb 0x670ad9
mov eax, edi
mov dword [esp + 0x20], 0
shr eax, 3
sub ebp, eax
and edi, 7
jmp 0x670b2b
cmp ebp, dword [esp + 0x50]
jne 0x670aff
mov ecx, ebx
mov eax, 0x1f
cmp edi, 0x20
jae 0x670af5
mov dword [esp + 0x20], 1
jmp 0x670b41
mov dword [esp + 0x20], 2
jmp 0x670b41
mov ecx, edi
mov dword [esp + 0x20], 0
shr ecx, 3
mov eax, ebp
sub eax, ecx
cmp eax, dword [esp + 0x50]
jae 0x670b24
mov ecx, ebp
mov dword [esp + 0x20], 1
sub ecx, dword [esp + 0x50]
imul eax, ecx, 0xfffffff8
sub ebp, ecx
add edi, eax
mov eax, dword [ebp]
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], edi
mov dword [esp + 0x4c], ebp
mov ecx, ebx
mov eax, 0x1f
and eax, ecx
cmp edx, dword [esp + 0x18]
mov dword [esp + 0x10], eax
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x20], eax
sete al
test eax, ecx
je 0x670b90
mov edx, dword [esp + 0x44]
mov ecx, edi
and ecx, 0x1f
shl edx, cl
mov ecx, ebx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2 + 1]
add edi, eax
mov al, byte [ecx + edx*2]
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x48], edi
mov byte [edx], al
inc edx
mov dword [esp + 0x2c], edx
jmp 0x670ab0
cmp edx, dword [esp + 0x18]
jae 0x670bc9
mov esi, dword [esp + 0x2c]
mov ebp, dword [esp + 0x14]
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x44]
mov ecx, edi
and ecx, 0x1f
shl edx, cl
mov ecx, ebx
shr edx, cl
movzx eax, byte [ebp + edx*2 + 1]
add edi, eax
mov al, byte [ebp + edx*2]
mov byte [esi], al
inc esi
cmp esi, dword [esp + 0x18]
jb 0x670ba2
mov dword [esp + 0x48], edi
mov ecx, dword [esp + 0x94]
mov ebx, dword [esp + 0x30]
add ecx, 0xfffffffd
mov ebp, dword [esp + 0x74]
mov edi, dword [esp + 0x34]
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x24], ecx
cmp ebx, 0x20
jbe 0x670bf6
mov dword [esp + 0x18], 3
jmp 0x670c67
cmp ebp, dword [esp + 0x7c]
jb 0x670c10
mov eax, ebx
mov dword [esp + 0x18], 0
shr eax, 3
sub ebp, eax
and ebx, 7
jmp 0x670c54
cmp ebp, dword [esp + 0x78]
jne 0x670c24
cmp ebx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x18], eax
jmp 0x670c67
mov edx, dword [esp + 0x78]
mov ecx, ebx
shr ecx, 3
mov eax, ebp
sub eax, ecx
mov dword [esp + 0x18], 0
cmp eax, edx
jae 0x670c49
mov ecx, ebp
mov dword [esp + 0x18], 1
sub ecx, edx
imul eax, ecx, 0xfffffff8
sub ebp, ecx
mov ecx, dword [esp + 0x24]
add ebx, eax
mov edx, dword [ebp]
mov dword [esp + 0x6c], edx
mov dword [esp + 0x70], ebx
mov dword [esp + 0x30], ebx
mov dword [esp + 0x74], ebp
cmp edi, ecx
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x18], eax
sete al
test eax, ecx
je 0x670ce8
mov edi, dword [esp + 0x30]
mov ecx, edi
mov ebx, dword [esp + 0x38]
and ecx, 0x1f
shl edx, cl
neg ebx
and ebx, 0x1f
mov ecx, ebx
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2 + 1]
add edi, eax
movzx eax, byte [ecx + edx*2]
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x6c]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x34], ecx
mov eax, edx
mov ecx, edi
and ecx, 0x1f
shl eax, cl
mov ecx, ebx
shr eax, cl
mov ecx, dword [esp + 0x14]
movzx ebx, byte [ecx + eax*2 + 1]
movzx eax, byte [ecx + eax*2]
add ebx, edi
mov edi, dword [esp + 0x34]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x30], ebx
mov dword [esp + 0x70], ebx
mov byte [edi], al
inc edi
mov dword [esp + 0x34], edi
jmp 0x670be7
mov ebp, dword [esp + 0x28]
mov esi, dword [esp + 0x74]
cmp ebx, 0x20
jbe 0x670d03
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x18], 3
jmp 0x670d6d
cmp esi, dword [esp + 0x7c]
jb 0x670d1d
mov eax, ebx
mov dword [esp + 0x18], 0
shr eax, 3
sub esi, eax
and ebx, 7
jmp 0x670d5f
mov edx, dword [esp + 0x78]
cmp esi, edx
jne 0x670d37
mov edx, dword [esp + 0x6c]
cmp ebx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x18], eax
jmp 0x670d6d
mov ecx, ebx
mov dword [esp + 0x18], 0
shr ecx, 3
mov eax, esi
sub eax, ecx
cmp eax, edx
jae 0x670d58
mov ecx, esi
mov dword [esp + 0x18], 1
sub ecx, edx
imul eax, ecx, 0xfffffff8
sub esi, ecx
add ebx, eax
mov edx, dword [esi]
mov dword [esp + 0x6c], edx
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], esi
cmp edi, dword [esp + 0x94]
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x18], eax
sete al
test eax, ecx
je 0x670dac
mov ecx, ebx
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x10]
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2 + 1]
add ebx, eax
mov al, byte [ecx + edx*2]
mov byte [edi], al
inc edi
mov dword [esp + 0x70], ebx
jmp 0x670cf0
mov esi, dword [esp + 0x98]
cmp edi, dword [esp + 0x94]
jae 0x670df9
mov ebp, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
mov ecx, ebx
and ecx, 0x1f
shl edx, cl
mov ecx, esi
shr edx, cl
movzx eax, byte [ebp + edx*2 + 1]
add ebx, eax
mov al, byte [ebp + edx*2]
mov edx, dword [esp + 0x6c]
mov byte [edi], al
inc edi
cmp edi, dword [esp + 0x94]
jb 0x670dc4
mov esi, dword [esp + 0x98]
mov ebp, dword [esp + 0x28]
mov dword [esp + 0x70], ebx
mov ecx, dword [esp + 0x9c]
mov ebx, dword [esp + 0x14]
add ecx, 0xfffffffd
mov dword [esp + 0x24], ecx
mov edi, dword [esp + 0x64]
mov edx, dword [esp + 0x60]
cmp ebp, 0x20
jbe 0x670e26
mov edi, dword [esp + 0x58]
mov dword [esp + 0x18], 3
jmp 0x670e90
cmp edx, dword [esp + 0x68]
jb 0x670e40
mov eax, ebp
mov dword [esp + 0x18], 0
shr eax, 3
sub edx, eax
and ebp, 7
jmp 0x670e82
cmp edx, edi
jne 0x670e56
mov edi, dword [esp + 0x58]
cmp ebp, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x18], eax
jmp 0x670e90
mov ecx, ebp
mov dword [esp + 0x18], 0
shr ecx, 3
mov eax, edx
sub eax, ecx
cmp eax, edi
jae 0x670e77
mov ecx, edx
mov dword [esp + 0x18], 1
sub ecx, edi
imul eax, ecx, 0xfffffff8
sub edx, ecx
mov ecx, dword [esp + 0x24]
add ebp, eax
mov edi, dword [edx]
mov dword [esp + 0x58], edi
mov dword [esp + 0x5c], ebp
mov dword [esp + 0x60], edx
cmp esi, ecx
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x18], eax
sete al
test eax, ecx
je 0x670f00
mov ebx, dword [esp + 0x38]
mov ecx, ebp
and ecx, 0x1f
neg ebx
and ebx, 0x1f
mov edx, edi
shl edx, cl
mov ecx, ebx
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx edi, byte [ecx + edx*2 + 1]
movzx eax, byte [ecx + edx*2]
add edi, ebp
mov byte [esi], al
mov ecx, edi
mov eax, dword [esp + 0x58]
and ecx, 0x1f
shl eax, cl
mov ecx, ebx
mov ebx, dword [esp + 0x14]
shr eax, cl
mov ecx, dword [esp + 0x24]
movzx ebp, byte [ebx + eax*2 + 1]
movzx eax, byte [ebx + eax*2]
add ebp, edi
mov byte [esi + 1], al
add esi, 2
mov dword [esp + 0x5c], ebp
jmp 0x670e0b
cmp ebp, 0x20
jbe 0x670f0c
mov edx, 3
jmp 0x670f7a
cmp edx, dword [esp + 0x68]
jb 0x670f26
mov eax, ebp
and ebp, 7
shr eax, 3
sub edx, eax
mov dword [esp + 0x60], edx
mov edi, dword [edx]
xor edx, edx
jmp 0x670f72
cmp edx, dword [esp + 0x64]
jne 0x670f3c
cmp ebp, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x3c], eax
mov edx, eax
jmp 0x670f7a
mov edi, dword [esp + 0x64]
mov ecx, ebp
shr ecx, 3
mov eax, edx
sub eax, ecx
mov dword [esp + 0x3c], 0
cmp eax, edi
jae 0x670f61
mov ecx, edx
mov dword [esp + 0x3c], 1
sub ecx, edi
sub edx, ecx
imul eax, ecx, 0xfffffff8
mov dword [esp + 0x60], edx
mov edi, dword [edx]
mov edx, dword [esp + 0x3c]
add ebp, eax
mov dword [esp + 0x58], edi
mov dword [esp + 0x5c], ebp
cmp esi, dword [esp + 0x9c]
sbb ecx, ecx
xor eax, eax
neg ecx
test edx, edx
sete al
test eax, ecx
je 0x670fb9
mov ecx, ebp
mov edx, edi
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x10]
shr edx, cl
movzx eax, byte [ebx + edx*2 + 1]
add ebp, eax
mov al, byte [ebx + edx*2]
mov edx, dword [esp + 0x60]
mov byte [esi], al
inc esi
mov dword [esp + 0x5c], ebp
jmp 0x670f00
cmp esi, dword [esp + 0x9c]
jae 0x670feb
mov ecx, ebp
mov edx, edi
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x10]
shr edx, cl
movzx eax, byte [ebx + edx*2 + 1]
add ebp, eax
mov al, byte [ebx + edx*2]
mov byte [esi], al
inc esi
cmp esi, dword [esp + 0x9c]
jb 0x670fc2
mov dword [esp + 0x5c], ebp
lea eax, [esp + 0x58]
push eax
call fcn.0066ed80
mov edx, eax
lea eax, [esp + 0x70]
push eax
call fcn.0066ed80
and edx, eax
lea eax, [esp + 0x4c]
push eax
call fcn.0066ed80
and edx, eax
lea eax, [esp + 0x8c]
push eax
call fcn.0066ed80
add esp, 0x10
mov ecx, 0xffffffec
test eax, edx
mov eax, dword [esp + 0xa8]
cmove eax, ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x90
ret