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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x170
mov ebx, ecx
cmp edx, 0x15
jae 0x612951
mov edi, edx
mov ecx, ebx
cmp edi, 1
jbe 0x612946
mov edx, edi
push 1
call fcn.00613bb0
add esp, 4
add esp, 0x170
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esp + 0x18c]
mov ecx, dword [esp + 0x188]
mov dword [esp + 0x24], edx
mov byte [esp + 0x14], 1
mov byte [esp + 0x1c], 1
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], ecx
mov esi, dword [esp + 0x24]
mov ecx, ebx
mov dword [esp + 0x28], ebx
nop
cmp dword [esp + 0x38], 0
je 0x6133e3
test byte [esp + 0x14], 1
mov dword [esp + 0x10], ecx
je 0x612d06
mov ecx, dword [esp + 0x184]
mov eax, esi
mov edx, esi
lea ebp, [esp + 0x60]
mov dword [esp + 0x60], 0
shr eax, 2
cmp edx, 0x31
mov dword [esp + 8], edx
lea edi, [eax + eax]
lea esi, [eax + eax*2]
mov dword [esp + 0x58], eax
mov dword [esp + 0x40], edi
mov dword [esp + 0x5c], esi
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x74], ecx
mov dword [esp + 0x78], edx
mov dword [esp + 0x7c], ebp
jbe 0x612a5d
lea ecx, [eax - 1]
inc eax
lea ebx, [esp + 0xf0]
lea ebp, [esp + 0x70]
lea edx, [esp + 0x44]
mov dword [esp + 0x44], ecx
mov dword [esp + 0xf0], eax
mov ecx, ebp
push ebx
lea eax, [esp + 0x5c]
push eax
call fcn.006139f0
add esp, 8
lea eax, [edi - 1]
or edi, 1
mov ecx, ebp
mov dword [esp + 0xf0], edi
lea edi, [esp + 0x44]
mov dword [esp + 0x44], eax
mov edx, edi
push ebx
lea eax, [esp + 0x44]
push eax
call fcn.006139f0
add esp, 8
lea eax, [esi - 1]
inc esi
mov ecx, ebp
mov edx, edi
mov dword [esp + 0x44], eax
mov dword [esp + 0xf0], esi
push ebx
mov ebx, dword [esp + 0x2c]
lea eax, [esp + 0x60]
push eax
call fcn.006139f0
add esp, 8
lea eax, [esp + 0x5c]
lea ecx, [esp + 0x70]
lea edx, [esp + 0x58]
push eax
lea eax, [esp + 0x44]
push eax
call fcn.006139f0
add esp, 8
mov eax, dword [esp + 0x60]
cmp eax, 0xc
jae 0x612aa0
mov ebp, dword [esp + 0x40]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 8]
test eax, eax
sete al
and al, byte [esp + 0x1c]
test byte [esp + 0x14], al
je 0x612aed
jmp 0x612d16
mov edi, dword [esp + 8]
mov esi, dword [esp + 0x10]
mov ecx, edi
mov eax, edi
mov edx, esi
shl ecx, 4
shr eax, 1
lea ecx, [esi + ecx - 0x10]
nop word [eax + eax]
movups xmm0, xmmword [edx]
movups xmm1, xmmword [ecx]
movups xmmword [edx], xmm1
movups xmmword [ecx], xmm0
add edx, 0x10
add ecx, 0xfffffff0
dec eax
jne 0x612ac0
mov ebp, dword [esp + 0x40]
mov al, 1
not ebp
add ebp, edi
and al, byte [esp + 0x1c]
test byte [esp + 0x14], al
jne 0x612d16
cmp dword [esp + 0x3c], 0
je 0x612d30
cmp ebp, edi
jae 0x6133ef
mov ebx, esi
mov esi, ebp
mov dword [esp], ebp
mov ebp, dword [esp + 0x3c]
shl esi, 4
mov ecx, dword [ebx + esi + 8]
mov eax, dword [ebp + 8]
mov edi, eax
sub edi, ecx
cmovb ecx, eax
push ecx
push dword [ebx + esi + 4]
push dword [ebp + 4]
call fcn.007be090
add esp, 0xc
mov ecx, dword [ebp + 0xc]
test eax, eax
cmovne edi, eax
xor eax, eax
cmp ecx, dword [ebx + esi + 0xc]
setb al
xor ecx, ecx
test edi, edi
sets cl
cmove ecx, eax
test cl, cl
jne 0x612d40
movsd xmm1, qword [ebx + 8]
add esi, ebx
movsd xmm0, qword [ebx]
lea eax, [ebx + 0x10]
movsd xmm3, qword [esi]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 8]
movsd qword [esp + 0x78], xmm1
movsd xmm1, qword [esi + 8]
movsd qword [esp + 0x70], xmm0
movsd xmm2, qword [esp + 0x70]
movsd qword [ebx], xmm3
movsd qword [ebx + 8], xmm1
movsd xmm1, qword [esp + 0x78]
movsd qword [esi], xmm2
movsd qword [esi + 8], xmm1
lea esi, [eax - 1]
mov edx, dword [ebx + 4]
mov ecx, dword [ebx + 8]
mov eax, dword [ebx]
mov dword [esp], edx
mov edx, dword [ebx + 0xc]
mov dword [esp + 4], ecx
lea ecx, [ebx + 0x1c]
xor ebx, ebx
mov dword [esp + 0xc], eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x18], edx
cmp ebx, esi
jae 0x612c17
mov edi, ebx
shl edi, 4
add edi, dword [esp + 0x34]
nop dword [eax + eax]
mov ecx, dword [esp + 4]
mov eax, dword [edi - 4]
mov ebp, ecx
sub ebp, eax
cmovb eax, ecx
push eax
push dword [edi - 8]
push dword [esp + 8]
call fcn.007be090
add esp, 0xc
mov ecx, dword [esp + 0x18]
test eax, eax
cmovne ebp, eax
xor eax, eax
cmp ecx, dword [edi]
setb al
xor ecx, ecx
test ebp, ebp
sets cl
cmove ecx, eax
cmp cl, 1
je 0x612c17
inc ebx
add edi, 0x10
cmp esi, ebx
jne 0x612bd0
mov ebx, esi
mov edi, esi
shl edi, 4
add edi, dword [esp + 0x20]
dec esi
cmp ebx, esi
jae 0x612cc0
mov ecx, dword [esp + 4]
mov eax, dword [edi - 8]
mov ebp, ecx
sub ebp, eax
cmovb eax, ecx
push eax
push dword [edi - 0xc]
push dword [esp + 8]
call fcn.007be090
add esp, 0xc
test eax, eax
cmovne ebp, eax
mov eax, dword [esp + 0x18]
xor ecx, ecx
cmp eax, dword [edi - 4]
setb cl
xor eax, eax
test ebp, ebp
sets al
cmove eax, ecx
add edi, 0xfffffff0
test al, al
jne 0x612c20
mov ecx, dword [esp + 0x20]
mov eax, ebx
movsd xmm3, qword [edi + 8]
inc ebx
shl eax, 4
movsd xmm0, qword [ecx + eax]
movsd xmm1, qword [ecx + eax + 8]
movsd qword [esp + 0x70], xmm0
movsd xmm0, qword [edi]
movsd qword [esp + 0x78], xmm1
movsd qword [ecx + eax + 8], xmm3
movsd xmm2, qword [esp + 0x78]
movsd qword [ecx + eax], xmm0
movsd xmm0, qword [esp + 0x70]
movsd qword [edi + 8], xmm2
movsd qword [edi], xmm0
cmp ebx, esi
jb 0x612bc2
jmp 0x612c17
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
mov edx, dword [esp]
mov esi, dword [esp + 4]
inc ebx
mov dword [ecx], eax
mov dword [ecx + 4], edx
mov edx, dword [esp + 0x18]
mov dword [ecx + 8], esi
mov dword [ecx + 0xc], edx
mov edx, dword [esp + 8]
mov edi, edx
sub edi, ebx
jb 0x613415
shl ebx, 4
mov esi, edi
add ecx, ebx
mov ebx, dword [esp + 0x28]
cmp edi, 0x15
jae 0x612980
jmp 0x612935
mov edx, esi
call fcn.007cf8d0
dec dword [esp + 0x38]
jmp 0x61299a
mov ecx, esi
mov edx, edi
call fcn.007cfa90
test al, al
je 0x612aed
jmp 0x612946
mov edx, dword [esp + 0x24]
jmp 0x612d47
mov edx, dword [esp + 8]
mov ebp, dword [esp]
cmp ebp, edx
jae 0x6133fd
movsd xmm1, qword [ebx + 8]
shl ebp, 4
movsd xmm0, qword [ebx]
lea eax, [ebx + 0x10]
lea edi, [edx - 1]
mov dword [esp + 0x28], ebx
mov dword [esp + 0x24], edx
movsd xmm3, qword [ebx + ebp]
mov dword [esp], eax
movsd qword [esp + 0x78], xmm1
movsd xmm1, qword [ebx + ebp + 8]
movsd qword [esp + 0x70], xmm0
movsd xmm2, qword [esp + 0x70]
movsd qword [ebx], xmm3
movsd qword [ebx + 8], xmm1
movsd xmm1, qword [esp + 0x78]
movsd qword [ebx + ebp], xmm2
movsd qword [ebx + ebp + 8], xmm1
mov eax, dword [ebx]
mov ecx, dword [ebx + 4]
mov dword [esp + 0x6c], eax
mov eax, dword [ebx + 8]
mov dword [esp + 8], ecx
mov dword [esp + 0x18], eax
mov eax, dword [ebx + 0xc]
add ebx, 0x1c
mov dword [esp + 0x10], eax
xor eax, eax
nop word cs:[eax + eax]
nop dword [eax]
mov dword [esp + 0x2c], eax
mov eax, dword [ebx - 4]
mov edx, dword [esp + 0x18]
mov ebp, eax
sub ebp, edx
cmovae eax, edx
push eax
push ecx
push dword [ebx - 8]
call fcn.007be090
add esp, 0xc
mov ecx, dword [esp + 0x10]
test eax, eax
cmovne ebp, eax
xor eax, eax
cmp dword [ebx], ecx
setb al
xor ecx, ecx
test ebp, ebp
sets cl
cmove ecx, eax
test cl, cl
je 0x612e21
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 8]
add ebx, 0x10
inc eax
cmp edi, eax
jne 0x612dd0
mov dword [esp + 0x2c], edi
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
shl eax, 4
lea ebx, [ecx + eax - 4]
mov ecx, dword [esp + 0x2c]
nop word cs:[eax + eax]
nop
mov esi, edi
cmp ecx, edi
jae 0x612e8c
mov eax, dword [ebx - 4]
mov ecx, dword [esp + 0x18]
lea edi, [esi - 1]
mov ebp, eax
sub ebp, ecx
cmovae eax, ecx
push eax
push dword [esp + 0xc]
push dword [ebx - 8]
call fcn.007be090
add esp, 0xc
test eax, eax
cmovne ebp, eax
mov eax, dword [esp + 0x10]
xor ecx, ecx
cmp dword [ebx], eax
setb cl
xor eax, eax
test ebp, ebp
sets al
cmove eax, ecx
mov ecx, dword [esp + 0x2c]
add ebx, 0xfffffff0
cmp al, 1
jne 0x612e40
cmp ecx, esi
ja 0x613421
mov eax, dword [esp]
shl ecx, 4
mov ebp, esi
mov dword [esp + 0x64], esi
mov esi, 0x80
xor edx, edx
mov dword [esp], 0
mov dword [esp + 4], 0
mov dword [esp + 0xc], 0x80
shl ebp, 4
add ecx, eax
add ebp, eax
mov dword [esp + 0x68], ecx
mov edi, ecx
xor ecx, ecx
jmp 0x612f4a
mov esi, dword [esp]
mov ebp, edi
movsd xmm0, qword [esp + 0x44]
movsd xmm1, qword [esp + 0x4c]
mov eax, dword [esp + 0x20]
shl edx, 4
inc esi
inc ebp
mov ebx, esi
mov esi, dword [esp + 0x34]
movsd qword [eax + edx + 8], xmm1
movsd qword [eax + edx], xmm0
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x1c]
mov edi, dword [esp + 0xc]
mov eax, 0
mov dword [esp + 4], ebp
mov dword [esp], ebx
cmp ebp, ecx
mov dword [esp + 0xc], edi
mov ebp, 0
cmove eax, edi
mov edi, dword [esp + 0x14]
shl eax, 4
add edi, eax
mov eax, esi
neg eax
cmp ebx, edx
cmovne eax, ebp
mov ebp, dword [esp + 0x20]
shl eax, 4
add ebp, eax
cmp dword [esp + 0x54], 0x1010
jb 0x6131f0
mov eax, ebp
mov dword [esp + 0x14], edi
sub eax, edi
cmp eax, 0x1010
mov dword [esp + 0x54], eax
jae 0x612fb8
mov edi, ebp
mov ebp, dword [esp + 4]
shr eax, 4
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x30], edx
mov ebx, eax
cmp ebp, ecx
setb cl
cmp dword [esp], edx
setb dl
or dl, cl
lea ecx, [eax - 0x80]
test dl, dl
cmovne ebx, ecx
cmp ebp, dword [esp + 0x1c]
mov ebp, edi
mov edi, dword [esp + 0x14]
cmovb esi, ecx
mov ecx, dword [esp + 0xc]
cmovae ecx, ebx
test dl, dl
mov edx, dword [esp + 0x30]
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0x1c]
jne 0x612fb8
mov esi, dword [esp + 0x54]
shr esi, 5
sub eax, esi
mov dword [esp + 0xc], esi
mov esi, eax
mov eax, dword [esp + 4]
mov dword [esp + 0x20], ebp
mov dword [esp + 0x34], esi
cmp eax, ecx
jne 0x613070
cmp dword [esp + 0xc], 0
je 0x61305b
xor eax, eax
lea ecx, [esp + 0xf0]
mov ebx, edi
mov dword [esp + 0x30], edx
nop word cs:[eax + eax]
lea ebp, [eax + 1]
mov byte [ecx], al
mov eax, dword [ebx + 8]
mov edi, ecx
mov ecx, dword [esp + 0x18]
mov esi, eax
sub esi, ecx
cmovae eax, ecx
push eax
push dword [esp + 0xc]
push dword [ebx + 4]
call fcn.007be090
add esp, 0xc
mov ecx, dword [esp + 0x10]
test eax, eax
mov edx, dword [esp + 0xc]
cmovne esi, eax
xor eax, eax
cmp dword [ebx + 0xc], ecx
setae al
xor ecx, ecx
test esi, esi
setns cl
cmove ecx, eax
add ebx, 0x10
mov eax, ebp
movzx ecx, cl
add ecx, edi
cmp edx, ebp
jne 0x612ff0
mov ebp, dword [esp + 0x20]
mov edi, dword [esp + 0x14]
mov esi, dword [esp + 0x34]
mov edx, dword [esp + 0x30]
lea eax, [esp + 0xf0]
jmp 0x613070
lea eax, [esp + 0xf0]
mov ecx, eax
nop word cs:[eax + eax]
nop
mov ebx, dword [esp]
mov dword [esp + 0x1c], ecx
mov dword [esp + 4], eax
cmp ebx, edx
jne 0x6130fc
test esi, esi
je 0x6130f0
add ebp, 0xfffffffc
xor eax, eax
lea edx, [esp + 0x70]
nop dword [eax]
lea edi, [eax + 1]
mov byte [edx], al
mov eax, dword [ebp - 4]
mov ecx, dword [esp + 0x18]
mov ebx, edx
mov esi, eax
sub esi, ecx
cmovae eax, ecx
push eax
push dword [esp + 0xc]
push dword [ebp - 8]
call fcn.007be090
add esp, 0xc
mov ecx, dword [esp + 0x10]
test eax, eax
cmovne esi, eax
xor eax, eax
cmp dword [ebp], ecx
setb al
xor ecx, ecx
test esi, esi
mov esi, dword [esp + 0x34]
sets cl
cmove ecx, eax
add ebp, 0xfffffff0
mov eax, edi
movzx edx, cl
add edx, ebx
cmp esi, edi
jne 0x613090
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x1c]
lea ebx, [esp + 0x70]
jmp 0x6130f8
lea eax, [esp + 0x70]
mov edx, eax
mov ebx, eax
mov eax, dword [esp + 4]
sub ecx, eax
mov ebp, eax
mov eax, edx
sub eax, ebx
cmp ecx, eax
cmovb eax, ecx
test eax, eax
je 0x612eff
movzx ecx, byte [ebp]
mov ebp, dword [esp + 0x20]
mov dword [esp + 0x30], edx
mov dword [esp], ebx
shl ecx, 4
movsd xmm0, qword [edi + ecx]
movsd xmm1, qword [edi + ecx + 8]
movsd qword [esp + 0x4c], xmm1
movsd qword [esp + 0x44], xmm0
movzx ecx, byte [ebx]
mov ebx, edi
mov edi, ebp
mov edx, ecx
not edx
mov esi, edx
shl esi, 4
movsd xmm0, qword [ebp + esi]
movsd xmm1, qword [edi + esi + 8]
mov esi, dword [esp + 4]
mov ebp, ebx
mov edi, esi
movzx esi, byte [esi]
shl esi, 4
cmp eax, 1
movsd qword [ebx + esi + 8], xmm1
movsd qword [ebx + esi], xmm0
je 0x612ed0
mov esi, dword [esp]
dec eax
mov ebp, edi
nop
movzx edi, byte [ebp + 1]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x14]
mov ebx, dword [esp + 0x20]
movzx ecx, cl
mov dword [esp], esi
inc ebp
not ecx
shl ecx, 4
shl edi, 4
movsd xmm0, qword [eax + edi]
movsd xmm1, qword [eax + edi + 8]
movsd qword [ebx + ecx + 8], xmm1
movsd qword [ebx + ecx], xmm0
movzx ecx, byte [esi + 1]
mov edx, ecx
not edx
mov esi, edx
shl esi, 4
movsd xmm0, qword [ebx + esi]
movsd xmm1, qword [ebx + esi + 8]
mov esi, dword [esp]
movsd qword [eax + edi + 8], xmm1
movsd qword [eax + edi], xmm0
mov eax, dword [esp + 4]
inc esi
dec eax
jne 0x613180
jmp 0x612ed5
cmp dword [esp + 4], ecx
mov esi, edi
jae 0x613270
mov edx, dword [esp + 0x24]
mov ebx, dword [esp + 4]
mov edi, esi
nop word cs:[eax + eax]
nop dword [eax]
movzx eax, byte [ecx - 1]
movsd xmm3, qword [ebp - 8]
dec ecx
lea esi, [ebp - 0x10]
shl eax, 4
cmp ebx, ecx
movsd xmm0, qword [edi + eax]
movsd xmm1, qword [edi + eax + 8]
movsd qword [esp + 0x44], xmm0
movsd xmm0, qword [ebp - 0x10]
movsd qword [esp + 0x4c], xmm1
movsd qword [edi + eax + 8], xmm3
movsd xmm2, qword [esp + 0x4c]
movsd qword [edi + eax], xmm0
movsd xmm0, qword [esp + 0x44]
movsd qword [ebp - 8], xmm2
movsd qword [ebp - 0x10], xmm0
mov ebp, esi
jb 0x613210
jmp 0x6132d3
mov ecx, dword [esp]
mov edi, edx
cmp ecx, edx
mov edx, dword [esp + 0x24]
jae 0x6132d3
nop dword [eax]
movzx eax, byte [edi - 1]
movsd xmm0, qword [esi]
movsd xmm1, qword [esi + 8]
dec edi
not eax
movsd qword [esp + 0x44], xmm0
movsd qword [esp + 0x4c], xmm1
shl eax, 4
movsd xmm2, qword [esp + 0x4c]
movsd xmm0, qword [ebp + eax]
movsd xmm1, qword [ebp + eax + 8]
movsd qword [esi], xmm0
movsd xmm0, qword [esp + 0x44]
movsd qword [esi + 8], xmm1
add esi, 0x10
cmp ecx, edi
movsd qword [ebp + eax + 8], xmm2
movsd qword [ebp + eax], xmm0
jb 0x613280
mov ebp, dword [esp + 0x28]
mov eax, dword [esp + 0x6c]
sub esi, dword [esp + 0x68]
mov ecx, dword [esp + 0x10]
mov edi, edx
mov dword [ebp], eax
mov eax, dword [esp + 8]
shr esi, 4
mov dword [ebp + 4], eax
mov eax, dword [esp + 0x18]
mov dword [ebp + 8], eax
mov eax, dword [esp + 0x2c]
mov dword [ebp + 0xc], ecx
add esi, eax
sub edi, esi
jbe 0x613409
cmp eax, dword [esp + 0x64]
movsd xmm0, qword [ebp]
mov eax, esi
movsd xmm1, qword [ebp + 8]
mov ecx, edi
setae byte [esp + 0x1c]
shl eax, 4
movsd qword [esp + 0x70], xmm0
movsd qword [esp + 0x78], xmm1
cmp esi, edi
movsd xmm0, qword [ebp + eax]
movsd xmm1, qword [ebp + eax + 8]
cmovb ecx, esi
shr edx, 3
movsd xmm2, qword [esp + 0x78]
lea ebx, [ebp + eax + 0x10]
cmp ecx, edx
lea ecx, [ebp + eax]
setae byte [esp + 0x14]
dec edi
mov dword [esp], ecx
cmp esi, edi
movsd qword [ebp], xmm0
movsd xmm0, qword [esp + 0x70]
movsd qword [ebp + 8], xmm1
movsd qword [ebp + eax + 8], xmm2
movsd qword [ebp + eax], xmm0
jae 0x6133b0
mov ecx, ebp
mov edx, esi
push dword [esp + 0x38]
push dword [esp + 0x40]
push dword [esp + 0x18c]
call fcn.00612920
add esp, 0xc
mov eax, dword [esp]
mov dword [esp + 0x3c], eax
jmp 0x6133cf
mov ecx, ebx
mov edx, edi
push dword [esp + 0x38]
push dword [esp + 4]
push dword [esp + 0x18c]
call fcn.00612920
add esp, 0xc
mov ebx, ebp
mov edi, esi
cmp edi, 0x15
mov ecx, ebx
mov dword [esp + 0x24], edi
jae 0x612975
jmp 0x612935
mov edx, esi
call fcn.007cf830
jmp 0x612946
mov ecx, ebp
mov edx, edi
push 0x8abdcc
call fcn.007c1be0
mov ecx, ebp
push 0x8abe1c
call fcn.007c1be0
mov ecx, esi
push 0x8abe3c
call fcn.007c1be0
mov ecx, ebx
push 0x8abddc
call fcn.007c1b80
mov edx, esi
push 0x8abe2c
call fcn.007c1e60
int3