Function at 0x10015ab0
Capabilities:
Authenticate hmac

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x100f372d
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x80
mov eax, dword [0x1011f00c]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, dword [ebx + 8]
mov eax, dword [edi + 8]
lea ecx, [edi + 8]
mov eax, dword [eax + 8]
call eax
mov dword [ebp - 0x80], eax
test eax, eax
je 0x10016302
mov edx, dword [edi + 4]
lea ecx, [edi + 4]
mov edx, dword [edx + 0x20]
call edx
test eax, eax
je 0x10016302
mov ecx, dword [0x101226ac]
push eax
mov edx, dword [ecx]
mov edx, dword [edx + 0x80]
call edx
test eax, eax
je 0x10016302
lea esi, [eax + 0xc]
mov dword [ebp - 0x68], 0
mov ecx, esi
mov dword [ebp - 0x64], 0
xorps xmm0, xmm0
movups xmmword [ebp - 0x78], xmm0
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10015b53
sub ecx, edx
push ecx
push esi
lea ecx, [ebp - 0x78]
call fcn.1000b9f0
mov eax, dword [ebp - 0x80]
mov dword [ebp - 4], 0
push str.Projectile
push dword [eax + 8]
call dword [sym.imp.VCRUNTIME140.dll_strstr]
add esp, 8
test eax, eax
je 0x100162cc
push str.thrown
push esi
call dword [sym.imp.VCRUNTIME140.dll_strstr]
add esp, 8
test eax, eax
jne 0x10015bb3
push str.dropped
push esi
call dword [sym.imp.VCRUNTIME140.dll_strstr]
add esp, 8
test eax, eax
je 0x100162cc
mov eax, dword [0x10122690]
test eax, eax
jne 0x10015bed
call fcn.10003520
mov edx, 0xe80c2f78
mov ecx, 0x10110019
call fcn.10001980
mov edx, 0xc10bf213
mov ecx, 0x10110025
mov esi, eax
call fcn.10001980
push esi
push eax
call fcn.1008c3b0
mov dword [0x10122690], eax
movq xmm0, qword [eax + edi]
lea edx, [ebp - 0x8c]
mov eax, dword [eax + edi + 8]
lea ecx, [ebp - 0x28]
movq qword [ebp - 0x28], xmm0
mov dword [ebp - 0x20], eax
mov dword [ebp - 0x84], 0x7f800000
mov dword [ebp - 0x88], 0x7f800000
mov dword [ebp - 0x8c], 0x7f800000
call fcn.100668e0
test al, al
je 0x100162cc
call fcn.10016b20
movss xmm0, dword [ebp - 0x88]
mov esi, eax
mov eax, dword [0x101227b4]
mov dl, 0x21
subss xmm0, dword [0x10117f6c]
movss xmm1, dword [ebp - 0x8c]
mov dh, 0x3d
mov ecx, dword [esi]
push 0
push 1
mov dword [ebp - 0x30], eax
mov al, 0x27
mov edi, dword [ecx + 0x20]
mov ah, 0x3c
push 1
mov dword [ebp - 0x18], 0xff000000
mov cl, 0x3b
push 0
push dword [ebp - 0x18]
mov byte [ebp - 0x1c], 0x53
mov ch, 0x24
xor al, byte [ebp - 0x1c]
mov dword [ebp - 0x80], 0xc8ffffff
push dword [ebp - 0x80]
mov byte [ebp - 0x1b], al
mov al, byte [ebp - 0x1c]
xor cl, al
movss dword [ebp - 0x20], xmm0
xor dl, al
mov byte [ebp - 0x1a], cl
xor ch, al
mov byte [ebp - 0x19], dl
xor dh, al
mov byte [ebp - 0x17], ch
xor ah, al
mov byte [ebp - 0x16], dh
sub esp, 0x18
mov byte [ebp - 0x18], ah
mov edx, esp
mov byte [ebp - 0x15], 0
lea ecx, [ebp - 0x1b]
movss dword [ebp - 0x24], xmm1
xorps xmm0, xmm0
mov byte [ebp - 0x15], 0
lea eax, [ecx + 1]
movups xmmword [edx], xmm0
mov dword [edx + 0x10], 0
mov dword [edx + 0x14], 0
mov dword [ebp - 0x80], eax
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10015ce0
sub ecx, dword [ebp - 0x80]
lea eax, [ebp - 0x1b]
push ecx
push eax
mov ecx, edx
call fcn.1000b9f0
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push ecx
mov dword [esp], 0x41400000
mov ecx, esi
push dword [ebp - 0x30]
call edi
xorps xmm0, xmm0
mov dword [ebp - 0x50], 0
movups xmmword [ebp - 0x60], xmm0
mov dword [ebp - 0x4c], 0xf
mov byte [ebp - 0x60], 0
movups xmmword [ebp - 0x48], xmm0
mov dword [ebp - 0x38], 0
mov dword [ebp - 0x34], 0xf
mov byte [ebp - 0x48], 0
push ecx
push str.flashbang
lea ecx, [ebp - 0x78]
mov byte [ebp - 4], 2
call fcn.10016c50
cmp eax, 0xffffffff
je 0x10015e06
mov byte [ebp - 0x28], 0x4a
mov cl, 0x26
xor cl, byte [ebp - 0x28]
mov al, 0x2c
xor al, byte [ebp - 0x28]
mov dl, 0x2b
mov byte [ebp - 0x27], al
mov ch, 0x22
mov byte [ebp - 0x79], dl
mov dh, 0x28
mov al, byte [ebp - 0x79]
mov ah, 0x39
mov byte [ebp - 0x26], cl
mov cl, byte [ebp - 0x28]
xor al, cl
mov byte [ebp - 0x7a], 0x24
mov byte [ebp - 0x21], al
xor dl, cl
mov al, byte [ebp - 0x7a]
xor ch, cl
xor al, cl
mov byte [ebp - 0x7b], 0x2d
xor dh, cl
mov byte [ebp - 0x20], al
mov al, byte [ebp - 0x7b]
xor ah, cl
xor al, cl
mov byte [ebp - 0x23], ch
lea ecx, [ebp - 0x27]
mov byte [ebp - 0x1e], 0
mov byte [ebp - 0x25], dl
mov byte [ebp - 0x22], dh
lea edx, [ecx + 1]
mov byte [ebp - 0x24], ah
mov byte [ebp - 0x1f], al
mov byte [ebp - 0x1e], 0
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10015dc0
sub ecx, edx
lea eax, [ebp - 0x27]
push ecx
push eax
lea ecx, [ebp - 0x60]
call fcn.10016d80
mov cl, 0x28
mov byte [ebp - 0x16], 0
mov al, 0x41
mov byte [ebp - 0x18], cl
xor al, cl
mov byte [ebp - 0x16], 0
lea ecx, [ebp - 0x17]
mov byte [ebp - 0x17], al
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10015df0
sub ecx, edx
lea eax, [ebp - 0x17]
push ecx
push eax
lea ecx, [ebp - 0x48]
call fcn.10016d80
push ecx
push str.smokegrenade
lea ecx, [ebp - 0x78]
call fcn.10016c50
cmp eax, 0xffffffff
je 0x10015e96
mov dh, 0x16
mov byte [ebp - 0x2a], 0
mov cl, 0x7b
mov byte [ebp - 0x30], dh
mov dl, 0x79
mov byte [ebp - 0x2a], 0
xor cl, dh
mov al, 0x65
mov ah, 0x7d
mov byte [ebp - 0x2e], cl
mov ch, 0x73
xor al, dh
xor dl, dh
mov byte [ebp - 0x2f], al
xor ah, dh
mov byte [ebp - 0x2d], dl
xor ch, dh
mov byte [ebp - 0x2c], ah
mov byte [ebp - 0x2b], ch
lea ecx, [ebp - 0x2f]
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10015e50
sub ecx, edx
lea eax, [ebp - 0x2f]
push ecx
push eax
lea ecx, [ebp - 0x60]
call fcn.10016d80
mov cl, 0x32
mov byte [ebp - 0x16], 0
mov al, 0x59
mov byte [ebp - 0x18], cl
xor al, cl
mov byte [ebp - 0x16], 0
lea ecx, [ebp - 0x17]
mov byte [ebp - 0x17], al
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10015e80
sub ecx, edx
lea eax, [ebp - 0x17]
push ecx
push eax
lea ecx, [ebp - 0x48]
call fcn.10016d80
push ecx
push str.incendiarygrenade
lea ecx, [ebp - 0x78]
call fcn.10016c50
cmp eax, 0xffffffff
je 0x10015f66
mov cl, 0x5b
mov byte [ebp - 0x28], 0x35
mov byte [ebp - 0x7b], cl
mov al, 0x5c
xor al, byte [ebp - 0x28]
mov dh, 0x50
xor cl, byte [ebp - 0x28]
mov ch, 0x47
mov byte [ebp - 0x27], al
mov dl, 0x56
mov al, byte [ebp - 0x7b]
mov ah, 0x52
mov byte [ebp - 0x26], cl
mov cl, byte [ebp - 0x28]
xor al, cl
mov byte [ebp - 0x7a], 0x54
mov byte [ebp - 0x21], al
xor dl, cl
mov al, byte [ebp - 0x7a]
xor ch, cl
xor al, cl
mov byte [ebp - 0x79], 0x51
mov byte [ebp - 0x20], al
xor ah, cl
mov al, byte [ebp - 0x79]
xor al, cl
mov byte [ebp - 0x7c], dh
xor dh, cl
mov byte [ebp - 0x1f], al
mov al, byte [ebp - 0x7c]
xor al, cl
mov byte [ebp - 0x23], ch
lea ecx, [ebp - 0x27]
mov byte [ebp - 0x1d], 0
mov byte [ebp - 0x25], dl
mov byte [ebp - 0x22], dh
lea edx, [ecx + 1]
mov byte [ebp - 0x24], ah
mov byte [ebp - 0x1e], al
mov byte [ebp - 0x1d], 0
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10015f20
sub ecx, edx
lea eax, [ebp - 0x27]
push ecx
push eax
lea ecx, [ebp - 0x60]
call fcn.10016d80
mov cl, 0x2e
mov byte [ebp - 0x16], 0
mov al, 0x40
mov byte [ebp - 0x18], cl
xor al, cl
mov byte [ebp - 0x16], 0
lea ecx, [ebp - 0x17]
mov byte [ebp - 0x17], al
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10015f50
sub ecx, edx
lea eax, [ebp - 0x17]
push ecx
push eax
lea ecx, [ebp - 0x48]
call fcn.10016d80
push ecx
push str.molotov
lea ecx, [ebp - 0x78]
call fcn.10016c50
cmp eax, 0xffffffff
je 0x10016016
mov byte [ebp - 0x28], 0x59
mov cl, 0x36
mov al, 0x34
mov byte [ebp - 0x7c], 0x2f
xor al, byte [ebp - 0x28]
mov ah, cl
mov byte [ebp - 0x27], al
mov dh, ah
mov al, byte [ebp - 0x28]
mov dl, 0x35
mov ch, 0x2d
mov byte [ebp - 0x20], 0
xor cl, al
mov byte [ebp - 0x20], 0
xor dl, al
mov byte [ebp - 0x26], cl
xor ch, al
mov byte [ebp - 0x25], dl
xor dh, al
mov byte [ebp - 0x23], ch
xor ah, al
mov byte [ebp - 0x22], dh
mov al, byte [ebp - 0x7c]
lea ecx, [ebp - 0x27]
xor al, byte [ebp - 0x28]
lea edx, [ecx + 1]
mov byte [ebp - 0x24], ah
mov byte [ebp - 0x21], al
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10015fd0
sub ecx, edx
lea eax, [ebp - 0x27]
push ecx
push eax
lea ecx, [ebp - 0x60]
call fcn.10016d80
mov cl, 0x36
mov byte [ebp - 0x16], 0
mov al, 0x5a
mov byte [ebp - 0x18], cl
xor al, cl
mov byte [ebp - 0x16], 0
lea ecx, [ebp - 0x17]
mov byte [ebp - 0x17], al
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10016000
sub ecx, edx
lea eax, [ebp - 0x17]
push ecx
push eax
lea ecx, [ebp - 0x48]
call fcn.10016d80
push ecx
push str.fraggrenade
lea ecx, [ebp - 0x78]
call fcn.10016c50
cmp eax, 0xffffffff
je 0x100160e6
mov cl, 0x4b
mov byte [ebp - 0x28], 0x2e
mov dh, cl
mov byte [ebp - 0x7c], 0x40
xor cl, byte [ebp - 0x28]
mov al, 0x46
xor al, byte [ebp - 0x28]
mov ch, 0x5c
mov byte [ebp - 0x27], al
mov dl, 0xe
mov al, byte [ebp - 0x7c]
mov ah, 0x49
mov byte [ebp - 0x26], cl
mov cl, byte [ebp - 0x28]
xor al, cl
mov byte [ebp - 0x7b], 0x4f
mov byte [ebp - 0x21], al
xor dl, cl
mov al, byte [ebp - 0x7b]
xor ch, cl
xor al, cl
mov byte [ebp - 0x7a], 0x4a
mov byte [ebp - 0x20], al
xor ah, cl
mov al, byte [ebp - 0x7a]
xor al, cl
mov byte [ebp - 0x79], dh
xor dh, cl
mov byte [ebp - 0x1f], al
mov al, byte [ebp - 0x79]
xor al, cl
mov byte [ebp - 0x23], ch
lea ecx, [ebp - 0x27]
mov byte [ebp - 0x1d], 0
mov byte [ebp - 0x25], dl
mov byte [ebp - 0x22], dh
lea edx, [ecx + 1]
mov byte [ebp - 0x24], ah
mov byte [ebp - 0x1e], al
mov byte [ebp - 0x1d], 0
nop dword [eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x100160a0
sub ecx, edx
lea eax, [ebp - 0x27]
push ecx
push eax
lea ecx, [ebp - 0x60]
call fcn.10016d80
mov cl, 0x3b
mov byte [ebp - 0x16], 0
mov al, 0x51
mov byte [ebp - 0x18], cl
xor al, cl
mov byte [ebp - 0x16], 0
lea ecx, [ebp - 0x17]
mov byte [ebp - 0x17], al
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x100160d0
sub ecx, edx
lea eax, [ebp - 0x17]
push ecx
push eax
lea ecx, [ebp - 0x48]
call fcn.10016d80
push ecx
push str.decoy
lea ecx, [ebp - 0x78]
call fcn.10016c50
cmp eax, 0xffffffff
je 0x10016176
mov dh, 0x58
mov byte [ebp - 0x2a], 0
mov cl, 0x3d
mov byte [ebp - 0x30], dh
mov dl, 0x3b
mov byte [ebp - 0x2a], 0
xor cl, dh
mov al, 0x3c
mov ah, 0x37
mov byte [ebp - 0x2e], cl
mov ch, 0x21
xor al, dh
xor dl, dh
mov byte [ebp - 0x2f], al
xor ah, dh
mov byte [ebp - 0x2d], dl
xor ch, dh
mov byte [ebp - 0x2c], ah
mov byte [ebp - 0x2b], ch
lea ecx, [ebp - 0x2f]
lea edx, [ecx + 1]
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10016130
sub ecx, edx
lea eax, [ebp - 0x2f]
push ecx
push eax
lea ecx, [ebp - 0x60]
call fcn.10016d80
mov cl, 0xd
mov byte [ebp - 0x16], 0
mov al, 0x60
mov byte [ebp - 0x18], cl
xor al, cl
mov byte [ebp - 0x16], 0
lea ecx, [ebp - 0x17]
mov byte [ebp - 0x17], al
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10016160
sub ecx, edx
lea eax, [ebp - 0x17]
push ecx
push eax
lea ecx, [ebp - 0x48]
call fcn.10016d80
xor esi, esi
cmp byte [0x101580da], 0
je 0x100161f1
call fcn.10016b20
movss xmm0, dword [ebp - 0x8c]
mov esi, dword [0x101227ac]
push 0
mov ecx, dword [eax]
push 1
push 1
push 0
mov edi, dword [ecx + 0x20]
mov dword [ebp - 0x80], 0xff000000
push dword [ebp - 0x80]
mov dword [ebp - 0x18], 0xc8ffffff
push dword [ebp - 0x18]
mov dword [ebp - 0x30], eax
lea eax, [ebp - 0x48]
sub esp, 0x18
movss dword [ebp - 0x24], xmm0
movss xmm0, dword [ebp - 0x88]
mov ecx, esp
movss dword [ebp - 0x20], xmm0
push eax
call fcn.1000e1d0
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push ecx
mov ecx, dword [ebp - 0x30]
mov dword [esp], 0x41400000
push esi
call edi
mov esi, 0xd
cmp byte [0x101580e5], 0
je 0x1001626c
call fcn.10016b20
movss xmm1, dword [ebp - 0x8c]
push 0
push 1
mov ecx, dword [eax]
push 1
push 0
movd xmm0, esi
mov edi, dword [ecx + 0x20]
mov esi, dword [0x101227b4]
mov dword [ebp - 0x80], 0xff000000
push dword [ebp - 0x80]
cvtdq2ps xmm0, xmm0
mov dword [ebp - 0x18], 0xc8ffffff
mov dword [ebp - 0x30], eax
lea eax, [ebp - 0x60]
push dword [ebp - 0x18]
addss xmm0, dword [ebp - 0x88]
sub esp, 0x18
movss dword [ebp - 0x24], xmm1
mov ecx, esp
push eax
movss dword [ebp - 0x20], xmm0
call fcn.1000e1d0
push dword [ebp - 0x20]
push dword [ebp - 0x24]
push ecx
mov ecx, dword [ebp - 0x30]
mov dword [esp], 0x41400000
push esi
call edi
mov ecx, dword [ebp - 0x34]
cmp ecx, 0x10
jb 0x1001629c
mov edx, dword [ebp - 0x48]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10016292
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100162f2
push ecx
push edx
call fcn.100f1c8c
add esp, 8
mov ecx, dword [ebp - 0x4c]
cmp ecx, 0x10
jb 0x100162cc
mov edx, dword [ebp - 0x60]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x100162c2
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100162f2
push ecx
push edx
call fcn.100f1c8c
add esp, 8
mov ecx, dword [ebp - 0x64]
cmp ecx, 0x10
jb 0x10016302
mov edx, dword [ebp - 0x78]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x100162f8
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x100162f8
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.100f1c8c
add esp, 8
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.100f1854
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 4