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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x13c
mov eax, ecx
xorps xmm0, xmm0
push ebx
mov ebx, dword [ebp + 0xc]
push esi
mov ecx, dword [eax + 8]
mov dword [esp + 0xb4], eax
mov eax, dword [eax + 0x10]
push edi
cmp byte [ecx + 0x15e0], 0
mov edi, dword [ebp + 8]
movdqu xmmword [esp + 0x5c], xmm0
mov dword [esp + 0xcc], ecx
mov dword [esp + 0xd4], eax
je 0x6401196c
lea eax, [eax + eax*2]
lea esi, [ecx + eax*8]
lea eax, [esp + 0xa8]
mov dword [esi + 0x1410], 1
push eax
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov eax, dword [esp + 0xa8]
mov dword [esi + 0x1400], eax
mov eax, dword [esp + 0xac]
mov dword [esi + 0x1404], eax
lea eax, [esp + 0x118]
mov ecx, ebx
push eax
call fcn.6400cc10
lea eax, [esp + 0xe8]
mov ecx, edi
push eax
call fcn.6400cc10
mov eax, dword [edi + 8]
xor esi, esi
sub eax, dword [edi + 0x3c]
mov ebx, dword [edi + 0x34]
sub eax, ebx
mov ecx, dword [edi + 0x30]
mov dword [esp + 0xa4], eax
mov eax, dword [edi + 0xc]
cdq
xor eax, edx
mov dword [esp + 0x54], ecx
sub eax, edx
sub eax, dword [edi + 0x38]
sub eax, ecx
mov ecx, dword [esp + 0x104]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x114]
shl eax, 3
cdq
and edx, 7
add eax, edx
mov edx, 1
sar eax, 3
dec eax
test ecx, ecx
mov dword [esp + 0x4c], eax
cmove esi, edx
mov dword [esp + 0xbc], esi
cmp eax, ecx
jne 0x640119ef
dec eax
mov dword [esp + 0x4c], eax
mov ecx, dword [esp + 0xa4]
mov esi, dword [esp + 0x70]
inc ecx
inc esi
mov dword [esp + 0xc0], ecx
imul esi, ecx
shl esi, 2
push esi
call fcn.6402c590
add esp, 4
mov dword [esp + 0x78], eax
test eax, eax
je 0x640122a9
push esi
push eax
call fcn.6402c600
push esi
call fcn.6402c590
add esp, 0xc
mov dword [esp + 0x44], eax
test eax, eax
je 0x640122a9
push esi
push eax
call fcn.6402c600
add esp, 8
push dword [esp + 0x78]
push dword [esp + 0x48]
push edi
call fcn.640116c0
mov esi, dword [esp + 0x100]
mov edx, esi
imul edx, dword [esp + 0x54]
mov ecx, dword [esp + 0x114]
mov dword [esp + 0x8c], 0
add edx, dword [esp + 0xec]
lea eax, [edx + esi]
mov dword [esp + 0xb4], eax
mov eax, ecx
imul eax, ebx
mov ebx, 0xb
add edx, eax
mov eax, dword [esp + 0xb8]
sub ebx, dword [eax + 0x20]
mov eax, 1
add ebx, ebx
cmp ebx, 1
cmovl ebx, eax
mov dword [esp + 0xc8], ebx
lea eax, [ebx + ebx*2]
add eax, eax
cmp dword [esp + 0x70], 0
mov dword [esp + 0xdc], eax
jle 0x6401228d
mov eax, dword [esp + 0x124]
mov ebx, dword [esp + 0x130]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x120]
lea ecx, [ecx]
xor edi, edi
mov dword [esp + 0x84], edi
cmp dword [esp + 0xa4], edi
jle 0x64012253
mov ebx, dword [esp + 0x8c]
lea esi, [ebx + 1]
imul esi, dword [esp + 0xc0]
mov dword [esp + 0xe0], esi
mov esi, dword [esp + 0xc0]
imul esi, ebx
mov ebx, dword [esp + 0x4c]
add ebx, eax
add eax, dword [esp + 0x130]
mov dword [esp + 0x7c], ebx
mov ebx, dword [esp + 0x4c]
add eax, ebx
mov dword [esp + 0x6c], eax
mov eax, edx
sub eax, ecx
mov dword [esp + 0xd8], esi
add eax, ebx
mov dword [esp + 0x90], eax
lea eax, [edx + ecx]
sub edx, dword [esp + 0x100]
add eax, ebx
sub edx, ecx
mov dword [esp + 0x74], eax
add edx, ebx
mov dword [esp + 0x9c], edx
mov edx, dword [esp + 0x78]
mov eax, dword [esp + 0xe0]
add eax, edi
mov esi, dword [esp + 0x44]
mov ebx, dword [edx + eax*4]
mov ecx, dword [edx + eax*4 + 4]
mov edi, dword [esi + eax*4]
mov eax, dword [esi + eax*4 + 4]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x84]
add eax, dword [esp + 0xd8]
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x44]
mov dword [esp + 0x18], ebx
mov esi, dword [edx + eax*4]
mov edx, dword [edx + eax*4 + 4]
mov ecx, dword [ecx + eax*4]
mov dword [esp + 0x58], edx
mov edx, dword [esp + 0x44]
mov dword [esp + 0x48], edi
mov dword [esp + 0x28], esi
mov dword [esp + 0x24], ecx
mov eax, dword [edx + eax*4 + 4]
mov dword [esp + 0x1c], eax
mov eax, ebx
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x2c], eax
mov eax, edi
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x3c]
cdq
xor eax, edx
sub eax, edx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x14]
cdq
mov ebx, eax
mov eax, esi
xor ebx, edx
sub ebx, edx
cdq
mov edi, eax
mov eax, ecx
xor edi, edx
sub edi, edx
cdq
mov esi, eax
mov eax, dword [esp + 0x58]
xor esi, edx
sub esi, edx
cdq
mov ecx, eax
mov eax, dword [esp + 0x1c]
xor ecx, edx
sub ecx, edx
cdq
xor eax, edx
sub eax, edx
add eax, ecx
add eax, esi
add eax, edi
add eax, ebx
add eax, dword [esp + 0x20]
add eax, dword [esp + 0x50]
add eax, dword [esp + 0x2c]
mov dword [esp + 0x20], eax
cmp eax, dword [esp + 0xc8]
jle 0x640121f1
mov ecx, dword [esp + 0x58]
or eax, 0xffffffff
add ecx, dword [esp + 0x28]
mov ebx, dword [esp + 0x24]
mov esi, dword [esp + 0x1c]
mov dword [esp + 0x30], eax
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x18]
add eax, dword [esp + 0x3c]
add eax, ecx
mov dword [esp + 0x80], ecx
cdq
mov ecx, eax
mov eax, dword [esp + 0x48]
add eax, dword [esp + 0x14]
xor ecx, edx
sub ecx, edx
lea edx, [esi + ebx]
add ecx, dword [esp + 0x20]
add eax, edx
cdq
xor eax, edx
sub eax, edx
add eax, ecx
cmp eax, dword [esp + 0xdc]
jge 0x64011ca0
mov dword [esp + 0x30], 9
jmp 0x64011eb7
lea eax, [esi + ebx]
mov ecx, dword [esp + 0x3c]
mov edi, eax
add ecx, dword [esp + 0x18]
imul edi, eax
mov eax, dword [esp + 0x80]
imul eax, eax
mov edx, dword [esp + 0x14]
add edx, dword [esp + 0x48]
mov dword [esp + 0x40], ecx
mov dword [esp + 0x38], edx
add edi, eax
imul ecx, ecx
mov eax, dword [esp + 0x18]
add eax, dword [esp + 0x28]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x48]
add eax, ebx
mov dword [esp + 0xe4], edi
mov edi, eax
mov dword [esp + 0xc4], eax
imul edi, eax
mov eax, dword [esp + 0x88]
imul eax, eax
imul edx, edx
add edi, eax
mov eax, dword [esp + 0x3c]
add eax, dword [esp + 0x58]
add edx, ecx
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x14]
add eax, esi
mov dword [esp + 0xd0], edi
mov dword [esp + 0x50], eax
imul eax, eax
mov ecx, dword [esp + 0xe4]
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x94]
imul eax, eax
add dword [esp + 0x98], eax
mov eax, dword [esp + 0x18]
add eax, dword [esp + 0x58]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x48]
add eax, esi
mov edi, eax
mov dword [esp + 0xa0], eax
imul edi, eax
mov eax, dword [esp + 0x24]
imul eax, eax
add edi, eax
mov eax, dword [esp + 0x28]
add eax, dword [esp + 0x3c]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x14]
add eax, ebx
mov dword [esp + 0x20], edi
mov edi, eax
mov dword [esp + 0xa8], eax
imul edi, eax
mov eax, dword [esp + 0x1c]
imul eax, eax
add edi, eax
cmp ecx, edx
jle 0x64011db4
mov eax, dword [esp + 0x80]
lea edx, [esi + ebx]
mov dword [esp + 0x38], edx
mov edx, ecx
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0xd0]
cmp eax, edx
jle 0x64011dd7
mov ecx, dword [esp + 0x88]
mov edx, eax
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0xc4]
mov dword [esp + 0x38], ecx
mov eax, dword [esp + 0x98]
cmp eax, edx
jle 0x64011df7
mov ecx, dword [esp + 0x94]
mov edx, eax
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x38], ecx
mov eax, dword [esp + 0x20]
cmp eax, edx
jle 0x64011e50
mov ecx, dword [esp + 0x24]
mov edx, eax
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0xa0]
mov dword [esp + 0x38], ecx
mov ecx, eax
sar ecx, 4
cmp edi, ecx
jge 0x64011e50
imul esi, dword [esp + 0x48]
mov eax, dword [esp + 0x58]
imul eax, dword [esp + 0x18]
add esi, eax
mov eax, dword [esp + 0x30]
imul esi, esi
mov dword [esp + 0x30], eax
cmp esi, ecx
mov esi, eax
mov eax, 0xfffffffe
cmovl esi, eax
mov eax, edx
mov dword [esp + 0x30], esi
mov dword [esp + 0x2c], esi
jmp 0x64011e54
mov esi, dword [esp + 0x30]
cmp edi, edx
jle 0x64011e8d
mov ecx, dword [esp + 0x1c]
sar edi, 4
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0xa8]
mov dword [esp + 0x38], ecx
cmp eax, edi
jge 0x64011e8d
imul ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x28]
imul eax, dword [esp + 0x3c]
add ebx, eax
imul ebx, ebx
cmp ebx, edi
jl 0x640121f1
cmp esi, 0xffffffff
jne 0x64011eaf
lea eax, [esp + 0x2c]
push eax
lea edx, [esp + 0x3c]
lea ecx, [esp + 0x44]
call fcn.64011840
mov esi, dword [esp + 0x30]
add esp, 4
mov dword [esp + 0x30], esi
test esi, esi
js 0x640121f1
mov ebx, dword [esp + 0x4c]
cmp ebx, dword [esp + 0xbc]
jl 0x640121f1
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x114]
mov edx, ecx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x74]
mov esi, dword [esp + 0x90]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x144]
sub eax, dword [esp + 0x130]
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0x100]
sub edx, eax
mov dword [esp + 0x28], edx
lea edi, [eax + ecx]
mov eax, ebx
sub eax, dword [esp + 0xbc]
inc eax
mov dword [esp + 0xa0], edi
mov dword [esp + 0x20], eax
jmp 0x64011f47
mov ecx, dword [esp + 0x114]
add edi, esi
mov bl, byte [esi + ecx]
mov dword [esp + 0x2c], edi
lea eax, [esi + edx]
mov cl, byte [esi]
mov byte [esp + 0x37], cl
mov dl, byte [edi]
lea edi, [esp + 0x68]
push edi
lea edi, [esp + 0x68]
mov byte [esp + 0x16], dl
push edi
lea edi, [esp + 0x68]
push edi
lea edi, [esp + 0x68]
push edi
mov edi, dword [esp + 0x124]
movzx eax, byte [eax + edi]
push eax
mov eax, dword [esp + 0x3c]
mov edi, dword [esp + 0x40]
movzx eax, byte [esi + eax]
push eax
mov eax, dword [esp + 0x3c]
movzx eax, byte [eax]
push eax
mov eax, dword [esp + 0x34]
movzx eax, byte [eax]
push eax
movzx eax, bl
push eax
movzx eax, cl
push eax
mov eax, dword [esp + 0x13c]
mov ecx, dword [esp + 0x58]
movzx eax, byte [edi + eax]
push eax
movzx eax, dl
push eax
mov eax, dword [esp + 0x130]
movzx eax, byte [esi + eax]
push eax
mov eax, dword [esp + 0xec]
mov edx, dword [eax + 0x24]
call fcn.64010e50
mov cl, byte [esp + 0x46]
add esp, 0x34
mov byte [esp + 0x13], bl
mov dl, bl
mov byte [esp + 0x12], cl
cmp bl, cl
jbe 0x64011fec
mov dl, cl
jmp 0x64012003
mov edi, dword [esp + 0x2c]
lea eax, [esp + 0x12]
cmp bl, cl
lea ecx, [esp + 0x13]
cmovae eax, ecx
mov bl, byte [eax]
mov byte [esp + 0x13], bl
mov cl, byte [esp + 0x37]
mov byte [esp + 0x12], cl
cmp dl, cl
jbe 0x64012013
mov dl, cl
jmp 0x64012026
mov edi, dword [esp + 0x2c]
lea eax, [esp + 0x12]
cmp bl, cl
lea ecx, [esp + 0x13]
cmovae eax, ecx
mov bl, byte [eax]
movzx eax, bl
cmp dword [esp + 0x5c], eax
jge 0x64012043
mov eax, dword [esp + 0x5c]
movzx ecx, dl
cmp dword [esp + 0x5c], ecx
movzx ebx, al
movzx eax, dl
cmovl ebx, eax
mov eax, dword [esp + 0x14]
mov byte [eax], bl
mov eax, dword [esp + 0x114]
mov cl, byte [edi]
mov byte [esp + 0x12], cl
mov dl, byte [esi + eax]
mov byte [esp + 0x13], dl
mov bl, dl
cmp dl, cl
jbe 0x64012067
mov bl, cl
jmp 0x6401207a
cmp dl, cl
lea eax, [esp + 0x12]
lea edi, [esp + 0x13]
cmovae eax, edi
mov dl, byte [eax]
mov byte [esp + 0x13], dl
mov eax, dword [esp + 0x18]
mov cl, byte [eax]
mov byte [esp + 0x12], cl
cmp bl, cl
jbe 0x6401208c
mov bl, cl
jmp 0x6401209b
cmp dl, cl
lea eax, [esp + 0x12]
lea edi, [esp + 0x13]
cmovae eax, edi
mov dl, byte [eax]
movzx eax, dl
cmp dword [esp + 0x60], eax
jge 0x640120b8
mov eax, dword [esp + 0x60]
movzx ecx, bl
cmp dword [esp + 0x60], ecx
movzx edx, al
movzx eax, bl
cmovl edx, eax
mov eax, dword [esp + 0x144]
mov edi, dword [esp + 0x14]
mov byte [edi + eax], dl
mov eax, dword [esp + 0x114]
mov dl, byte [esi + eax]
mov eax, dword [esp + 0x28]
mov bl, dl
mov byte [esp + 0x13], dl
mov cl, byte [esi + eax]
mov byte [esp + 0x12], cl
cmp dl, cl
jbe 0x640120e9
mov bl, cl
jmp 0x64012100
mov edi, dword [esp + 0x14]
lea eax, [esp + 0x12]
cmp dl, cl
lea ecx, [esp + 0x13]
cmovae eax, ecx
mov dl, byte [eax]
mov byte [esp + 0x13], dl
mov cl, byte [esi]
mov byte [esp + 0x12], cl
cmp bl, cl
jbe 0x6401210e
mov bl, cl
jmp 0x64012121
mov edi, dword [esp + 0x14]
lea eax, [esp + 0x12]
cmp dl, cl
lea ecx, [esp + 0x13]
cmovae eax, ecx
mov dl, byte [eax]
movzx eax, dl
cmp dword [esp + 0x64], eax
jge 0x6401213e
mov eax, dword [esp + 0x64]
movzx ecx, bl
cmp dword [esp + 0x64], ecx
movzx edx, al
movzx eax, bl
cmovl edx, eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x28]
mov byte [eax], dl
mov eax, dword [esp + 0x114]
mov dl, byte [esi + ecx]
mov byte [esp + 0x12], dl
mov al, byte [esi + eax]
mov byte [esp + 0x13], al
mov bl, al
cmp al, dl
jbe 0x64012167
mov bl, dl
jmp 0x6401217e
mov edi, dword [esp + 0x14]
lea ecx, [esp + 0x12]
cmp al, dl
lea eax, [esp + 0x13]
cmovae ecx, eax
mov al, byte [ecx]
mov byte [esp + 0x13], al
mov ecx, dword [esp + 0x18]
mov dl, byte [ecx]
mov byte [esp + 0x12], dl
cmp bl, dl
jbe 0x64012190
mov bl, dl
jmp 0x640121a3
mov edi, dword [esp + 0x14]
lea ecx, [esp + 0x12]
cmp al, dl
lea eax, [esp + 0x13]
cmovae ecx, eax
mov al, byte [ecx]
movzx ecx, al
cmp dword [esp + 0x68], ecx
jge 0x640121c0
mov eax, dword [esp + 0x68]
movzx edx, bl
cmp dword [esp + 0x68], edx
movzx eax, al
movzx ecx, bl
cmovl eax, ecx
mov ecx, dword [esp + 0xa8]
dec esi
dec dword [esp + 0x1c]
dec dword [esp + 0x24]
dec dword [esp + 0x18]
mov edx, dword [esp + 0x28]
mov byte [edi + ecx], al
dec edi
dec dword [esp + 0x20]
mov dword [esp + 0x14], edi
mov edi, dword [esp + 0xa0]
jne 0x64011f40
mov eax, dword [esp + 0x144]
mov ebx, dword [esp + 0x7c]
mov edx, dword [esp + 0x6c]
add ebx, eax
mov edi, dword [esp + 0x84]
add edx, eax
mov ecx, dword [esp + 0x114]
inc edi
add dword [esp + 0x74], ecx
add ebx, eax
add dword [esp + 0x90], ecx
add edx, eax
add dword [esp + 0x9c], ecx
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x6c], edx
mov dword [esp + 0x84], edi
cmp edi, dword [esp + 0xa4]
jl 0x64011b63
mov esi, dword [esp + 0x100]
mov ebx, dword [esp + 0x130]
mov eax, dword [esp + 0xb4]
mov edi, dword [esp + 0x54]
add edi, ebx
lea edx, [ecx + eax]
add eax, esi
mov dword [esp + 0xb4], eax
mov eax, edi
add edi, ebx
mov dword [esp + 0x54], edi
mov edi, dword [esp + 0x8c]
inc edi
mov dword [esp + 0x8c], edi
cmp edi, dword [esp + 0x70]
jl 0x64011ae0
push dword [esp + 0x78]
call fcn.6402c5c0
add esp, 4
push dword [esp + 0x44]
call fcn.6402c5c0
add esp, 4
xor esi, esi
jmp 0x640122ae
mov esi, 0xfffffffe
mov eax, dword [esp + 0xcc]
cmp byte [eax + 0x15e0], 0
je 0x640122d6
mov ecx, dword [esp + 0xd4]
lea ecx, [ecx + ecx*2]
lea ecx, [ecx + 0x280]
lea ecx, [eax + ecx*8]
call fcn.64001c10
pop edi
mov eax, esi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8