Function at 0x505f90
Capabilities:
Get number of processors

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x652428
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x54
push ebx
mov ebx, ecx
push esi
push edi
mov eax, dword [ebx + 0xa]
xor edi, edi
cmp eax, edi
je case.0x506012.35
cmp dword [ebx + 0x32], edi
je case.0x506012.35
mov dx, word [ebx + 4]
lea eax, [esp + 0x18]
lea ecx, [esp + 0x14]
push eax
push ecx
mov ecx, dword [ebx + 6]
push edx
mov dword [esp + 0x20], edi
mov dword [esp + 0x24], edi
call fcn.005ab970
mov esi, dword [ebx + 0xa]
mov al, byte [esi + 0xec]
test al, al
je 0x506000
cmp al, 1
je 0x506000
mov ecx, 1
jmp 0x506002
xor ecx, ecx
movsx eax, word [ebx + 4]
add eax, 0xffffffe1
cmp eax, 5
ja case.0x506012.35
jmp dword [eax*4 + 0x5070a4]
cmp ecx, edi
jne case.0x506012.35
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
fld dword [0x663774]
cmp eax, ecx
mov dword [esp + 0x20], edi
jg 0x50605a
cmp eax, edi
jl 0x506047
cmp eax, dword [ebx + 0x3e]
jge 0x506047
mov edx, dword [ebx + 0x32]
cmp word [edx + eax*2], di
jge 0x50604e
inc eax
cmp eax, ecx
jle 0x506035
jmp 0x50605a
fstp st(0)
fld dword [0x663770]
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 8]
mov ecx, dword [esp + 0x14]
cmp eax, ecx
jl 0x507089
cmp eax, dword [esp + 0x18]
jg 0x507089
fcomp dword [0x65f998]
fnstsw ax
test ah, 0x41
jne case.0x506012.35
cmp dword [ebx + 0x26], edi
je case.0x506012.35
mov eax, dword [ebx + 0x32]
mov ecx, dword [esp + 0x20]
movsx edi, word [eax + ecx*2]
lea ecx, [esp + 0x10]
call fcn.00643d62
mov eax, dword [ebx + 0x26]
lea edx, [edi + edi*4]
shl edx, 3
sub edx, edi
mov dword [esp + 0x68], 0
lea ecx, [eax + edx*4 + 0x12]
lea edx, [esp + 0x10]
push ecx
push 0x6ba488
push edx
call fcn.00643d50
mov ecx, dword [ebp + 0x18]
add esp, 0xc
lea eax, [esp + 0x10]
push eax
call fcn.00644098
mov ecx, dword [ebx + 0x36]
mov edx, dword [esp + 0x20]
mov esi, 1
cmp word [ecx + edx*2], si
jle 0x506178
lea eax, [edi + 1]
lea edi, [eax + eax*4]
shl edi, 3
sub edi, eax
shl edi, 2
mov eax, dword [ebx + 0x26]
lea edx, [esp + 0x10]
lea ecx, [edi + eax + 0x12]
push ecx
push 0x6ba484
push edx
call fcn.00643d50
mov ecx, dword [ebp + 0x18]
add esp, 0xc
lea eax, [esp + 0x10]
push eax
call fcn.00643d38
lea ecx, [esi - 1]
cmp ecx, 5
jg 0x50616b
mov edx, dword [ebx + 0x36]
mov eax, dword [esp + 0x20]
inc esi
add edi, 0x9c
movsx ecx, word [edx + eax*2]
cmp esi, ecx
jl 0x5060fc
lea ecx, [esp + 0x10]
mov dword [esp + 0x68], 0xffffffff
call fcn.00643d26
mov eax, 1
mov ecx, dword [esp + 0x60]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
mov ecx, dword [ebp + 0x18]
push 0x6ba478
call fcn.00643efa
lea ecx, [esp + 0x10]
mov dword [esp + 0x68], 0xffffffff
call fcn.00643d26
mov eax, 1
mov ecx, dword [esp + 0x60]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
fld dword [0x663774]
cmp eax, ecx
jg 0x5061d2
test eax, eax
jl 0x5061cd
cmp eax, dword [ebx + 0x3e]
jge 0x5061cd
mov edx, dword [ebx + 0x32]
cmp word [edx + eax*2], 0
jl 0x5061cd
fadd dword [0x663770]
mov edi, eax
inc eax
cmp eax, ecx
jle 0x5061b2
mov eax, dword [esp + 0x14]
lea ecx, [eax - 0x12]
mov eax, dword [ebp + 8]
cmp eax, ecx
jl 0x507089
cmp eax, dword [esp + 0x18]
jg 0x507089
fcomp dword [0x65f998]
fnstsw ax
test ah, 0x41
jne case.0x506012.35
mov ecx, dword [ebp + 0x18]
push 0x6c7010
call fcn.006440b6
mov edx, dword [ebx + 0x32]
mov esi, edi
lea ecx, [esp + 0xc]
movsx edi, word [edx + edi*2]
mov dword [esp + 0x28], edi
call fcn.00643d62
movsx eax, word [ebx + 0xe]
cmp edi, eax
mov dword [esp + 0x68], 1
jge 0x506aa1
mov ecx, dword [ebp + 0x14]
lea edx, [edi*8]
shl esi, 5
add esi, ecx
sub edx, edi
mov dword [esp + 0x34], esi
lea edi, [edi + edx*4]
mov eax, dword [ebx + 0x10]
mov edx, dword [esp + 0x34]
mov ecx, dword [eax + edi + 8]
mov eax, dword [edx]
cmp ecx, eax
jg 0x506aa1
push 0x6c7010
lea ecx, [esp + 0x10]
call fcn.006440b6
mov eax, dword [ebx + 0x10]
add eax, edi
movsx ecx, byte [eax + 0xc]
dec ecx
cmp ecx, 0xd
ja case.0x506284.4
jmp dword [ecx*4 + 0x5070bc]
lea ecx, [esp + 0x10]
call fcn.00643d62
mov ecx, dword [ebx + 0x10]
mov esi, 0x64
mov byte [esp + 0x68], 2
mov ecx, dword [ecx + edi + 8]
mov eax, ecx
cdq
idiv esi
mov eax, ecx
mov esi, 0x2710
push edx
cdq
idiv esi
mov eax, 0x51eb851f
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x68db8bad
push edx
imul ecx
sar edx, 0xc
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
push edx
lea edx, [esp + 0x18]
push 0x6ba45c
push edx
call fcn.00643d50
mov eax, dword [ebx + 0x10]
add esp, 0x14
fld dword [eax + edi + 0xd]
fcomp dword [0x65f998]
fnstsw ax
test ah, 0x41
jne 0x5063bc
mov ecx, dword [ebx + 0xa]
mov esi, dword [fcn.0065f208]
push 4
push 0x6a16cc
push ecx
call esi
add esp, 0xc
test eax, eax
je 0x506335
mov edx, dword [ebx + 0xa]
push 2
push 0x6a0028
push edx
call esi
add esp, 0xc
test eax, eax
je 0x506335
xor edx, edx
jmp 0x50633a
mov edx, 1
mov eax, dword [ebx + 0xa]
cmp byte [eax], 0x35
jne 0x50634f
cmp byte [eax + 1], 0x30
je 0x50634f
mov ecx, 1
jmp 0x506351
xor ecx, ecx
test edx, edx
jne 0x506359
test ecx, ecx
je 0x50638f
test eax, eax
je 0x50638f
fld dword [eax + 0xe8]
fcomp qword [0x66ef70]
fnstsw ax
test ah, 0x41
jne 0x50638f
mov eax, dword [ebx + 0x10]
sub esp, 8
lea ecx, [esp + 0x18]
fld dword [eax + edi + 0xd]
fmul qword [0x65f9b0]
fstp qword [esp]
push 0x6ba444
push ecx
jmp 0x5063a6
mov edx, dword [ebx + 0x10]
sub esp, 8
lea eax, [esp + 0x18]
fld dword [edx + edi + 0xd]
fstp qword [esp]
push 0x6ba444
push eax
call fcn.00643d50
add esp, 0x10
lea ecx, [esp + 0x10]
push ecx
lea ecx, [esp + 0x10]
call fcn.00643d38
mov edx, dword [ebx + 0x10]
fld dword [edx + edi + 0x11]
fcomp dword [0x65f998]
lea ecx, [edx + edi + 0x11]
fnstsw ax
test ah, 0x41
jne 0x5063fc
fld dword [ecx]
sub esp, 8
lea eax, [esp + 0x18]
fstp qword [esp]
push 0x6ba430
push eax
call fcn.00643d50
add esp, 0x10
lea ecx, [esp + 0x10]
push ecx
lea ecx, [esp + 0x10]
call fcn.00643d38
mov edx, dword [ebx + 0x10]
fld dword [edx + edi + 0x15]
fcomp dword [0x65f998]
lea ecx, [edx + edi + 0x15]
fnstsw ax
test ah, 0x41
jne 0x50643c
fld dword [ecx]
sub esp, 8
lea eax, [esp + 0x18]
fstp qword [esp]
push 0x6ba418
push eax
call fcn.00643d50
add esp, 0x10
lea ecx, [esp + 0x10]
push ecx
lea ecx, [esp + 0x10]
call fcn.00643d38
mov edx, dword [ebx + 0x10]
fld dword [edx + edi + 0x19]
fcomp dword [0x65f998]
lea ecx, [edx + edi + 0x19]
fnstsw ax
test ah, 0x41
jne 0x50647c
fld dword [ecx]
sub esp, 8
lea eax, [esp + 0x18]
fstp qword [esp]
push 0x6ba400
push eax
call fcn.00643d50
add esp, 0x10
lea ecx, [esp + 0x10]
push ecx
lea ecx, [esp + 0x10]
call fcn.00643d38
mov byte [esp + 0x68], 1
lea ecx, [esp + 0x10]
jmp 0x506a13
fld dword [eax + 0x19]
sub esp, 8
mov ecx, dword [eax + 8]
mov esi, 0x64
fstp qword [esp]
fld dword [eax + 0x15]
sub esp, 8
fstp qword [esp]
fld dword [eax + 0x11]
sub esp, 8
fstp qword [esp]
fld dword [eax + 0xd]
mov eax, ecx
sub esp, 8
cdq
fstp qword [esp]
idiv esi
mov eax, ecx
mov esi, 0x2710
push edx
cdq
idiv esi
mov eax, 0x51eb851f
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x68db8bad
push edx
imul ecx
sar edx, 0xc
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
push edx
push 0x6ba388
jmp 0x5067cd
fld dword [eax + 0x19]
sub esp, 8
mov ecx, dword [eax + 8]
mov esi, 0x64
fstp qword [esp]
fld dword [eax + 0x15]
sub esp, 8
fstp qword [esp]
fld dword [eax + 0x11]
sub esp, 8
fstp qword [esp]
fld dword [eax + 0xd]
mov eax, ecx
sub esp, 8
cdq
fstp qword [esp]
idiv esi
mov eax, ecx
mov esi, 0x2710
push edx
cdq
idiv esi
mov eax, 0x51eb851f
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x68db8bad
push edx
imul ecx
sar edx, 0xc
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
push edx
push 0x6ba310
jmp 0x5067cd
fld dword [eax + 0x19]
sub esp, 8
mov ecx, dword [eax + 8]
mov esi, 0x64
fstp qword [esp]
fld dword [eax + 0x15]
sub esp, 8
fstp qword [esp]
fld dword [eax + 0x11]
sub esp, 8
fstp qword [esp]
fld dword [eax + 0xd]
mov eax, ecx
sub esp, 8
cdq
fstp qword [esp]
idiv esi
mov eax, ecx
mov esi, 0x2710
push edx
cdq
idiv esi
mov eax, 0x51eb851f
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x68db8bad
push edx
imul ecx
sar edx, 0xc
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
push edx
push 0x6ba29c
jmp 0x5067cd
fld dword [eax + 0x15]
mov ecx, dword [eax + 8]
sub esp, 8
mov esi, 0x64
fstp qword [esp]
fld dword [eax + 0x11]
mov eax, ecx
sub esp, 8
cdq
fstp qword [esp]
idiv esi
mov eax, ecx
mov esi, 0x2710
push edx
cdq
idiv esi
mov eax, 0x51eb851f
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x68db8bad
push edx
imul ecx
sar edx, 0xc
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
push edx
lea edx, [esp + 0x28]
push 0x6ba264
push edx
call fcn.00643d50
add esp, 0x24
jmp case.0x506284.4
fld dword [eax + 0x19]
sub esp, 8
mov ecx, dword [eax + 8]
mov esi, 0x64
fstp qword [esp]
fld dword [eax + 0x15]
sub esp, 8
fstp qword [esp]
fld dword [eax + 0x11]
sub esp, 8
fstp qword [esp]
fld dword [eax + 0xd]
mov eax, ecx
sub esp, 8
cdq
fstp qword [esp]
idiv esi
mov eax, ecx
mov esi, 0x2710
push edx
cdq
idiv esi
mov eax, 0x51eb851f
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x68db8bad
push edx
imul ecx
sar edx, 0xc
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
push edx
push 0x6ba1f4
jmp 0x5067cd
fld dword [eax + 0x19]
sub esp, 8
mov ecx, dword [eax + 8]
mov esi, 0x64
fstp qword [esp]
fld dword [eax + 0x15]
sub esp, 8
fstp qword [esp]
fld dword [eax + 0x11]
sub esp, 8
fstp qword [esp]
fld dword [eax + 0xd]
mov eax, ecx
sub esp, 8
cdq
fstp qword [esp]
idiv esi
mov eax, ecx
mov esi, 0x2710
push edx
cdq
idiv esi
mov eax, 0x51eb851f
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x68db8bad
push edx
imul ecx
sar edx, 0xc
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
push edx
push 0x6ba17c
jmp 0x5067cd
fld dword [eax + 0x19]
sub esp, 8
mov ecx, dword [eax + 8]
mov esi, 0x64
fstp qword [esp]
fld dword [eax + 0x15]
sub esp, 8
fstp qword [esp]
fld dword [eax + 0x11]
sub esp, 8
fstp qword [esp]
fld dword [eax + 0xd]
mov eax, ecx
sub esp, 8
cdq
fstp qword [esp]
idiv esi
mov eax, ecx
mov esi, 0x2710
push edx
cdq
idiv esi
mov eax, 0x51eb851f
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x68db8bad
push edx
imul ecx
sar edx, 0xc
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
push edx
push 0x6ba104
jmp 0x5067cd
fld dword [eax + 0x19]
sub esp, 8
mov ecx, dword [eax + 8]
mov esi, 0x64
fstp qword [esp]
fld dword [eax + 0x15]
sub esp, 8
fstp qword [esp]
fld dword [eax + 0x11]
sub esp, 8
fstp qword [esp]
fld dword [eax + 0xd]
mov eax, ecx
sub esp, 8
cdq
fstp qword [esp]
idiv esi
mov eax, ecx
mov esi, 0x2710
push edx
cdq
idiv esi
mov eax, 0x51eb851f
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x68db8bad
push edx
imul ecx
sar edx, 0xc
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
push edx
push 0x6ba08c
lea edx, [esp + 0x3c]
push edx
call fcn.00643d50
add esp, 0x34
jmp case.0x506284.4
lea ecx, [esp + 0x20]
call fcn.00643d62
mov eax, dword [ebx + 0x10]
mov esi, 0x64
mov byte [esp + 0x68], 3
mov ecx, dword [eax + edi + 8]
mov eax, ecx
cdq
idiv esi
mov eax, ecx
mov esi, 0x2710
push edx
cdq
idiv esi
mov eax, 0x51eb851f
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x68db8bad
push edx
imul ecx
sar edx, 0xc
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
push edx
lea edx, [esp + 0x18]
push 0x6ba070
push edx
call fcn.00643d50
mov eax, dword [ebx + 0x10]
add esp, 0xc
lea ecx, [esp + 0x28]
fld dword [eax + edi + 0x15]
fstp qword [esp]
push 0x6ba05c
push ecx
call fcn.00643d50
add esp, 0x10
lea edx, [esp + 0x20]
lea ecx, [esp + 0xc]
push edx
call fcn.00643d38
mov byte [esp + 0x68], 1
lea ecx, [esp + 0x20]
jmp 0x506a13
lea ecx, [esp + 0x24]
call fcn.00643d62
mov eax, dword [ebx + 0x10]
mov esi, 0x64
mov byte [esp + 0x68], 4
mov ecx, dword [eax + edi + 8]
mov eax, ecx
cdq
idiv esi
mov eax, ecx
mov esi, 0x2710
push edx
cdq
idiv esi
mov eax, 0x51eb851f
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x68db8bad
push edx
imul ecx
sar edx, 0xc
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
push edx
lea edx, [esp + 0x18]
push 0x6ba040
push edx
call fcn.00643d50
mov eax, dword [ebx + 0x10]
add esp, 0xc
lea ecx, [esp + 0x2c]
fld dword [eax + edi + 0x15]
fstp qword [esp]
push 0x6ba02c
push ecx
call fcn.00643d50
add esp, 0x10
lea edx, [esp + 0x24]
lea ecx, [esp + 0xc]
push edx
call fcn.00643d38
mov byte [esp + 0x68], 1
lea ecx, [esp + 0x24]
jmp 0x506a13
lea ecx, [esp + 0x1c]
call fcn.00643d62
mov eax, dword [ebx + 0x10]
mov byte [esp + 0x68], 5
add eax, edi
mov esi, 0x64
mov cl, byte [eax + 0xc]
cmp cl, 0xd
mov ecx, dword [eax + 8]
mov eax, ecx
cdq
jne 0x50696d
idiv esi
mov eax, ecx
mov esi, 0x2710
push edx
cdq
idiv esi
mov eax, 0x51eb851f
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x68db8bad
push edx
imul ecx
sar edx, 0xc
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
push edx
push 0x6ba010
jmp 0x5069a3
idiv esi
mov eax, ecx
mov esi, 0x2710
push edx
cdq
idiv esi
mov eax, 0x51eb851f
imul edx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, 0x68db8bad
push edx
imul ecx
sar edx, 0xc
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
push edx
push 0x6b9ff4
lea edx, [esp + 0x1c]
push edx
call fcn.00643d50
mov eax, dword [ebx + 0x10]
add esp, 0x14
sub esp, 8
lea ecx, [esp + 0x24]
fld dword [eax + edi + 0x15]
fstp qword [esp]
push 0x6b9fe0
push ecx
call fcn.00643d50
add esp, 0x10
lea edx, [esp + 0x1c]
lea ecx, [esp + 0xc]
push edx
call fcn.00643d38
mov eax, dword [ebx + 0x10]
sub esp, 8
lea ecx, [esp + 0x24]
fld dword [eax + edi + 0xd]
fstp qword [esp]
push 0x6b9fd0
push ecx
call fcn.00643d50
add esp, 0x10
lea edx, [esp + 0x1c]
lea ecx, [esp + 0xc]
push edx
call fcn.00643d38
mov byte [esp + 0x68], 1
lea ecx, [esp + 0x1c]
call fcn.00643d26
mov eax, dword [esp + 0xc]
mov ecx, dword [eax - 8]
test ecx, ecx
jle 0x506a89
mov esi, dword [ebp + 0x18]
mov ecx, dword [esi]
cmp dword [ecx - 8], 1
jge 0x506a5a
lea edx, [esp + 0xc]
lea eax, [esp + 0x38]
push edx
push 0x6b9fc0
push eax
call fcn.0064409e
push eax
mov ecx, esi
mov byte [esp + 0x6c], 6
call fcn.00643d38
mov byte [esp + 0x68], 1
lea ecx, [esp + 0x38]
jmp 0x506a84
lea ecx, [esp + 0xc]
lea edx, [esp + 0x3c]
push ecx
push 0x6b5a04
push edx
call fcn.0064409e
push eax
mov ecx, esi
mov byte [esp + 0x6c], 7
call fcn.00643d38
mov byte [esp + 0x68], 1
lea ecx, [esp + 0x3c]
call fcn.00643d26
mov eax, dword [esp + 0x28]
add edi, 0x1d
movsx ecx, word [ebx + 0xe]
inc eax
cmp eax, ecx
mov dword [esp + 0x28], eax
jl 0x50624e
lea ecx, [esp + 0xc]
mov dword [esp + 0x68], 0xffffffff
call fcn.00643d26
mov eax, 1
mov ecx, dword [esp + 0x60]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 0x10]
fld dword [0x663774]
xor ecx, ecx
cmp eax, edx
jg 0x506b01
jmp 0x506ae1
xor edi, edi
cmp eax, edi
jl 0x506afc
cmp eax, dword [ebx + 0x3e]
jge 0x506afc
mov edi, dword [ebx + 0x32]
cmp word [edi + eax*2], 0
jl 0x506afc
fadd dword [0x663770]
mov ecx, eax
inc eax
cmp eax, edx
jle 0x506adf
mov edx, dword [esp + 0x14]
mov eax, dword [ebp + 8]
add edx, 0xffffffee
cmp eax, edx
jl 0x507089
cmp eax, dword [esp + 0x18]
jg 0x507089
fcomp dword [0x65f998]
fnstsw ax
test ah, 0x41
jne case.0x506012.35
mov eax, dword [ebx + 0x32]
lea edi, [esp + 0x41]
movsx edx, word [eax + ecx*2]
mov ecx, 7
xor eax, eax
mov byte [esp + 0x40], 0
mov dword [esp + 0x2c], edx
rep stosd dword es:[edi], eax
movsx ecx, word [ebx + 0x14]
dec ecx
cmp edx, ecx
stosw word es:[edi], ax
jge 0x506b62
mov eax, dword [ebx + 0x16]
shl edx, 6
lea edi, [edx + eax + 0x48]
jmp 0x506b65
lea edi, [esi + 0x18]
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x40]
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x1c]
call fcn.00643d62
mov esi, dword [esp + 0x2c]
mov ecx, dword [ebx + 0x16]
shl esi, 6
lea edx, [esp + 0x40]
mov edi, 0x64
lea eax, [esi + ecx]
push edx
mov dword [esp + 0x6c], 8
mov ecx, dword [eax + 0x11]
add eax, 8
push eax
mov eax, ecx
cdq
idiv edi
mov eax, 0x51eb851f
push edx
imul ecx
sar edx, 5
mov edi, edx
mov eax, edx
shr edi, 0x1f
add eax, edi
mov edi, 0x64
cdq
idiv edi
mov eax, 0x68db8bad
push edx
imul ecx
sar edx, 0xc
mov eax, edx
lea ecx, [esp + 0x2c]
shr eax, 0x1f
add edx, eax
push edx
push 0x6b9fa0
push ecx
call fcn.00643d50
mov edx, dword [ebx + 0x16]
or ecx, 0xffffffff
xor eax, eax
add esp, 0x1c
lea edi, [esi + edx + 0x15]
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x506c2d
push 0x6b9f98
lea ecx, [esp + 0x20]
call fcn.00643efa
mov eax, dword [ebx + 0x16]
lea ecx, [esi + eax + 0x15]
push ecx
lea ecx, [esp + 0x20]
call fcn.00643efa
mov ecx, dword [ebp + 0x18]
lea edx, [esp + 0x1c]
push edx
call fcn.00644098
lea ecx, [esp + 0x1c]
mov dword [esp + 0x68], 0xffffffff
call fcn.00643d26
mov eax, 1
mov ecx, dword [esp + 0x60]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 0x10]
fld dword [0x663774]
xor ecx, ecx
cmp eax, edx
jg 0x506c99
cmp eax, edi
jl 0x506c88
cmp eax, dword [ebx + 0x3e]
jge 0x506c88
mov esi, dword [ebx + 0x32]
cmp word [esi + eax*2], di
jge 0x506c8f
inc eax
cmp eax, edx
jle 0x506c76
jmp 0x506c99
fstp st(0)
fld dword [0x663770]
mov ecx, eax
mov eax, dword [esp + 0x14]
lea edx, [eax - 0x12]
mov eax, dword [ebp + 8]
cmp eax, edx
jl 0x507089
cmp eax, dword [esp + 0x18]
jg 0x507089
fcomp dword [0x65f998]
fnstsw ax
test ah, 0x41
jne case.0x506012.35
cmp dword [ebx + 0x1e], edi
je case.0x506012.35
mov eax, dword [ebx + 0x32]
movsx esi, word [eax + ecx*2]
lea ecx, [esp + 0x28]
call fcn.00643d62
mov edx, dword [ebx + 0x1e]
lea ecx, [esi + esi*2]
mov dword [esp + 0x68], 9
lea eax, [esi + ecx*4]
shl eax, 3
mov esi, dword [eax + edx + 0xc]
lea ecx, [eax + edx]
lea eax, [ecx + 0x18]
mov ecx, dword [ecx + 0xc]
push eax
push ecx
call fcn.004760c0
mov edx, dword [eax*4 + 0x6a7794]
add esp, 4
mov eax, esi
mov ecx, 0x64
push edx
cdq
idiv ecx
mov eax, 0x51eb851f
push edx
imul esi
sar edx, 5
mov ecx, edx
mov eax, edx
shr ecx, 0x1f
add eax, ecx
mov ecx, 0x64
cdq
idiv ecx
mov eax, 0x68db8bad
lea ecx, [esp + 0x34]
push edx
imul esi
sar edx, 0xc
mov eax, edx
shr eax, 0x1f
add edx, eax
push edx
push 0x6b9f8c
push 0x6b9f74
push ecx
call fcn.00643d50
mov ecx, dword [ebp + 0x18]
add esp, 0x20
lea edx, [esp + 0x28]
push edx
call fcn.00644098
lea ecx, [esp + 0x28]
mov dword [esp + 0x68], 0xffffffff
call fcn.00643d26
mov eax, 1
mov ecx, dword [esp + 0x60]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
cmp ecx, edi
jne case.0x506012.35
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
fld dword [0x663774]
cmp eax, ecx
mov dword [esp + 0x1c], edi
jg 0x506dda
cmp eax, edi
jl 0x506dc7
cmp eax, dword [ebx + 0x3e]
jge 0x506dc7
mov edx, dword [ebx + 0x32]
cmp word [edx + eax*2], di
jge 0x506dce
inc eax
cmp eax, ecx
jle 0x506db5
jmp 0x506dda
fstp st(0)
fld dword [0x663770]
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 8]
mov ecx, dword [esp + 0x14]
cmp eax, ecx
jl 0x507089
cmp eax, dword [esp + 0x18]
jg 0x507089
fcomp dword [0x65f998]
fnstsw ax
test ah, 0x41
jne case.0x506012.35
mov ecx, dword [ebx + 0x2e]
cmp ecx, edi
je case.0x506012.35
cmp dword [ebx + 0x2a], edi
jle case.0x506012.35
mov eax, dword [ebx + 0x32]
mov edx, dword [esp + 0x1c]
movsx esi, word [eax + edx*2]
lea eax, [esi*8]
sub eax, esi
lea eax, [eax + eax*2]
lea edi, [esi + eax*8]
mov eax, dword [edi + ecx + 0x7a]
test eax, eax
mov eax, 0x6b9f6c
je 0x506e44
mov eax, 0x6b9f64
push eax
lea ecx, [esp + 0x38]
call fcn.00643d2c
mov ecx, dword [ebx + 0x2e]
mov dword [esp + 0x68], 0xa
lea edx, [edi + ecx + 0x5c]
mov ecx, dword [0x826818]
push edx
call fcn.004468a0
push eax
call fcn.00472c00
add esp, 4
push eax
mov eax, dword [ebx + 0x2e]
push ecx
lea ecx, [esp + 0x38]
fld qword [edi + eax + 0x7e]
fstp dword [esp]
push ecx
call fcn.00472010
add esp, 0xc
lea ecx, [esp + 0x20]
mov byte [esp + 0x68], 0xb
call fcn.00643d62
mov edx, dword [ebx + 0x2e]
mov byte [esp + 0x68], 0xc
mov ecx, dword [edi + edx + 0x86]
lea eax, [edi + edx]
mov edx, dword [esp + 0x30]
push ecx
mov ecx, dword [eax + 0x10]
push edx
mov edx, dword [eax + 0xc]
push ecx
mov ecx, dword [eax + 8]
push edx
mov edx, dword [eax + 4]
push ecx
mov ecx, dword [eax]
push edx
push ecx
mov ecx, dword [esp + 0x50]
lea edx, [eax + 0x66]
add eax, 0x1e
push edx
push ecx
push eax
lea edx, [esp + 0x48]
push 0x6b9f2c
push edx
call fcn.00643d50
mov ecx, dword [ebp + 0x18]
add esp, 0x30
lea eax, [esp + 0x20]
push eax
call fcn.00644098
mov ecx, dword [ebx + 0x36]
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x28], 1
cmp word [ecx + edx*2], 1
jle 0x507043
lea ecx, [esi + 1]
lea eax, [ecx*8]
sub eax, ecx
lea eax, [eax + eax*2]
lea esi, [ecx + eax*8]
mov ecx, dword [ebx + 0x2e]
mov eax, dword [ecx + esi + 0x7a]
test eax, eax
mov eax, 0x6b9f6c
je 0x506f31
mov eax, 0x6b9f64
push eax
lea ecx, [esp + 0x30]
call fcn.00643d2c
mov edx, dword [ebx + 0x2e]
mov ecx, dword [0x826818]
mov byte [esp + 0x68], 0xd
lea eax, [edx + esi + 0x5c]
push eax
call fcn.004468a0
push eax
call fcn.00472c00
mov ecx, dword [ebx + 0x2e]
add esp, 4
lea edx, [esp + 0x24]
fld qword [ecx + esi + 0x7e]
push eax
push ecx
fstp dword [esp]
push edx
call fcn.00472010
add esp, 0xc
mov eax, dword [ebx + 0x2e]
mov edx, dword [esp + 0x24]
mov byte [esp + 0x68], 0xe
mov ecx, dword [eax + esi + 0x86]
push ecx
mov ecx, dword [eax + esi + 0x10]
push edx
mov edx, dword [eax + esi + 0xc]
push ecx
mov ecx, dword [edi + eax + 8]
push edx
mov edx, dword [edi + eax + 4]
push ecx
mov ecx, dword [edi + eax]
push edx
lea edx, [eax + esi + 0x66]
push ecx
mov ecx, dword [esp + 0x48]
push edx
lea edx, [eax + esi + 0x1e]
push ecx
push edx
lea eax, [esp + 0x48]
push 0x6b9f00
push eax
call fcn.00643d50
add esp, 0x30
lea ecx, [esp + 0x20]
push ecx
mov ecx, dword [ebp + 0x18]
call fcn.00643d38
mov edx, dword [esp + 0x28]
dec edx
cmp edx, 6
jg 0x50701a
lea ecx, [esp + 0x24]
mov byte [esp + 0x68], 0xd
call fcn.00643d26
lea ecx, [esp + 0x2c]
mov byte [esp + 0x68], 0xc
call fcn.00643d26
mov ecx, dword [ebx + 0x36]
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x28]
add esi, 0xa9
movsx ecx, word [ecx + edx*2]
inc eax
cmp eax, ecx
mov dword [esp + 0x28], eax
jl 0x506f1c
jmp 0x507043
mov ecx, dword [ebp + 0x18]
push 0x6ba478
call fcn.00643efa
lea ecx, [esp + 0x24]
mov byte [esp + 0x68], 0xd
call fcn.00643d26
lea ecx, [esp + 0x2c]
mov byte [esp + 0x68], 0xc
call fcn.00643d26
lea ecx, [esp + 0x20]
mov byte [esp + 0x68], 0xb
call fcn.00643d26
lea ecx, [esp + 0x30]
mov byte [esp + 0x68], 0xa
call fcn.00643d26
lea ecx, [esp + 0x34]
mov dword [esp + 0x68], 0xffffffff
call fcn.00643d26
mov eax, 1
mov ecx, dword [esp + 0x60]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x14
fstp st(0)
mov ecx, dword [esp + 0x60]
pop edi
pop esi
xor eax, eax
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 0x14