Function at 0x10015b50
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 0x100f422d
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x80
mov eax, dword [0x1011e00c]
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 0x100163a2
mov edx, dword [edi + 4]
lea ecx, [edi + 4]
mov edx, dword [edx + 0x20]
call edx
test eax, eax
je 0x100163a2
mov ecx, dword [0x1012030c]
push eax
mov edx, dword [ecx]
mov edx, dword [edx + 0x80]
call edx
test eax, eax
je 0x100163a2
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 0x10015bf3
sub ecx, edx
push ecx
push esi
lea ecx, [ebp - 0x78]
call fcn.1000b920
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 0x1001636c
push str.thrown
push esi
call dword [sym.imp.VCRUNTIME140.dll_strstr]
add esp, 8
test eax, eax
jne 0x10015c53
push str.dropped
push esi
call dword [sym.imp.VCRUNTIME140.dll_strstr]
add esp, 8
test eax, eax
je 0x1001636c
mov eax, dword [0x101202f0]
test eax, eax
jne 0x10015c8d
call fcn.100034c0
mov edx, 0xe80c2f78
mov ecx, 0x101100b9
call fcn.100018f0
mov edx, 0xc10bf213
mov ecx, 0x101100c5
mov esi, eax
call fcn.100018f0
push esi
push eax
call fcn.1008e510
mov dword [0x101202f0], 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.1006a620
test al, al
je 0x1001636c
call fcn.10016cc0
movss xmm0, dword [ebp - 0x88]
mov esi, eax
mov eax, dword [0x10120404]
mov dl, 0x7a
subss xmm0, dword [0x1011704c]
movss xmm1, dword [ebp - 0x8c]
mov dh, 0x66
mov ecx, dword [esi]
push 0
push 1
mov dword [ebp - 0x30], eax
mov al, 0x7c
mov edi, dword [ecx + 0x24]
mov ah, 0x67
push 1
mov dword [ebp - 0x18], 0xff000000
mov cl, 0x60
push 0
push dword [ebp - 0x18]
mov byte [ebp - 0x1c], 8
mov ch, 0x7f
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 0x10015d80
sub ecx, dword [ebp - 0x80]
lea eax, [ebp - 0x1b]
push ecx
push eax
mov ecx, edx
call fcn.1000b920
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.10016df0
cmp eax, 0xffffffff
je 0x10015ea6
mov byte [ebp - 0x28], 5
mov cl, 0x69
xor cl, byte [ebp - 0x28]
mov al, 0x63
xor al, byte [ebp - 0x28]
mov dl, 0x64
mov byte [ebp - 0x27], al
mov ch, 0x6d
mov byte [ebp - 0x79], dl
mov dh, 0x67
mov al, byte [ebp - 0x79]
mov ah, 0x76
mov byte [ebp - 0x26], cl
mov cl, byte [ebp - 0x28]
xor al, cl
mov byte [ebp - 0x7a], 0x6b
mov byte [ebp - 0x21], al
xor dl, cl
mov al, byte [ebp - 0x7a]
xor ch, cl
xor al, cl
mov byte [ebp - 0x7b], 0x62
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 0x10015e60
sub ecx, edx
lea eax, [ebp - 0x27]
push ecx
push eax
lea ecx, [ebp - 0x60]
call fcn.10016f20
mov cl, 0x5e
mov byte [ebp - 0x16], 0
mov al, 0x37
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 0x10015e90
sub ecx, edx
lea eax, [ebp - 0x17]
push ecx
push eax
lea ecx, [ebp - 0x48]
call fcn.10016f20
push ecx
push str.smokegrenade
lea ecx, [ebp - 0x78]
call fcn.10016df0
cmp eax, 0xffffffff
je 0x10015f36
mov dh, 0x44
mov byte [ebp - 0x2a], 0
mov cl, 0x29
mov byte [ebp - 0x30], dh
mov dl, 0x2b
mov byte [ebp - 0x2a], 0
xor cl, dh
mov al, 0x37
mov ah, 0x2f
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 0x10015ef0
sub ecx, edx
lea eax, [ebp - 0x2f]
push ecx
push eax
lea ecx, [ebp - 0x60]
call fcn.10016f20
mov cl, 0x11
mov byte [ebp - 0x16], 0
mov al, 0x7a
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 0x10015f20
sub ecx, edx
lea eax, [ebp - 0x17]
push ecx
push eax
lea ecx, [ebp - 0x48]
call fcn.10016f20
push ecx
push str.incendiarygrenade
lea ecx, [ebp - 0x78]
call fcn.10016df0
cmp eax, 0xffffffff
je 0x10016006
xor cl, cl
mov byte [ebp - 0x28], 0x6e
mov byte [ebp - 0x7b], cl
mov al, 7
xor al, byte [ebp - 0x28]
mov dh, 0xb
mov byte [ebp - 0x27], al
mov ch, 0x1c
mov al, byte [ebp - 0x7b]
mov dl, 0xd
mov byte [ebp - 0x1d], cl
mov ah, 9
xor cl, byte [ebp - 0x28]
mov byte [ebp - 0x26], cl
mov cl, byte [ebp - 0x28]
xor al, cl
mov byte [ebp - 0x7a], 0xf
mov byte [ebp - 0x21], al
xor dl, cl
mov al, byte [ebp - 0x7a]
xor ch, cl
xor al, cl
mov byte [ebp - 0x79], 0xa
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 - 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 + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x10015fc0
sub ecx, edx
lea eax, [ebp - 0x27]
push ecx
push eax
lea ecx, [ebp - 0x60]
call fcn.10016f20
mov cl, 0x3d
mov byte [ebp - 0x16], 0
mov al, 0x53
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 0x10015ff0
sub ecx, edx
lea eax, [ebp - 0x17]
push ecx
push eax
lea ecx, [ebp - 0x48]
call fcn.10016f20
push ecx
push str.molotov
lea ecx, [ebp - 0x78]
call fcn.10016df0
cmp eax, 0xffffffff
je 0x100160b6
mov byte [ebp - 0x28], 0x66
mov cl, 9
mov al, 0xb
mov byte [ebp - 0x7c], 0x10
xor al, byte [ebp - 0x28]
mov ah, cl
mov byte [ebp - 0x27], al
mov dh, ah
mov al, byte [ebp - 0x28]
mov dl, 0xa
mov ch, 0x12
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 0x10016070
sub ecx, edx
lea eax, [ebp - 0x27]
push ecx
push eax
lea ecx, [ebp - 0x60]
call fcn.10016f20
mov cl, 0x48
mov byte [ebp - 0x16], 0
mov al, 0x24
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 0x100160a0
sub ecx, edx
lea eax, [ebp - 0x17]
push ecx
push eax
lea ecx, [ebp - 0x48]
call fcn.10016f20
push ecx
push str.fraggrenade
lea ecx, [ebp - 0x78]
call fcn.10016df0
cmp eax, 0xffffffff
je 0x10016186
mov cl, 0x3b
mov byte [ebp - 0x28], 0x5e
mov dh, cl
mov byte [ebp - 0x7c], 0x30
xor cl, byte [ebp - 0x28]
mov al, 0x36
xor al, byte [ebp - 0x28]
mov ch, 0x2c
mov byte [ebp - 0x27], al
mov dl, 0x7e
mov al, byte [ebp - 0x7c]
mov ah, 0x39
mov byte [ebp - 0x26], cl
mov cl, byte [ebp - 0x28]
xor al, cl
mov byte [ebp - 0x7b], 0x3f
mov byte [ebp - 0x21], al
xor dl, cl
mov al, byte [ebp - 0x7b]
xor ch, cl
xor al, cl
mov byte [ebp - 0x7a], 0x3a
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 0x10016140
sub ecx, edx
lea eax, [ebp - 0x27]
push ecx
push eax
lea ecx, [ebp - 0x60]
call fcn.10016f20
mov cl, 0x52
mov byte [ebp - 0x16], 0
mov al, 0x38
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 0x10016170
sub ecx, edx
lea eax, [ebp - 0x17]
push ecx
push eax
lea ecx, [ebp - 0x48]
call fcn.10016f20
push ecx
push str.decoy
lea ecx, [ebp - 0x78]
call fcn.10016df0
cmp eax, 0xffffffff
je 0x10016216
mov dh, 0x39
mov byte [ebp - 0x2a], 0
mov cl, 0x5c
mov byte [ebp - 0x30], dh
mov dl, 0x5a
mov byte [ebp - 0x2a], 0
xor cl, dh
mov al, 0x5d
mov ah, 0x56
mov byte [ebp - 0x2e], cl
mov ch, 0x40
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 0x100161d0
sub ecx, edx
lea eax, [ebp - 0x2f]
push ecx
push eax
lea ecx, [ebp - 0x60]
call fcn.10016f20
mov cl, 0x30
mov byte [ebp - 0x16], 0
mov al, 0x5d
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 0x10016200
sub ecx, edx
lea eax, [ebp - 0x17]
push ecx
push eax
lea ecx, [ebp - 0x48]
call fcn.10016f20
xor esi, esi
cmp byte [0x101204eb], 0
je 0x10016291
call fcn.10016cc0
movss xmm0, dword [ebp - 0x8c]
mov esi, dword [0x101203fc]
push 0
mov ecx, dword [eax]
push 1
push 1
push 0
mov edi, dword [ecx + 0x24]
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.1000e120
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 [0x101204f6], 0
je 0x1001630c
call fcn.10016cc0
movss xmm1, dword [ebp - 0x8c]
push 0
push 1
mov ecx, dword [eax]
push 1
push 0
movd xmm0, esi
mov edi, dword [ecx + 0x24]
mov esi, dword [0x10120404]
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.1000e120
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 0x1001633c
mov edx, dword [ebp - 0x48]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10016332
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10016392
push ecx
push edx
call fcn.100f28ed
add esp, 8
mov ecx, dword [ebp - 0x4c]
cmp ecx, 0x10
jb 0x1001636c
mov edx, dword [ebp - 0x60]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10016362
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10016392
push ecx
push edx
call fcn.100f28ed
add esp, 8
mov ecx, dword [ebp - 0x64]
cmp ecx, 0x10
jb 0x100163a2
mov edx, dword [ebp - 0x78]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10016398
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x10016398
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.100f28ed
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.100f238c
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 4