Function at 0x10077930
Capabilities:
Hash data with crc32

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x24
mov dword [esp + 8], ecx
mov ecx, dword [0x10137df8]
push ebx
push esi
push edi
cmp byte [ecx + 0xae8], 0
je 0x10078393
movss xmm0, dword [ecx + 0xaec]
xorps xmm2, xmm2
mov edx, dword [0x1013a848]
ucomiss xmm0, xmm2
lahf
test ah, 0x44
jp 0x1007797e
movss xmm0, dword [ecx + 0xaf0]
ucomiss xmm0, xmm2
lahf
test ah, 0x44
jnp 0x100779d4
or dword [edx + 0x1c18], 1
mov eax, dword [ecx + 0xaec]
mov ecx, dword [ecx + 0xaf0]
mov dword [edx + 0x1c28], eax
mov dword [edx + 0x1c2c], ecx
mov dword [edx + 0x1c30], 0
mov dword [edx + 0x1c34], 0
mov dword [edx + 0x1c1c], 1
mov eax, dword [0x10137df8]
mov dword [eax + 0xaec], 0
mov dword [eax + 0xaf0], 0
movss xmm1, dword [0x1012ae78]
mov ecx, 5
or dword [edx + 0x1c18], 0x12
movss xmm0, dword [0x1012af10]
mov dword [edx + 0x1c38], 0x437a0000
mov dword [edx + 0x1c3c], 0
mov dword [edx + 0x1c20], 2
movss dword [esp + 0x20], xmm1
mov dword [edx + 0x1c54], 0x437a0000
movss dword [edx + 0x1c58], xmm2
movss dword [edx + 0x1c5c], xmm1
movss dword [edx + 0x1c60], xmm0
mov dword [edx + 0x1c64], 0
mov dword [edx + 0x1c68], 0
lea edx, [esp + 0x20]
mov eax, dword [0x10137e60]
mov dword [esp + 0x20], 0x3f000000
mov dword [esp + 0x24], 0x3f000000
mov bl, byte [eax]
call fcn.100b0f90
mov esi, dword [0x1013a848]
lea eax, [esp + 0x20]
push eax
mov dword [esp + 0x24], 3
movss xmm0, dword [esi + 0x1528]
lea ecx, [esi + 0x1c98]
movss dword [esp + 0x28], xmm0
call fcn.100c1fd0
mov dword [esi + 0x1528], 0x41280000
lea eax, [esp + 0x20]
mov esi, dword [0x1013a848]
push eax
mov dword [esp + 0x24], 0xc
movss xmm0, dword [esi + 0x155c]
lea ecx, [esi + 0x1c98]
movss dword [esp + 0x28], xmm0
call fcn.100c1fd0
mov ecx, 0x79
mov dword [esi + 0x155c], 0x40200000
test bl, bl
mov eax, 0xc02f9
cmovne eax, ecx
xor edx, edx
push eax
mov ecx, str.Crit_indicator
call fcn.100b8f90
mov ecx, 3
call fcn.100b1010
call fcn.100bb1d0
mov eax, dword fs:[0x2c]
mov ecx, dword [0x10138688]
mov ebx, dword [eax + ecx*4]
mov eax, dword [0x1013d110]
cmp eax, dword [ebx + 4]
jle 0x10077b54
push 0x1013d110
call fcn.100e955e
add esp, 4
cmp dword [0x1013d110], 0xffffffff
jne 0x10077b54
push 0x1013d110
mov dword [0x1013d0fc], 0
mov dword [0x1013d100], 0
call fcn.100e950d
add esp, 4
mov eax, dword [0x1013d0c0]
cmp eax, dword [ebx + 4]
jle 0x10077b98
push 0x1013d0c0
call fcn.100e955e
add esp, 4
cmp dword [0x1013d0c0], 0xffffffff
jne 0x10077b98
push 0x1013d0c0
mov dword [0x1013d118], 0
mov dword [0x1013d11c], 0
call fcn.100e950d
add esp, 4
mov eax, dword [0x1013d0c8]
cmp eax, dword [ebx + 4]
jle 0x10077bdc
push 0x1013d0c8
call fcn.100e955e
add esp, 4
cmp dword [0x1013d0c8], 0xffffffff
jne 0x10077bdc
push 0x1013d0c8
mov dword [0x1013d098], 0
mov dword [0x1013d09c], 0
call fcn.100e950d
add esp, 4
or edx, 0xffffffff
mov esi, 0x10119b09
mov al, 0x43
or edi, 0xffffffff
nop dword [eax]
cmp al, 0x23
jne 0x10077bfe
cmp byte [esi], al
jne 0x10077bfe
cmp byte [esi + 1], al
cmove edx, edi
movzx ecx, dl
movzx eax, al
xor ecx, eax
shr edx, 8
mov al, byte [esi]
inc esi
xor edx, dword [ecx*4 + 0x10124db8]
test al, al
jne 0x10077bf0
not edx
mov ecx, edx
call fcn.100b6ce0
mov edi, dword [esp + 0x14]
test eax, eax
je 0x10077c90
movss xmm0, dword [eax + 0xc]
movss dword [0x1013d118], xmm0
movss xmm0, dword [eax + 0x10]
movss dword [0x1013d11c], xmm0
movss xmm0, dword [eax + 0x14]
mulss xmm0, dword [0x1012acd8]
addss xmm0, dword [eax + 0xc]
movss dword [0x1013d098], xmm0
movss xmm0, dword [eax + 0x18]
mulss xmm0, dword [0x1012acd8]
addss xmm0, dword [eax + 0x10]
movss dword [0x1013d09c], xmm0
movss xmm0, dword [eax + 0x14]
movss dword [0x1013d0fc], xmm0
movss xmm0, dword [eax + 0x18]
movss dword [0x1013d100], xmm0
mov eax, dword [0x10137e60]
mov dword [esp + 0x10], 0
cmp byte [eax], 0
je 0x10077ccb
push str.Crit_indicator
push edi
lea eax, [esp + 0x18]
push eax
push 0x10122c9c
lea eax, [esp + 0x30]
push 0x1013d098
push eax
call fcn.100774d0
add esp, 0x18
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [0x10139208]
mov ecx, dword [eax]
test ecx, ecx
je 0x10078393
call fcn.10069b20
test al, al
je 0x10078393
mov eax, dword [0x1013d0c4]
cmp eax, dword [ebx + 4]
jle 0x10077d30
push 0x1013d0c4
call fcn.100e955e
add esp, 4
cmp dword [0x1013d0c4], 0xffffffff
jne 0x10077d30
mov eax, dword [0x10137e08]
push str.tf_weapon_criticals
mov ecx, dword [eax + 8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x34]
call eax
push 0x1013d0c4
mov dword [0x1013d114], eax
call fcn.100e950d
add esp, 4
mov eax, dword [0x1013d090]
cmp eax, dword [ebx + 4]
jle 0x10077d79
push 0x1013d090
call fcn.100e955e
add esp, 4
cmp dword [0x1013d090], 0xffffffff
jne 0x10077d79
mov eax, dword [0x10137e08]
push str.tf_weapon_criticals_bucket_cap
mov ecx, dword [eax + 8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x34]
call eax
push 0x1013d090
mov dword [0x1013d108], eax
call fcn.100e950d
add esp, 4
movss xmm1, dword [0x10139328]
comiss xmm1, dword [0x1012ac0c]
mov dword [esp + 0x14], 0
jbe 0x10077dae
mov eax, dword [0x1013d108]
mov eax, dword [eax + 0x1c]
movd xmm0, dword [eax + 0x30]
cvtdq2ps xmm0, xmm0
divss xmm0, xmm1
cvttss2si eax, xmm0
mov dword [esp + 0x14], eax
push ecx
lea eax, [esp + 0x24]
mov ecx, 0x1013d0a0
push eax
call fcn.10078790
push ecx
mov ecx, 0x1013d0d8
mov ebx, dword [eax]
lea eax, [esp + 0x1c]
push eax
call fcn.10078790
mov esi, dword [eax]
mov eax, dword [0x1013d114]
mov eax, dword [eax + 0x1c]
cmp dword [eax + 0x30], 0
jg 0x10077df5
push str.Server_doesnt_allow_crits
push edi
lea eax, [esp + 0x18]
push eax
push 0x10122cb4
jmp 0x10077cb2
mov eax, dword [0x10139208]
mov ecx, dword [eax]
call fcn.10076230
test al, al
je 0x10077e0f
push str.Crit_boosted
jmp 0x10077ca7
cmp byte [0x10139315], 0
jne 0x10077e2d
push str.Weapon_cannot_crit
push edi
lea eax, [esp + 0x18]
push eax
push 0x10122cb4
jmp 0x10077cb2
mov eax, dword [0x10137df4]
movd xmm2, dword [0x1013d428]
movss xmm1, dword [0x10139348]
cvtdq2ps xmm2, xmm2
mov eax, dword [eax + 0x14]
mulss xmm2, dword [eax + 0x1c]
comiss xmm1, xmm2
jbe 0x10077ed8
movss xmm0, dword [0x1012ad2c]
subss xmm1, xmm2
lea eax, [esp + 0x18]
mov dword [esp + 0x20], 0x3f800000
lea ecx, [esp + 0x14]
mov dword [esp + 0x14], 0
mulss xmm1, dword [0x1012acd8]
comiss xmm1, dword [0x1012ac0c]
movss dword [esp + 0x18], xmm1
cmovae ecx, eax
lea eax, [esp + 0x20]
comiss xmm0, xmm1
cmovae eax, ecx
sub esp, 8
movss xmm0, dword [eax]
lea eax, [esp + 0x18]
movss dword [esp + 0x28], xmm0
cvtps2pd xmm0, xmm0
movsd qword [esp], xmm0
push str.Streaming_crits__.2fs
push edi
push eax
push 0x10122c9c
lea eax, [esp + 0x30]
push 0x1013d098
push eax
call fcn.100774d0
add esp, 0x20
jmp 0x10078330
cmp dword [0x1013930c], 2
je 0x10077fb8
cmp byte [0x10139340], 0
je 0x10077fb8
push str.Crit_banned
push edi
lea eax, [esp + 0x18]
push eax
push 0x10122cb4
lea eax, [esp + 0x30]
push 0x1013d098
push eax
call fcn.100774d0
movss xmm3, dword [0x10139318]
add esp, 0x18
ucomiss xmm3, dword [0x1012ac0c]
lahf
test ah, 0x44
jnp 0x10078393
movss xmm1, dword [0x1013932c]
sub esp, 8
movss xmm0, dword [0x10139300]
movaps xmm2, xmm1
mulss xmm2, dword [0x1012ace8]
mulss xmm1, dword [0x1012aca8]
mulss xmm2, xmm3
mulss xmm0, xmm3
subss xmm2, xmm0
addss xmm2, xmm1
divss xmm2, xmm3
movss dword [esp + 0x28], xmm2
fld dword [esp + 0x28]
fstp qword [esp]
call fcn.1010a4b0
fstp dword [esp + 0x28]
cvttss2si eax, dword [esp + 0x28]
add esp, 8
test eax, eax
jle 0x10078393
push eax
push str.Deal__i_damage
push edi
lea eax, [esp + 0x1c]
push eax
push 0x10122cb4
lea eax, [esp + 0x34]
push 0x1013d098
push eax
call fcn.100774d0
add esp, 0x1c
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebx + 0x10]
sub ecx, dword [ebx + 0xc]
sar ecx, 2
cmp ecx, 2
jbe 0x10078366
mov eax, dword [esi + 0x10]
sub eax, dword [esi + 0xc]
sar eax, 2
cmp eax, 2
jbe 0x10078366
cmp byte [0x1013931c], 0
je 0x10078134
mov eax, dword [0x101392e8]
lea eax, [eax + eax*4]
add eax, 5
add eax, eax
cmp dword [0x101392fc], eax
jge 0x10078134
push str.Crit_throttled
push edi
lea eax, [esp + 0x18]
push eax
push 0x10122cb4
lea eax, [esp + 0x30]
push 0x1013d098
push eax
call fcn.100774d0
push str.Unbalanced_crit_ratio
push edi
lea eax, [esp + 0x30]
push eax
push 0x10122cb4
lea eax, [esp + 0x48]
push 0x1013d098
push eax
call fcn.100774d0
movd xmm2, dword [0x101392fc]
xorps xmm0, xmm0
cvtdq2ps xmm2, xmm2
add esp, 0x30
comiss xmm2, xmm0
jbe 0x100780a3
mov eax, dword [0x101392e8]
sub esp, 8
movss xmm1, dword [0x1012adc0]
inc eax
movd xmm0, eax
lea eax, [esp + 0x18]
cvtdq2ps xmm0, xmm0
divss xmm1, xmm0
mulss xmm1, xmm2
cvtps2pd xmm0, xmm1
movsd qword [esp], xmm0
push str._.0f_100
push edi
push eax
push 0x10122cb4
lea eax, [esp + 0x38]
push 0x1013d098
push eax
call fcn.100774d0
add esp, 0x20
xorps xmm0, xmm0
mov eax, dword [0x10137df4]
movd xmm2, dword [0x1013d428]
movss xmm1, dword [0x10139324]
movss xmm3, dword [0x1012ad2c]
mov eax, dword [eax + 0x14]
addss xmm1, xmm3
cvtdq2ps xmm2, xmm2
mulss xmm2, dword [eax + 0x1c]
comiss xmm1, xmm2
jbe 0x10078393
subss xmm1, xmm2
mov dword [esp + 0x20], 0
lea eax, [esp + 0x18]
mov dword [esp + 0x14], 0x3f800000
lea ecx, [esp + 0x20]
comiss xmm1, xmm0
movss dword [esp + 0x18], xmm1
cmovae ecx, eax
lea eax, [esp + 0x14]
comiss xmm3, xmm1
cmovae eax, ecx
sub esp, 8
movss xmm0, dword [eax]
lea eax, [esp + 0x18]
movss dword [esp + 0x28], xmm0
cvtps2pd xmm0, xmm0
movsd qword [esp], xmm0
push str.Wait__.2fs
push edi
push eax
push 0x10122cb4
jmp 0x10077ec1
movss xmm0, dword [0x10139328]
lea eax, [esp + 0x10]
comiss xmm0, dword [0x10139338]
jbe 0x1007819f
push str.Cannot_crit
push edi
push eax
push 0x10122cb4
lea eax, [esp + 0x30]
push 0x1013d098
push eax
call fcn.100774d0
cvttss2si eax, dword [0x10139338]
push eax
cvttss2si eax, dword [0x10139328]
push eax
push str.Cost:__i___Tokens:__i
push edi
lea eax, [esp + 0x38]
push eax
push 0x10122cb4
lea eax, [esp + 0x50]
push 0x1013d098
push eax
call fcn.100774d0
add esp, 0x38
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
movss xmm0, dword [0x10139324]
addss xmm0, dword [0x1012ad2c]
comiss xmm0, xmm2
jbe 0x1007825f
push str.Cannot_crit
push edi
push eax
push 0x10122cb4
lea eax, [esp + 0x30]
push 0x1013d098
push eax
call fcn.100774d0
mov eax, dword [0x10137df4]
lea ecx, [esp + 0x38]
movd xmm0, dword [0x1013d428]
movss xmm2, dword [0x1012ad2c]
movss xmm1, dword [0x10139324]
mov eax, dword [eax + 0x14]
addss xmm1, xmm2
cvtdq2ps xmm0, xmm0
mov dword [esp + 0x38], 0
mov dword [esp + 0x2c], 0x3f800000
mulss xmm0, dword [eax + 0x1c]
lea eax, [esp + 0x30]
subss xmm1, xmm0
comiss xmm1, dword [0x1012ac0c]
movss dword [esp + 0x30], xmm1
cmovae ecx, eax
lea eax, [esp + 0x2c]
comiss xmm2, xmm1
cmovae eax, ecx
add esp, 0x10
movss xmm0, dword [eax]
lea eax, [esp + 0x18]
movss dword [esp + 0x28], xmm0
cvtps2pd xmm0, xmm0
movsd qword [esp], xmm0
push str.Wait__.2fs
push edi
push eax
push 0x10122cb4
jmp 0x10077ec1
push str.Can_crit
push edi
push eax
push 0x10122c6c
lea eax, [esp + 0x30]
push 0x1013d098
push eax
call fcn.100774d0
mov esi, dword [esp + 0x2c]
lea eax, [esp + 0x28]
push esi
push dword [0x101392e4]
push str._i__i_Potential_crits
push edi
push eax
push 0x10122c6c
lea eax, [esp + 0x50]
push 0x1013d098
push eax
call fcn.100774d0
mov eax, dword [0x101392e4]
add esp, 0x38
cmp eax, esi
jge 0x10078393
cmp dword [0x1013930c], 2
je 0x10078393
movss xmm3, dword [0x10139328]
xorps xmm2, xmm2
comiss xmm3, xmm2
jbe 0x10078393
movss xmm1, dword [0x10139338]
lea ecx, [esp + 0x20]
movd xmm0, eax
lea eax, [esp + 0x18]
cvtdq2ps xmm0, xmm0
mov dword [esp + 0x20], 0
mov dword [esp + 0x14], 0x3f800000
mulss xmm0, xmm3
subss xmm1, xmm0
movss xmm0, dword [0x1012ad2c]
divss xmm1, xmm3
comiss xmm1, xmm2
movss dword [esp + 0x18], xmm1
cmovae ecx, eax
lea eax, [esp + 0x14]
comiss xmm0, xmm1
cmovae eax, ecx
movss xmm0, dword [eax]
movss dword [esp + 0x20], xmm0
movss xmm0, dword [0x1013d0fc]
lea eax, [esp + 0x10]
push edi
push eax
lea eax, [esp + 0x28]
movss dword [esp + 0x20], xmm0
push eax
lea edx, [esp + 0x24]
mov dword [esp + 0x28], 0x41400000
mov ecx, 0x1013d118
call fcn.10077710
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0x10]
sub eax, dword [esi + 0xc]
sar eax, 2
push eax
push ecx
push str.Scanning_for_crits...__i__i
push edi
lea eax, [esp + 0x20]
push eax
push 0x10122c84
lea eax, [esp + 0x38]
push 0x1013d098
push eax
call fcn.100774d0
add esp, 0x20
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret