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

Disassembly:
sub esp, 0xa8
mov eax, dword [0x674c412c]
xor eax, esp
mov dword [esp + 0xa4], eax
mov edx, dword [esp + 0xb0]
sub dword [esp + 0xb4], edx
push ebx
mov ebx, dword [esp + 0xb0]
push ebp
push esi
push edi
mov ecx, dword [ebx + 0x18]
lea esi, [esp + 0x9c]
mov ebp, dword [ebx + 0x30]
mov edi, dword [ebx + 0x34]
push esi
mov eax, dword [ecx]
push dword [ebp + edx*4]
mov dword [esp + 0x58], ebx
push ecx
mov eax, dword [eax + 0x10]
mov dword [esp + 0x28], edx
mov dword [esp + 0x4c], ebp
mov dword [esp + 0x20], edi
call eax
add esp, 0xc
cmp dword [ebx + 0x10], 4
jne 0x670ba4bf
mov ecx, dword [esp + 0xa0]
mov eax, dword [esp + 0xa8]
neg ecx
cmp ecx, eax
cmovg eax, ecx
mov dword [esp + 0xa8], eax
mov ecx, dword [ebx + 0x18]
push 0
push ecx
mov eax, dword [ecx]
mov eax, dword [eax + 0x14]
call eax
mov ecx, eax
add esp, 8
mov eax, 0x66666667
imul ecx
mov ecx, 0x100
sar edx, 2
mov esi, edx
shr esi, 0x1f
add esi, edx
cmp esi, ecx
cmovle ecx, esi
lea eax, [esi - 0x100]
add ecx, 0x40
cdq
and edx, 3
add eax, edx
mov edx, dword [esp + 0x1c]
sar eax, 2
add ecx, eax
cmp dword [esp + 0xc4], 2
mov ebp, ecx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x20], ebp
jne 0x670ba5eb
mov al, byte [edi + edx*2 + 3]
cmp al, 0xe8
je 0x670ba534
cmp al, 0xe4
je 0x670ba534
mov dword [esp + 0x20], ebp
cmp al, 0xe6
jne 0x670ba5eb
mov al, byte [edi + edx*2 + 5]
cmp al, 0x17
je 0x670ba572
cmp al, 0x18
je 0x670ba572
cmp al, 0x19
je 0x670ba572
cmp al, 0x1b
je 0x670ba572
cmp al, 0x1c
je 0x670ba572
cmp al, 0x1e
je 0x670ba572
cmp al, 0x1f
je 0x670ba572
cmp al, 0x21
je 0x670ba572
cmp al, 0x22
je 0x670ba572
cmp al, 0x23
je 0x670ba572
cmp al, 0x24
je 0x670ba572
cmp al, 0x6b
je 0x670ba572
mov ebp, ecx
mov dword [esp + 0x20], ebp
cmp al, 0x7a
jne 0x670ba5eb
mov eax, dword [ebx + 0x18]
lea ebp, [esp + 0x84]
mov edi, dword [esp + 0xa8]
push ebp
mov ebp, dword [esp + 0x44]
mov ecx, dword [eax]
push dword [ebp + edx*4 + 4]
push eax
mov eax, dword [ecx + 0x10]
call eax
mov eax, dword [ebx + 0x18]
lea edx, [esp + 0x90]
add edi, dword [esp + 0x9c]
push edx
mov edx, dword [esp + 0x2c]
mov ecx, dword [eax]
push dword [ebp + edx*4 + 8]
push eax
mov eax, dword [ecx + 0x10]
call eax
add edi, dword [esp + 0xa8]
lea eax, [esi + esi*4]
mov ecx, dword [esp + 0x54]
add eax, eax
mov ebp, ecx
add esp, 0x18
mov dword [esp + 0x20], ebp
lea ecx, [edi + ecx*2]
cmp ecx, eax
jle 0x670ba5e3
sub eax, edi
cdq
sub eax, edx
mov ebp, eax
sar ebp, 1
mov dword [esp + 0x20], ebp
mov edx, dword [esp + 0x1c]
mov edi, dword [esp + 0x14]
mov al, byte [ebx + 0x14]
xorps xmm0, xmm0
and al, 1
mov byte [esp + 0x13], 0
cmp dword [esp + 0xc4], 1
mov byte [esp + 0x1b], al
movups xmmword [esp + 0x5c], xmm0
mov dword [esp + 0x44], 1
movups xmmword [esp + 0x24], xmm0
movq qword [esp + 0x54], xmm0
jl 0x670ba8d8
mov eax, dword [esp + 0x1c]
lea edx, [edx*4 + 4]
mov dword [esp + 0x3c], edx
lea edi, [edi + eax*2]
add edi, 3
mov dword [esp + 0x48], edi
nop dword [eax + eax]
mov eax, dword [ebx + 0x18]
lea esi, [esp + 0x6c]
mov ebx, dword [esp + 0x40]
push esi
mov ecx, dword [eax]
push dword [edx + ebx]
push eax
mov eax, dword [ecx + 0x10]
call eax
mov cl, byte [edi]
xor ebx, ebx
add esp, 0xc
mov dword [esp + 0x14], ebx
mov edx, ebp
cmp cl, 0xc8
jae 0x670ba6f2
lea eax, [ecx - 0x1b]
cmp al, 9
ja 0x670ba67c
cmp ebp, 3
jge 0x670ba67c
lea edx, [ebp + 1]
cmp cl, 0xa
jb 0x670ba686
cmp cl, 0x12
jbe 0x670ba6f0
cmp cl, 0x14
je 0x670ba6f0
cmp cl, 0x16
je 0x670ba6f0
cmp cl, 0x1d
je 0x670ba6f0
cmp cl, 0x20
je 0x670ba6f0
cmp cl, 0x17
je 0x670ba6ec
cmp cl, 0x1b
je 0x670ba6ec
cmp cl, 0x1c
je 0x670ba6ec
cmp cl, 0x1e
je 0x670ba6ec
cmp cl, 0x1f
je 0x670ba6ec
cmp cl, 0x21
jb 0x670ba6bd
cmp cl, 0x24
jbe 0x670ba6ec
cmp cl, 9
je 0x670ba6e8
cmp cl, 0x67
je 0x670ba6e8
cmp cl, 0x76
je 0x670ba6e8
cmp cl, 0x18
je 0x670ba6e4
cmp cl, 0x6b
je 0x670ba6e4
cmp cl, 0x7a
je 0x670ba6e4
cmp cl, 0x19
jne 0x670ba6f2
mov cl, 0xe4
jmp 0x670ba6f2
mov cl, 0xe8
jmp 0x670ba6f2
mov cl, 0xde
jmp 0x670ba6f2
mov cl, 0xe6
jmp 0x670ba6f2
mov cl, 0xdc
cmp cl, byte [esp + 0x13]
je 0x670ba710
movups xmm0, xmmword [esp + 0x9c]
movq xmm1, qword [esp + 0xac]
movups xmmword [esp + 0x24], xmm0
jmp 0x670ba71b
movups xmm0, xmmword [esp + 0x5c]
movq xmm1, qword [esp + 0x54]
mov esi, dword [esp + 0x70]
xor ebp, ebp
mov edi, dword [esp + 0x6c]
movzx eax, cl
add eax, 0xffffff38
cmp eax, 0x22
ja case.0x670ba73d.201
movzx eax, byte [eax + 0x670ba930]
jmp dword [eax*4 + 0x670ba8f4]
mov ebx, edx
mov ebp, dword [esp + 0x24]
sub ebp, edi
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 0x28]
sub eax, esi
add eax, edx
add ebx, eax
mov dword [esp + 0x14], ebx
jmp 0x670ba7e6
mov ebx, edx
mov eax, dword [esp + 0x30]
sub eax, esi
add eax, dword [esp + 0x28]
add ebx, eax
mov eax, dword [esp + 0x2c]
sub eax, dword [esp + 0x74]
cdq
sub eax, edx
mov ebp, eax
sar ebp, 1
sub ebp, edi
add ebp, dword [esp + 0x24]
jmp 0x670ba7de
mov ebx, edx
mov ebp, dword [esp + 0x2c]
sub ebp, dword [esp + 0x74]
sub ebp, edi
add ebp, dword [esp + 0x24]
jmp 0x670ba74c
mov ebp, edx
neg ebp
jmp case.0x670ba73d.201
mov ebp, edx
jmp case.0x670ba73d.201
mov ebx, edx
neg ebx
mov ebp, dword [esp + 0x24]
sub ebp, edi
jmp 0x670ba7d2
mov ebx, edx
neg ebx
mov eax, dword [esp + 0x28]
sub eax, dword [esp + 0x78]
sub eax, esi
jmp 0x670ba76f
mov ebx, edx
neg ebx
mov ebp, dword [esp + 0x2c]
sub ebp, dword [esp + 0x74]
sub ebp, edi
add ebp, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
sub eax, dword [esp + 0x78]
sub eax, esi
add ebx, eax
mov dword [esp + 0x14], ebx
mov edx, dword [esp + 0x28]
add ebx, esi
mov byte [esp + 0x13], cl
lea eax, [edi + ebp]
mov ecx, dword [esp + 0x14]
cmp dword [esp + 0x24], eax
mov esi, eax
mov edi, ebx
movq qword [esp + 0x54], xmm1
cmovl esi, dword [esp + 0x24]
cmp edx, ebx
movups xmmword [esp + 0x84], xmm0
cmovl edi, edx
mov dword [esp + 0x84], esi
add eax, dword [esp + 0x74]
mov edx, dword [esp + 0x24]
add edx, dword [esp + 0x2c]
cmp edx, eax
mov dword [esp + 0x88], edi
mov dword [esp + 0x4c], edi
cmovle edx, eax
mov eax, dword [esp + 0x78]
sub edx, esi
add eax, ebx
mov ebx, dword [esp + 0x50]
mov esi, dword [esp + 0x44]
mov dword [esp + 0x8c], edx
mov edx, dword [esp + 0x28]
add edx, dword [esp + 0x30]
cmp edx, eax
cmovle edx, eax
mov eax, dword [ebx + 0x3c]
sub edx, edi
mov dword [esp + 0x90], edx
movups xmm0, xmmword [esp + 0x84]
mov edx, dword [esp + 0x1c]
add edx, esi
cmp byte [esp + 0x1b], 0
movups xmmword [esp + 0x5c], xmm0
movups xmmword [esp + 0x24], xmm0
je 0x670ba88a
mov dword [eax + edx*8], ebp
jmp 0x670ba89b
sub ebp, dword [esp + 0xac]
mov dword [eax + edx*8], ebp
sub ecx, dword [esp + 0xb0]
mov eax, dword [ebx + 0x3c]
inc esi
mov edi, dword [esp + 0x48]
mov ebp, dword [esp + 0x20]
add edi, 2
mov dword [esp + 0x44], esi
mov dword [eax + edx*8 + 4], ecx
mov edx, dword [esp + 0x3c]
mov eax, dword [ebx + 0x38]
mov dword [esp + 0x48], edi
mov dword [edx + eax], 0
add edx, 4
mov dword [esp + 0x3c], edx
cmp esi, dword [esp + 0xc4]
jle 0x670ba640
mov ecx, dword [esp + 0xb4]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.67267c3b
add esp, 0xa8
ret