Function at 0x437080
Capabilities:
Check for time delay via queryperformancecounter

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x58
push ebx
push esi
xor ebx, ebx
lea eax, [esp + 0x58]
push eax
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x10], ebx
call dword [sym.imp.KERNEL32.dll_QueryPerformanceFrequency]
mov esi, dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
lea ecx, [esp + 0x10]
push ecx
call esi
fild qword [esp + 0x10]
fild qword [esp + 0x58]
lea edx, [esp + 0x10]
push edx
mov dword [esp + 0x44], ebx
fdivp st(1)
mov dword [esp + 0x48], ebx
fst qword [esp + 0x24]
fst qword [esp + 0x34]
fldz
fstp qword [esp + 0x3c]
fst qword [esp + 0x2c]
fstp qword [esp + 0x4c]
fldz
fstp dword [esp + 0x54]
call esi
fild qword [esp + 0x10]
fild qword [esp + 0x58]
push edi
mov dword [esp + 0x44], ebx
fdivp st(1)
fst qword [esp + 0x34]
fstp qword [esp + 0x2c]
fldz
fstp qword [esp + 0x3c]
call fcn.0042dbdc
mov esi, dword [ebp + 8]
mov ebx, eax
add esp, 4
lea eax, [esp + 0xc]
push eax
push edi
mov eax, ebx
mov dword [esp + 0x18], ebx
call fcn.00436870
mov eax, dword [esp + 0xc]
cmp eax, edi
je 0x437150
mov edx, dword [ebp + 0x14]
test edx, edx
je 0x437146
mov ecx, dword [ebp + 0x18]
mov ecx, dword [ecx]
cmp eax, ecx
jb 0x43713b
mov eax, ecx
push eax
push ebx
push edx
call fcn.0042e036
add esp, 0xc
xor eax, eax
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
mov ecx, dword [ebp + 0xc]
mov eax, edi
mov dword [esp + 8], edi
mov edx, ebx
cmp edi, 4
jb 0x437178
mov esi, dword [edx]
cmp esi, dword [ecx]
jne 0x43717e
sub eax, 4
add ecx, 4
add edx, 4
cmp eax, 4
jae 0x437160
mov dword [esp + 8], eax
test eax, eax
je 0x4371cb
jmp 0x437182
mov dword [esp + 8], eax
movzx eax, byte [edx]
movzx esi, byte [ecx]
sub eax, esi
jne 0x4371c3
cmp dword [esp + 8], 1
jbe 0x4371cb
movzx eax, byte [edx + 1]
movzx esi, byte [ecx + 1]
sub eax, esi
jne 0x4371c3
cmp dword [esp + 8], 2
jbe 0x4371cb
movzx eax, byte [edx + 2]
movzx esi, byte [ecx + 2]
sub eax, esi
jne 0x4371c3
cmp dword [esp + 8], 3
jbe 0x4371cb
movzx eax, byte [edx + 3]
movzx edx, byte [ecx + 3]
sub eax, edx
sar eax, 0x1f
or eax, 1
jne 0x4371e1
mov ecx, dword [esp + 0x1c]
mov edx, dword [ebp + 0x18]
mov eax, 1
mov dword [edx], ecx
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
mov eax, dword [ebp + 0x10]
fild dword [ebp + 0x10]
test eax, eax
jns 0x4371f1
fadd dword [0x4bf190]
fstp dword [esp + 8]
lea esi, [esp + 0x20]
call fcn.00401000
fmul qword [0x4bf198]
fld dword [esp + 8]
fcompp
fnstsw ax
test ah, 1
jne 0x4372f1
mov esi, dword [ebp + 0x14]
test esi, esi
je 0x437231
mov eax, dword [esp + 0x1c]
mov ecx, dword [ebp + 0x18]
cmp eax, dword [ecx]
jae 0x437231
mov dl, byte [ebx]
mov byte [eax + esi], dl
inc eax
mov dword [esp + 0x1c], eax
lea eax, [edi - 1]
push eax
lea ecx, [ebx + 1]
push ecx
push ebx
call dword [sym.imp.MSVCR100.dll_memmove]
mov esi, dword [ebp + 8]
add esp, 0xc
lea edx, [esp + 0xc]
push edx
push 1
lea eax, [ebx + edi - 1]
call fcn.00436870
cmp dword [esp + 0xc], 0
je 0x4372dd
mov ecx, dword [ebp + 0xc]
mov esi, edi
mov edx, ebx
cmp edi, 4
jb 0x437284
lea ecx, [ecx]
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x437288
sub esi, 4
add ecx, 4
add edx, 4
cmp esi, 4
jae 0x437270
test esi, esi
je 0x4372cf
movzx ebx, byte [ecx]
movzx eax, byte [edx]
sub eax, ebx
jne 0x4372c3
cmp esi, 1
jbe 0x4372cb
movzx eax, byte [edx + 1]
movzx ebx, byte [ecx + 1]
sub eax, ebx
jne 0x4372c3
cmp esi, 2
jbe 0x4372cb
movzx eax, byte [edx + 2]
movzx ebx, byte [ecx + 2]
sub eax, ebx
jne 0x4372c3
cmp esi, 3
jbe 0x4372cb
movzx eax, byte [edx + 3]
movzx ecx, byte [ecx + 3]
sub eax, ecx
sar eax, 0x1f
or eax, 1
jne 0x4372d9
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x18], 1
jmp 0x4372dd
mov ebx, dword [esp + 0x10]
mov edx, dword [ebp + 8]
cmp dword [edx + 0x24], 0
jne 0x4372f1
cmp dword [esp + 0x18], 0
je 0x4371f5
mov ecx, dword [esp + 0x1c]
mov edx, dword [ebp + 0x18]
mov eax, dword [esp + 0x18]
pop esi
mov dword [edx], ecx
pop ebx
mov esp, ebp
pop ebp
ret 0x14