Function at 0x100ad5c0
Capabilities:
Encode data using xor
Hash data using fnv

Disassembly:
mov eax, dword [0x10189818]
sub esp, 0x180
cmp byte [eax + 0x36c5], 0
push ebx
push esi
push edi
mov edi, ecx
je 0x100ae25f
cmp dword [eax + 0x36ac], 0
je 0x100ae25f
cmp dword [eax + 0x36b0], 0
je 0x100ae25f
test edi, edi
je 0x100adb73
mov eax, dword [0x1018ae24]
cmp dword [eax], 0
je 0x100adb73
mov eax, dword [0x10189820]
mov ecx, dword [eax + 0x10]
mov eax, dword [ecx]
mov eax, dword [eax + 0x174]
call eax
test al, al
jne 0x100adb73
mov eax, dword fs:[0x2c]
mov ecx, dword [0x1018a32c]
mov ecx, dword [eax + ecx*4]
mov eax, dword [0x103525b4]
cmp eax, dword [ecx + 4]
jle 0x100ad67f
push 0x103525b4
call fcn.1011c323
add esp, 4
cmp dword [0x103525b4], 0xffffffff
jne 0x100ad67f
mov eax, dword [0x10189820]
push str.mp_c4timer
mov ecx, dword [eax + 8]
mov eax, dword [ecx]
mov eax, dword [eax + 0x3c]
call eax
push 0x103525b4
mov dword [0x103525b0], eax
call fcn.1011c2d9
add esp, 4
push 0
push 0x10157378
lea ecx, [esp + 0xe0]
mov dword [esp + 0xd8], 0
mov dword [esp + 0xdc], 0x437f0000
mov dword [esp + 0xe0], 0
mov dword [esp + 0xf0], 0
mov dword [esp + 0xf4], 0xf
call fcn.1001bfe0
mov eax, dword [0x10189814]
mov ecx, edi
mov eax, dword [eax + 0x10]
movss xmm0, dword [eax]
mov eax, dword [edi]
movss dword [esp + 0xd0], xmm0
mov eax, dword [eax + 4]
call eax
mov ecx, eax
mov edx, 0x811c9dc5
mov al, byte [ecx]
test al, al
je 0x100adb67
inc ecx
movsx eax, al
xor eax, edx
imul edx, eax, 0x1000193
mov al, byte [ecx]
test al, al
jne 0x100ad6f8
cmp edx, 0x1b30ddf0
je 0x100ad97b
cmp edx, 0x4e704c3e
je 0x100ad7d6
cmp edx, 0xec398ed7
jne 0x100adb67
mov eax, dword [0x10189818]
test byte [eax + 0x36b0], 4
je 0x100adb39
mov eax, dword [0x10189820]
push ecx
push str.userid
mov ecx, edi
mov esi, dword [eax + 0x10]
call fcn.10085d80
push eax
mov ecx, esi
call fcn.10085d70
mov ecx, dword [0x1018ae24]
mov esi, eax
mov ecx, dword [ecx]
call fcn.1006a3c0
cmp esi, eax
je 0x100adb39
mov ecx, dword [0x10189820]
push esi
mov ecx, dword [ecx + 0x18]
call fcn.1006a3b0
test eax, eax
je 0x100adb39
lea ecx, [esp + 0x88]
push ecx
mov ecx, eax
call fcn.1006a3d0
push eax
mov edx, str.Hostage_taken_by
lea ecx, [esp + 0xbc]
call fcn.1001e7f0
push eax
lea ecx, [esp + 0xdc]
call fcn.10019eb0
lea ecx, [esp + 0xb8]
call fcn.10002030
lea ecx, [esp + 0x88]
call fcn.10002030
jmp 0x100adb39
mov eax, dword [0x10189818]
test byte [eax + 0x36b0], 8
je 0x100adb39
mov eax, dword [0x10189820]
mov ecx, edi
push 0
push str.userid
mov esi, dword [eax + 0x10]
mov eax, dword [edi]
mov eax, dword [eax + 0x18]
call eax
mov edx, dword [esi]
mov ecx, esi
push eax
mov edx, dword [edx + 0x24]
call edx
mov ecx, dword [0x1018ae24]
mov esi, eax
mov ecx, dword [ecx]
add ecx, 8
mov edx, dword [ecx]
mov edx, dword [edx + 0x28]
call edx
cmp esi, eax
je 0x100adb39
mov eax, dword [0x10189820]
push esi
mov ecx, dword [eax + 0x18]
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
mov esi, eax
test esi, esi
je 0x100adb39
mov ecx, dword [edi]
push 0
push str.site
mov edx, dword [ecx + 0x18]
mov ecx, edi
call edx
test eax, eax
mov dword [esp + 0x28], 0
mov edx, 0x1016fa70
mov dword [esp + 0x38], 0
mov ecx, 0x1016fa6c
mov dword [esp + 0x3c], 0xf
cmove ecx, edx
push ecx
lea ecx, [esp + 0x2c]
call fcn.1001bfb0
mov ecx, dword [0x103525b0]
call fcn.100732f0
lea ecx, [esp + 0xf0]
call fcn.100ad540
mov edi, eax
mov ecx, esi
lea eax, [esp + 0x10]
push eax
call fcn.1006a3d0
mov esi, eax
lea ecx, [esp + 0xa0]
push str._by
lea eax, [esp + 0x2c]
mov edx, str.Bomb_planted_at_bombsite
push eax
call fcn.1001e790
mov edx, eax
lea ecx, [esp + 0x44]
call fcn.1001e8e0
push str.__detonation_in
push esi
mov edx, eax
lea ecx, [esp + 0x60]
call fcn.1001e930
mov edx, eax
lea ecx, [esp + 0x74]
call fcn.1001e8e0
push str._seconds
push edi
mov edx, eax
lea ecx, [esp + 0x90]
call fcn.1001e930
mov edx, eax
lea ecx, [esp + 0xbc]
call fcn.1001e8e0
push eax
lea ecx, [esp + 0xdc]
call fcn.10019eb0
lea ecx, [esp + 0xb8]
call fcn.10002030
lea ecx, [esp + 0x88]
call fcn.10002030
lea ecx, [esp + 0x70]
call fcn.10002030
lea ecx, [esp + 0x58]
call fcn.10002030
lea ecx, [esp + 0x40]
call fcn.10002030
lea ecx, [esp + 0xa0]
call fcn.10002030
lea ecx, [esp + 0x10]
call fcn.10002030
lea ecx, [esp + 0xf0]
call fcn.10002030
lea ecx, [esp + 0x28]
call fcn.10002030
jmp 0x100adb39
mov eax, dword [0x10189820]
mov ecx, edi
push 0
push str.userid
mov esi, dword [eax + 0x10]
mov eax, dword [edi]
mov eax, dword [eax + 0x18]
call eax
mov edx, dword [esi]
mov ecx, esi
push eax
mov edx, dword [edx + 0x24]
call edx
mov ecx, dword [0x10189820]
mov ebx, eax
mov edx, dword [edi]
push 0
push str.attacker
mov esi, dword [ecx + 0x10]
mov ecx, edi
mov edx, dword [edx + 0x18]
call edx
mov edx, dword [esi]
mov ecx, esi
push eax
mov edx, dword [edx + 0x24]
call edx
mov ecx, dword [edi]
mov esi, eax
push 0
push str.dmg_health
mov edx, dword [ecx + 0x18]
mov ecx, edi
call edx
mov edx, eax
lea ecx, [esp + 0xa0]
call fcn.10004110
mov eax, dword [edi]
mov ecx, edi
push 0
push str.hitgroup
mov eax, dword [eax + 0x18]
call eax
cmp eax, 7
ja case.default.0x100ad9f7
jmp dword [eax*4 + 0x100ae28c]
mov eax, str.generic
jmp 0x100ada59
mov eax, 0x1016f9c0
mov ecx, 4
jmp 0x100ada5e
mov eax, str.chest
mov ecx, 5
jmp 0x100ada5e
mov eax, str.stomach
jmp 0x100ada59
mov eax, str.left_arm
mov ecx, 8
jmp 0x100ada5e
mov eax, str.right_arm
mov ecx, 9
jmp 0x100ada5e
mov eax, str.left_leg
mov ecx, 8
jmp 0x100ada5e
mov eax, str.right_leg
mov ecx, 9
jmp 0x100ada5e
mov eax, str.unknown
mov ecx, 7
push ecx
push eax
lea ecx, [esp + 0x18]
mov dword [esp + 0x18], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x2c], 0xf
call fcn.1001bfe0
mov eax, dword [0x1018ae24]
mov ecx, dword [eax]
mov eax, dword [ecx + 8]
add ecx, 8
mov eax, dword [eax + 0x28]
call eax
cmp ebx, eax
je 0x100ade96
mov eax, dword [0x1018ae24]
mov ecx, dword [eax]
mov eax, dword [ecx + 8]
add ecx, 8
mov eax, dword [eax + 0x28]
call eax
cmp esi, eax
jne 0x100ade96
mov eax, dword [0x10189818]
test byte [eax + 0x36b0], 1
jne 0x100adb7d
mov edx, dword [esp + 0x24]
cmp edx, 0x10
jb 0x100adafd
mov ecx, dword [esp + 0x10]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100adaf3
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100ae286
push edx
push ecx
call fcn.1011c1c8
add esp, 8
mov edx, dword [esp + 0xb4]
cmp edx, 0x10
jb 0x100adb39
mov ecx, dword [esp + 0xa0]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100adb2f
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100ae286
push edx
push ecx
call fcn.1011c1c8
add esp, 8
cmp dword [esp + 0xe8], 0
je 0x100adb67
lea eax, [esp + 0xd0]
mov ecx, 0x1034e370
push eax
call fcn.100ae900
lea eax, [esp + 0xd0]
mov ecx, 0x1034e35c
push eax
call fcn.100ae900
lea ecx, [esp + 0xd0]
call fcn.1002e770
pop edi
pop esi
pop ebx
add esp, 0x180
ret
mov eax, dword [0x10189820]
push ebx
mov ecx, dword [eax + 0x18]
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
test eax, eax
je 0x100adac7
lea ecx, [esp + 0x108]
push ecx
mov ecx, eax
call fcn.101196f0
lea ecx, [esp + 0x108]
mov dword [esp + 0x28], 0
mov dword [esp + 0x38], 0
lea edx, [ecx + 1]
mov dword [esp + 0x3c], 0xf
mov al, byte [ecx]
inc ecx
test al, al
jne 0x100adbc6
sub ecx, edx
lea eax, [esp + 0x108]
push ecx
push eax
lea ecx, [esp + 0x30]
call fcn.1001bfe0
lea eax, [esp + 0x28]
mov edx, str.Hurt
push eax
lea ecx, [esp + 0x8c]
call fcn.1001e7f0
push str._for
mov ecx, eax
call fcn.10019dd0
lea ecx, [esp + 0x70]
movups xmm0, xmmword [eax]
movups xmmword [esp + 0x70], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [esp + 0x80], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0xf
mov byte [eax], 0
lea eax, [esp + 0xa0]
push eax
call fcn.10019e40
push str._in
lea ecx, [esp + 0x5c]
movups xmm0, xmmword [eax]
movups xmmword [esp + 0x5c], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [esp + 0x6c], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0xf
mov byte [eax], 0
call fcn.10019dd0
lea ecx, [esp + 0x40]
movups xmm0, xmmword [eax]
movups xmmword [esp + 0x40], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [esp + 0x50], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0xf
mov byte [eax], 0
lea eax, [esp + 0x10]
push eax
call fcn.10019e40
lea ecx, [esp + 0xd8]
movups xmm0, xmmword [eax]
movups xmmword [esp + 0xb8], xmm0
movq xmm0, qword [eax + 0x10]
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0xf
mov byte [eax], 0
lea eax, [esp + 0xb8]
push eax
movq qword [esp + 0xcc], xmm0
call fcn.10019eb0
mov edx, dword [esp + 0xcc]
cmp edx, 0x10
jb 0x100add19
mov ecx, dword [esp + 0xb8]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100add0f
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100ae27c
push edx
push ecx
call fcn.1011c1c8
add esp, 8
mov edx, dword [esp + 0x54]
cmp edx, 0x10
jb 0x100add4f
mov ecx, dword [esp + 0x40]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100add45
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100ae27c
push edx
push ecx
call fcn.1011c1c8
add esp, 8
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0xf
mov byte [esp + 0x40], 0
cmp edx, 0x10
jb 0x100add9a
mov ecx, dword [esp + 0x58]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100add90
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100ae27c
push edx
push ecx
call fcn.1011c1c8
add esp, 8
mov edx, dword [esp + 0x84]
mov dword [esp + 0x68], 0
mov dword [esp + 0x6c], 0xf
mov byte [esp + 0x58], 0
cmp edx, 0x10
jb 0x100adde8
mov ecx, dword [esp + 0x70]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100addde
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100ae27c
push edx
push ecx
call fcn.1011c1c8
add esp, 8
mov edx, dword [esp + 0x9c]
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 0xf
mov byte [esp + 0x70], 0
cmp edx, 0x10
jb 0x100ade3f
mov ecx, dword [esp + 0x88]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100ade35
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100ae27c
push edx
push ecx
call fcn.1011c1c8
add esp, 8
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x98], 0
mov dword [esp + 0x9c], 0xf
mov byte [esp + 0x88], 0
cmp edx, 0x10
jb 0x100ae1f2
mov ecx, dword [esp + 0x28]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100ae1e8
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100ae27c
jmp 0x100ae1e8
mov eax, dword [0x1018ae24]
mov ecx, dword [eax]
mov eax, dword [ecx + 8]
add ecx, 8
mov eax, dword [eax + 0x28]
call eax
cmp ebx, eax
jne 0x100ae1f2
mov eax, dword [0x1018ae24]
mov ecx, dword [eax]
mov eax, dword [ecx + 8]
add ecx, 8
mov eax, dword [eax + 0x28]
call eax
cmp esi, eax
je 0x100ae1f2
mov eax, dword [0x10189818]
test byte [eax + 0x36b0], 2
je 0x100adac7
mov eax, dword [0x10189820]
push esi
mov ecx, dword [eax + 0x18]
mov eax, dword [ecx]
mov eax, dword [eax + 0xc]
call eax
test eax, eax
je 0x100adac7
lea ecx, [esp + 0x108]
push ecx
mov ecx, eax
call fcn.101196f0
lea ecx, [esp + 0x108]
mov dword [esp + 0x28], 0
mov dword [esp + 0x38], 0
lea edx, [ecx + 1]
mov dword [esp + 0x3c], 0xf
mov al, byte [ecx]
inc ecx
test al, al
jne 0x100adf25
sub ecx, edx
lea eax, [esp + 0x108]
push ecx
push eax
lea ecx, [esp + 0x30]
call fcn.1001bfe0
lea eax, [esp + 0x28]
mov edx, str.Harmed_by
push eax
lea ecx, [esp + 0x8c]
call fcn.1001e7f0
push str._for
mov ecx, eax
call fcn.10019dd0
lea ecx, [esp + 0x40]
movups xmm0, xmmword [eax]
movups xmmword [esp + 0x40], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [esp + 0x50], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0xf
mov byte [eax], 0
lea eax, [esp + 0xa0]
push eax
call fcn.10019e40
push str._in
lea ecx, [esp + 0x5c]
movups xmm0, xmmword [eax]
movups xmmword [esp + 0x5c], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [esp + 0x6c], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0xf
mov byte [eax], 0
call fcn.10019dd0
lea ecx, [esp + 0x70]
movups xmm0, xmmword [eax]
movups xmmword [esp + 0x70], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [esp + 0x80], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0xf
mov byte [eax], 0
lea eax, [esp + 0x10]
push eax
call fcn.10019e40
lea ecx, [esp + 0xd8]
movups xmm0, xmmword [eax]
movups xmmword [esp + 0xb8], xmm0
movq xmm0, qword [eax + 0x10]
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0xf
mov byte [eax], 0
lea eax, [esp + 0xb8]
push eax
movq qword [esp + 0xcc], xmm0
call fcn.10019eb0
mov edx, dword [esp + 0xcc]
cmp edx, 0x10
jb 0x100ae078
mov ecx, dword [esp + 0xb8]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100ae06e
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100ae281
push edx
push ecx
call fcn.1011c1c8
add esp, 8
mov edx, dword [esp + 0x84]
cmp edx, 0x10
jb 0x100ae0b1
mov ecx, dword [esp + 0x70]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100ae0a7
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100ae281
push edx
push ecx
call fcn.1011c1c8
add esp, 8
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 0xf
mov byte [esp + 0x70], 0
cmp edx, 0x10
jb 0x100ae102
mov ecx, dword [esp + 0x58]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100ae0f8
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100ae281
push edx
push ecx
call fcn.1011c1c8
add esp, 8
mov edx, dword [esp + 0x54]
mov dword [esp + 0x68], 0
mov dword [esp + 0x6c], 0xf
mov byte [esp + 0x58], 0
cmp edx, 0x10
jb 0x100ae14d
mov ecx, dword [esp + 0x40]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100ae143
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100ae281
push edx
push ecx
call fcn.1011c1c8
add esp, 8
mov edx, dword [esp + 0x9c]
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0xf
mov byte [esp + 0x40], 0
cmp edx, 0x10
jb 0x100ae19e
mov ecx, dword [esp + 0x88]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100ae194
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100ae281
push edx
push ecx
call fcn.1011c1c8
add esp, 8
mov edx, dword [esp + 0x3c]
mov dword [esp + 0x98], 0
mov dword [esp + 0x9c], 0xf
mov byte [esp + 0x88], 0
cmp edx, 0x10
jb 0x100ae1f2
mov ecx, dword [esp + 0x28]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100ae1e8
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100ae281
push edx
push ecx
call fcn.1011c1c8
add esp, 8
mov edx, dword [esp + 0x24]
cmp edx, 0x10
jb 0x100ae224
mov ecx, dword [esp + 0x10]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100ae21a
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100ae286
push edx
push ecx
call fcn.1011c1c8
add esp, 8
mov edx, dword [esp + 0xb4]
cmp edx, 0x10
jb 0x100adb39
mov ecx, dword [esp + 0xa0]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x100adb2f
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x100ae286
jmp 0x100adb2f
mov ecx, 0x1034e370
call fcn.1002e660
pop edi
pop esi
mov ecx, 0x1034e35c
pop ebx
add esp, 0x180
jmp fcn.1002e660
call fcn.10120cee
call fcn.10120cee
call fcn.10120cee
nop
invalid