Function at 0x10018336
Capabilities:
Authenticate hmac
Encode data using xor

Disassembly:
push 0x5c
mov eax, 0x10078d56
call fcn.10040a5d
mov esi, ecx
mov eax, dword [esi]
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount64]
mov dword [0x100a6200], eax
call edi
sub eax, dword [esi + 0x30]
mov ecx, eax
sbb edx, dword [esi + 0x34]
call fcn.10041060
cvtsd2ss xmm0, xmm0
divss xmm0, dword [0x10094f28]
comiss xmm0, dword [0x10094e98]
jb 0x100186e9
call edi
mov dword [esi + 0x30], eax
xor ecx, ecx
mov al, byte [esi + 0x20]
mov dword [esi + 0x34], edx
push 7
pop ebx
test al, al
je 0x1001852c
mov eax, dword [esi + 0x24]
test eax, eax
jle 0x1001839c
dec eax
mov dword [esi + 0x24], eax
mov edi, dword [esi + 0x24]
test edi, edi
js 0x10018520
mov eax, edi
mov dword [ebp - 0x14], 0xf
cdq
mov ecx, 0xe10
idiv ecx
push 0x3c
mov eax, edx
cdq
pop ecx
idiv ecx
push 0x3c
mov ecx, eax
mov eax, edi
cdq
pop edi
idiv edi
xor eax, eax
mov dword [ebp - 0x18], eax
mov byte [ebp - 0x28], al
push 0xa
pop edi
mov dword [ebp - 4], eax
push edx
push ecx
cmp ecx, edi
jae 0x1001842e
cmp edx, edi
jae 0x10018409
mov cl, 0x36
mov dword [ebp - 0x34], 0x52130636
mov dword [ebp - 0x30], 0x5213060c
mov byte [ebp - 0x2c], al
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, ebx
jae 0x10018403
mov cl, byte [ebp - 0x34]
jmp 0x100183f5
mov byte [ebp - 0x2c], 0
jmp 0x10018476
mov cl, 3
mov dword [ebp - 0x34], 0x67263303
mov dword [ebp - 0x30], 0x672639
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x10018428
mov cl, byte [ebp - 0x34]
jmp 0x10018419
mov byte [ebp - 0x2d], 0
jmp 0x10018476
cmp edx, edi
jae 0x10018451
mov cl, 0x5b
mov dword [ebp - 0x34], 0x613f7e5b
mov dword [ebp - 0x30], 0x3f7e6b
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x10018428
mov cl, byte [ebp - 0x34]
jmp 0x10018442
mov cl, 0x33
mov dword [ebp - 0x34], 0x9571633
mov word [ebp - 0x30], 0x5716
mov byte [ebp - 0x2e], al
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 5
jae 0x10018472
mov cl, byte [ebp - 0x34]
jmp 0x10018463
mov byte [ebp - 0x2e], 0
sub esp, 0x18
lea eax, [ebp - 0x33]
mov ecx, esp
push eax
call fcn.10004181
lea eax, [ebp - 0x50]
push eax
call fcn.10003c4b
add esp, 0x24
lea ecx, [ebp - 0x28]
push eax
call fcn.10007a5b
push 0
push 1
lea ecx, [ebp - 0x50]
call fcn.10004036
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
movaps xmm0, xmmword [0x10095eb0]
cmovae eax, dword [ebp - 0x28]
xor ecx, ecx
push eax
movups xmmword [ebp - 0x50], xmm0
mov dword [ebp - 0x40], 0x143a6c12
mov byte [ebp - 0x3c], 0
mov al, byte [ebp - 0x50]
xor byte [ebp + ecx - 0x4f], al
inc ecx
cmp ecx, 0x13
jb 0x100184c9
sub esp, 0x18
mov byte [ebp - 0x3c], 0
lea eax, [ebp - 0x4f]
mov ecx, esp
push eax
call fcn.10004181
lea eax, [ebp - 0x68]
push eax
call fcn.10003c4b
add esp, 0x20
mov byte [ebp - 4], 1
mov edx, eax
mov ecx, dword [esi + 8]
call fcn.1000ff04
push 0
push 1
lea ecx, [ebp - 0x68]
call fcn.10004036
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x28]
push 0
push 1
call fcn.10004036
xor ecx, ecx
cmp dword [esi + 0x24], 0
jg 0x1001852c
mov byte [esi + 0x20], cl
mov dword [esi + 0x24], ecx
mov al, byte [esi + 0x21]
test al, al
je 0x100186e9
movzx eax, word [esi + 0x28]
test ax, ax
jle 0x10018545
dec eax
mov word [esi + 0x28], ax
movzx edi, word [esi + 0x28]
mov eax, edi
test ax, ax
js 0x100186d8
cwde
mov ecx, 0xe10
cdq
idiv ecx
push 0x3c
mov eax, edx
mov dword [ebp - 0x14], 0xf
cdq
pop ecx
idiv ecx
push 0x3c
movzx ecx, ax
mov eax, edi
cwde
cdq
pop edi
idiv edi
movzx eax, dx
xor edx, edx
mov dword [ebp - 0x18], edx
mov byte [ebp - 0x28], dl
push 0xa
pop edi
mov dword [ebp - 4], 2
push eax
push ecx
cmp cx, di
jae 0x100185e8
cmp ax, di
mov eax, edx
jae 0x100185c1
mov cl, 3
mov dword [ebp - 0x34], 0x67263303
mov dword [ebp - 0x30], 0x67263339
mov byte [ebp - 0x2c], dl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, ebx
jae 0x100185bc
mov cl, byte [ebp - 0x34]
jmp 0x100185ae
mov byte [ebp - 0x2c], dl
jmp 0x10018632
mov byte [ebp - 0x34], bl
mov dword [ebp - 0x33], 0x3d632237
mov word [ebp - 0x2f], 0x6322
mov byte [ebp - 0x2d], dl
xor byte [ebp + eax - 0x33], bl
inc eax
cmp eax, 6
jae 0x100185e3
mov bl, byte [ebp - 0x34]
jmp 0x100185d4
mov byte [ebp - 0x2d], dl
jmp 0x10018632
cmp ax, di
mov eax, edx
jae 0x1001860e
mov cl, 0x6a
mov dword [ebp - 0x34], 0x500e4f6a
mov dword [ebp - 0x30], 0xe4f5a
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 6
jae 0x100185e3
mov cl, byte [ebp - 0x34]
jmp 0x100185ff
mov cl, 0x51
mov dword [ebp - 0x34], 0x6b357451
mov word [ebp - 0x30], 0x3574
mov byte [ebp - 0x2e], dl
xor byte [ebp + eax - 0x33], cl
inc eax
cmp eax, 5
jae 0x1001862f
mov cl, byte [ebp - 0x34]
jmp 0x10018620
mov byte [ebp - 0x2e], dl
sub esp, 0x18
lea eax, [ebp - 0x33]
mov ecx, esp
push eax
call fcn.10004181
lea eax, [ebp - 0x68]
push eax
call fcn.10003c4b
add esp, 0x24
lea ecx, [ebp - 0x28]
push eax
call fcn.10007a5b
xor ebx, ebx
lea ecx, [ebp - 0x68]
push ebx
push 1
call fcn.10004036
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
movaps xmm0, xmmword [0x10095d30]
mov ecx, ebx
cmovae eax, dword [ebp - 0x28]
push eax
movups xmmword [ebp - 0x50], xmm0
mov dword [ebp - 0x40], 0x17413f44
mov word [ebp - 0x3c], 0x39
mov al, byte [ebp - 0x50]
xor byte [ebp + ecx - 0x4f], al
inc ecx
cmp ecx, 0x14
jb 0x10018688
sub esp, 0x18
mov byte [ebp - 0x3b], bl
lea eax, [ebp - 0x4f]
mov ecx, esp
push eax
call fcn.10004181
lea eax, [ebp - 0x68]
push eax
call fcn.10003c4b
add esp, 0x20
mov byte [ebp - 4], 3
mov edx, eax
mov ecx, dword [esi + 0xc]
call fcn.1000ff04
push ebx
push 1
lea ecx, [ebp - 0x68]
call fcn.10004036
push ebx
push 1
lea ecx, [ebp - 0x28]
call fcn.10004036
jmp 0x100186da
xor ebx, ebx
cmp word [esi + 0x28], bx
jg 0x100186e9
xor eax, eax
mov byte [esi + 0x21], bl
mov word [esi + 0x28], ax
call fcn.10040a07
ret