Function at 0x4107d7
Capabilities:
Authenticate hmac
Check os version
Get number of processors
Hash data using fnv
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x54
mov esi, dword [esp + 0x68]
mov eax, dword [esp + 0x74]
cmp eax, 0xe
jg 0x410a4a
xorps xmm0, xmm0
movups xmmword [esp + 0x13], xmm0
movups xmmword [esp + 5], xmm0
mov byte [esp + 4], 0xd6
call fcn.0046d640
mov edi, dword [eax]
call fcn.0046d646
mov ecx, dword [eax]
xor eax, eax
cmp edi, eax
ja 0x410b2a
mov dl, byte [esp + eax + 4]
movzx esi, dl
lea ebp, [ecx + 1]
cmp edi, ebp
jae 0x410861
cmp ecx, eax
ja 0x410b35
lea ebx, [edi + ecx]
cmp ebx, eax
jbe 0x410896
lea edx, [ecx + 8]
cmp edi, edx
jne 0x4108f4
mov dword [esp], ebx
lea edi, [eax - 0x57a36324]
lea edx, [eax + esi]
add edx, 0xa85c9cdc
and edi, esi
add edi, edi
sub edx, edi
add dl, 0xfc
jmp 0x41096a
je 0x4108ea
lea ebx, [ecx + 2]
cmp edi, ebx
je 0x41089b
lea ebx, [ecx + 3]
cmp edi, ebx
jne 0x410942
lea ebx, [eax + 0x42072f7b]
lea edx, [eax + esi]
add edx, 0x42072f7b
and ebx, esi
add ebx, ebx
sub edx, ebx
add dl, 0xa3
jmp 0x41098b
cmp ebx, 4
jne 0x410919
lea ebx, [eax + 0x66556d61]
lea edx, [esi + eax]
add edx, 0x66556d61
and ebx, esi
add ebx, ebx
sub edx, ebx
add dl, 0x59
mov byte [esp + eax + 4], dl
movzx edx, dl
not ecx
add ecx, eax
sub ecx, edx
mov eax, ecx
mov ecx, ebp
lea ebx, [eax + 0x185639c4]
lea edx, [eax + esi]
add edx, 0x185639c4
and ebx, esi
add ebx, ebx
sub edx, ebx
add dl, 0xa4
mov byte [esp + eax + 4], dl
sub eax, edi
inc edi
mov dl, byte [esp + eax + 2]
add eax, 0xfffffffe
movzx edx, dl
add edx, ecx
jmp 0x410990
lea edx, [ecx + 3]
cmp edi, edx
jne 0x410801
lea ebx, [eax + 0x705fce68]
lea edx, [eax + esi]
add edx, 0x705fce68
and ebx, esi
add ebx, ebx
sub edx, ebx
add dl, 0x28
jmp 0x41098b
cmp edi, ebp
jne 0x4109a1
lea edx, [eax - 0x61adc42b]
lea ecx, [eax + esi]
add ecx, 0x9e523bd5
and edx, esi
add edx, edx
sub ecx, edx
add cl, 0x2d
mov byte [esp + eax + 4], cl
jmp 0x4109e0
lea ebx, [ecx + 5]
cmp edi, ebx
jne 0x4109d3
lea ebx, [eax + 0xa0a6107]
lea edx, [eax + esi]
add edx, 0xa0a6107
and ebx, esi
add ebx, ebx
sub edx, ebx
add dl, 0xcf
add edi, ecx
mov dword [esp], edi
lea edi, [eax + 0x253d49b]
lea ebx, [esi + eax]
add ebx, 0x253d49b
and edi, esi
add edi, edi
sub ebx, edi
add bl, dl
add bl, 0xc3
mov byte [esp + eax + 4], bl
mov edi, dword [esp]
movzx edx, dl
not edx
add eax, edx
inc eax
cmp eax, 0x1f
jb 0x410811
jmp 0x410b31
mov dword [esp], ebx
lea ebx, [ecx + 2]
cmp edi, ebx
je 0x4109e0
lea ebx, [ecx + 3]
cmp edi, ebx
je 0x4109de
lea ebx, [ecx + 5]
cmp edi, ebx
jne 0x4109e5
lea edi, [eax + 0x5e38af75]
lea edx, [eax + esi]
add edx, 0x5e38af75
and edi, esi
add edi, edi
sub edx, edi
add dl, 0xcd
jmp 0x410988
lea ebx, [ecx + 7]
cmp edi, ebx
jne 0x410827
mov ebp, ecx
dec eax
mov ecx, ebp
jmp 0x410992
lea ebx, [ecx + 4]
cmp edi, ebx
je 0x41089b
lea ebx, [ecx + 6]
cmp edi, ebx
je 0x4108c4
test edi, edi
je 0x410a1e
lea edi, [eax + 0x50530838]
lea ebx, [eax + esi]
add ebx, 0x50530838
and edi, esi
add edi, edi
sub ebx, edi
add dl, bl
add dl, 0x78
jmp 0x41096a
cmp ecx, 1
ja 0x410921
lea edi, [eax - 0x4dff339d]
lea edx, [eax + esi]
add edx, 0xb200cc63
and edi, esi
add edi, edi
sub edx, edi
add dl, 0x4b
mov byte [esp + eax + 4], dl
xor edi, edi
jmp 0x410992
mov edx, dword [esp + 0x70]
mov ebx, 0xf
lea ebp, [esp + 4]
mov dword [ebp + 0x14], ebx
mov dword [ebp + 0x10], 0xc
movsd xmm0, qword [edx + 3]
movsd qword [ebp], xmm0
mov ecx, dword [edx + 0xb]
mov dword [ebp + 8], ecx
xor ecx, ecx
mov byte [ebp + 0xc], cl
add eax, 0xfffffff1
add edx, ebx
lea edi, [esp + 0x24]
mov dword [edi], ecx
mov dword [edi + 0x10], ecx
mov dword [edi + 0x14], ebx
mov byte [edi], cl
mov ecx, edi
push eax
push edx
call fcn.00450e50
lea ebx, [esp + 0x3c]
push edi
push ebp
push dword [esp + 0x74]
push ebx
call fcn.0040deb6
add esp, 0x10
movsd xmm0, qword [ebx + 0x10]
movsd qword [esi + 0x10], xmm0
movups xmm0, xmmword [ebx]
mov ebx, esi
movups xmmword [esi], xmm0
mov eax, dword [edi + 0x14]
cmp eax, 0x10
jb 0x410af0
mov ecx, dword [esp + 0x24]
lea esi, [eax + 1]
cmp esi, 0x1000
jb 0x410ae6
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x410b71
add eax, 0x24
mov esi, eax
mov ecx, edx
push esi
push ecx
call fcn.00471733
add esp, 8
mov eax, dword [esp + 0x18]
cmp eax, 0x10
mov edi, ebx
jb 0x410b67
mov ecx, dword [esp + 4]
lea esi, [eax + 1]
cmp esi, 0x1000
jb 0x410b1e
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x410b71
add eax, 0x24
mov esi, eax
mov ecx, edx
push esi
push ecx
call fcn.00471733
add esp, 8
jmp 0x410b67
mov eax, 0x10a1ee7
jmp 0x410b3a
xor eax, eax
jmp 0x410b3a
mov eax, 0x1495284
lea esi, [esp + eax]
add esi, 4
xor eax, eax
mov edi, dword [esp + 0x68]
mov dword [edi], eax
mov dword [edi + 0x10], eax
mov dword [edi + 0x14], 0xf
mov byte [edi], 0
push esi
call sub.api_ms_win_crt_string_l1_1_0.dll_strlen
add esp, 4
mov ecx, edi
push eax
push esi
call fcn.00450e50
mov eax, edi
add esp, 0x54
pop esi
pop edi
pop ebx
pop ebp
ret
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]