Function at 0x7dedc984
Capabilities:
Hash data using sha1

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 8
cmp dword [0x7df700a8], 0
push ebx
je 0x7dedec34
mov eax, dword [ebp + 8]
mov dword [eax + 0x54], 0
mov dword [eax + 0x58], 0
mov dword [eax + 0x40], 0x67452301
mov dword [eax + 0x44], 0xefcdab89
mov dword [eax + 0x48], 0x98badcfe
mov dword [eax + 0x4c], 0x10325476
mov dword [eax + 0x50], 0xc3d2e1f0
pop ebx
mov esp, ebp
pop ebp
ret 4
push eax
push ebx
push ecx
push edx
xor eax, eax
cpuid
xor eax, eax
xor ebx, 0x756e6547
sete al
xor ebx, ebx
xor ecx, 0x6c65746e
sete bl
and eax, ebx
xor ecx, ecx
xor edx, 0x49656e69
sete cl
and eax, ecx
mov dword [ebp - 4], eax
mov eax, 1
cpuid
xor ecx, ecx
xor edx, edx
mov ebx, 0xff0
and ebx, eax
mov dword [ebp - 8], ebx
pop edx
pop ecx
pop ebx
pop eax
cmp dword [ebp - 4], 0
mov eax, 1
je 0x7dedec95
cmp dword [ebp - 8], 0x660
jb 0x7df07683
mov eax, dword [eax*4 + 0x7df768a0]
mov dword [0x7df700a8], eax
jmp 0x7dedc99a
add byte [eax], al
add byte [eax], al
add al, ah
cli
inc eax
add byte [eax], ah
sti
inc eax
add byte [eax - 5], bl
inc eax
add byte [eax - 0x27ffbf05], dl
sti
inc eax
add byte [eax], bh
cld
inc eax
add byte [esp + edi*8 - 0x143bffc0], al
inc eax
add al, al
cld
inc eax
add byte [eax], al
std
inc eax
add byte [edi*8 - 0x287ffc0], bh
inc eax
add al, cl
std
inc eax
add byte [eax], ah
inc byte [eax]
push 0xb80040fe
inc byte [eax]
add ah, ch
inc eax
add ah, cl
inc byte [eax]
in al, 0xfe
inc eax
add al, dh
inc byte [eax]
cmp bh, bh
inc eax
add byte [eax - 1], cl
inc eax
add byte [ecx], ah
jo 0x7df076e4
imul eax, dword [eax], 0x6d002d
jae 0x7df076ec
sub eax, 0x69007700
add byte [esi], ch
sub eax, 0x6f006300
add byte [edx], dh
add byte gs:[0x61006400], ch
add byte [eax + eax + 0x65], dh
add byte [eax + eax + 0x69], dh
add byte [ebp], ch
add byte gs:[0x31006c00], ch
add byte [0x2d003100], ch
add byte [ecx], dh
add byte [eax], al
add byte [ecx], ah
jo 0x7df07724
imul eax, dword [eax], 0x6d002d
jae 0x7df0772c
sub eax, 0x69007700
add byte [esi], ch
sub eax, 0x6f006300
add byte [edx], dh
add byte gs:[0x69006600], ch
add byte [eax + eax + 0x65], ch
add byte [0x31006c00], ch
add byte [0x2d003200], ch
add byte [eax + eax], dh
add byte [eax], al
popal
add byte [eax], dh
imul eax, dword [eax], 0x6d002d
jae 0x7df07764
sub eax, 0x69007700
add byte [esi], ch
sub eax, 0x6f006300
add byte [edx], dh
add byte gs:[0x69006600], ch
add byte [eax + eax + 0x65], ch
add byte [0x31006c00], ch
add byte [0x2d003200], ch
add byte [edx], dh
add byte [eax], al
add byte [ecx], ah
jo 0x7df07794
imul eax, dword [eax], 0x6d002d
jae 0x7df0779c
sub eax, 0x69007700
add byte [esi], ch
sub eax, 0x6f006300
add byte [edx], dh
add byte gs:[0x6f006c00], ch
add byte [ebx], ah
popal
add byte [eax + eax + 0x69], ch
add byte [edx], bh
popal
add byte [eax + eax + 0x69], dh
add byte [edi], ch
outsb dx, byte [esi]
add byte [0x31006c00], ch
add byte [0x2d003200], ch
add byte [ecx], dh
add byte [eax], al
add byte [ecx], ah
jo 0x7df077dc
imul eax, dword [eax], 0x6d002d
jae 0x7df077e4
sub eax, 0x69007700
add byte [esi], ch
sub eax, 0x6f006300
add byte [edx], dh
add byte gs:[0x6f006c00], ch
add byte [ebx], ah
popal
add byte [eax + eax + 0x69], ch
add byte [edx], bh
popal
add byte [eax + eax + 0x69], dh
add byte [edi], ch
outsb dx, byte [esi]
add byte [0x62006f00], ch
add byte [ebx], dh
outsd dx, dword [esi]
add byte [eax + eax + 0x65], ch
add byte [eax + eax + 0x65], dh
add byte [0x31006c00], ch
add byte [0x2d003200], ch
add byte [eax], dh
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [ecx], ah
jo 0x7df0783c
imul eax, dword [eax], 0x6d002d
jae 0x7df07844
sub eax, 0x69007700
add byte [esi], ch
sub eax, 0x6f006300
add byte [edx], dh
add byte gs:[0x72007000], ch
add byte [edi], ch
arpl word [eax], ax
add byte gs:[ebx], dh
jae 0x7df07866
je 0x7df07868
push 0x65007200
add byte [ecx], ah
add byte fs:[ebx], dh
sub eax, 0x31006c00
add byte [0x2d003100], ch
add byte [edx], dh
add byte [eax], al
add byte [ecx], ah
jo 0x7df07888
imul eax, dword [eax], 0x6d002d
jae 0x7df07890
sub eax, 0x69007700
add byte [esi], ch
sub eax, 0x6f006300
add byte [edx], dh
add byte gs:[0x74007300], ch
add byte [edx], dh
imul eax, dword [eax], 0x67006e
sub eax, 0x31006c00
add byte [0x2d003100], ch
add byte [eax], dh
add byte [eax], al
add byte [ecx], ah
jo 0x7df078c4
imul eax, dword [eax], 0x6d002d
jae 0x7df078cc
sub eax, 0x69007700
add byte [esi], ch
sub eax, 0x6f006300
add byte [edx], dh
add byte gs:[0x79007300], ch
add byte [ebx], dh
imul eax, dword [eax], 0x66006e
outsd dx, dword [esi]
add byte [0x31006c00], ch
add byte [0x2d003200], ch
add byte [ecx], dh
add byte [eax], al
add byte [eax], al
add byte [ecx], ah
jo 0x7df07904
imul eax, dword [eax], 0x6d002d
jae 0x7df0790c
sub eax, 0x69007700
add byte [esi], ch
sub eax, 0x6f006300
add byte [edx], dh
add byte gs:[0x69007700], ch
add byte [esi], ch
jb 0x7df07928
je 0x7df0792a
sub eax, 0x31006c00
add byte [0x2d003100], ch
add byte [eax], dh
add byte [eax], al
add byte [eax], al
add byte [ecx], ah
jo 0x7df07940
imul eax, dword [eax], 0x6d002d
jae 0x7df07948
sub eax, 0x69007700
add byte [esi], ch
sub eax, 0x6f006300
add byte [edx], dh
add byte gs:[0x73007800], ch
add byte [eax + eax + 0x61], dh
add byte [eax + eax + 0x65], dh
add byte [0x32006c00], ch
add byte [0x2d003100], ch
add byte [eax], dh
add byte [eax], al
add byte [ecx], ah
jo 0x7df0797c
imul eax, dword [eax], 0x6d002d
jae 0x7df07984
sub eax, 0x69007700
add byte [esi], ch
sub eax, 0x74007200
add byte [ebx], ah
outsd dx, dword [esi]
add byte [edx], dh
add byte gs:[0x74006e00], ch
add byte [ebp], dh
jae 0x7df079a4
add byte gs:[edx], dh
sub eax, 0x69007700
add byte [esi], ch
add byte fs:[edi], ch
ja 0x7df079b6
sub eax, 0x31006c00
add byte [0x2d003100], ch
add byte [eax], dh
add byte [eax], al
add byte [eax], al
add byte [ecx], ah
jo 0x7df079cc
imul eax, dword [eax], 0x6d002d
jae 0x7df079d4
sub eax, 0x69007700
add byte [esi], ch
sub eax, 0x65007300
add byte [ebx], ah
jne 0x7df079e6
jb 0x7df079e8
imul eax, dword [eax], 0x790074
sub eax, 0x79007300
add byte [ebx], dh
je 0x7df079f8
add byte gs:[ebp], ch
add byte [ebp], dh
outsb dx, byte [esi]
add byte [ebx], ah
je 0x7df07a06
imul eax, dword [eax], 0x6e006f
jae 0x7df07a0e
sub eax, 0x31006c00
add byte [0x2d003100], ch
add byte [eax], dh
add byte [eax], al
add byte [eax], al
add byte [ebp], ah
js 0x7df07a24
je 0x7df07a26
sub eax, 0x73006d00
add byte [0x69007700], ch
add byte [esi], ch
sub eax, 0x74006e00
add byte [ebp], dh
jae 0x7df07a3e
add byte gs:[edx], dh
sub eax, 0x69006400
add byte [ecx], ah
insb byte es:[edi], dx
add byte [edi], ch
add byte [bp + si], ah
outsd dx, dword [esi]
add byte [eax], bh
sub eax, 0x31006c00
add byte [0x2d003100], ch
add byte [eax], dh
add byte [eax], al
add byte [eax], al
add byte [ebp], ah
js 0x7df07a6c
je 0x7df07a6e
sub eax, 0x73006d00
add byte [0x69007700], ch
add byte [esi], ch
sub eax, 0x74006e00
add byte [ebp], dh
jae 0x7df07a86
add byte gs:[edx], dh
sub eax, 0x69007700
add byte [esi], ch
add byte fs:[edi], ch
ja 0x7df07a98
jae 0x7df07a9a
je 0x7df07a9c
popal
add byte [eax + eax + 0x69], dh
add byte [edi], ch
outsb dx, byte [esi]
add byte [0x31006c00], ch
add byte [0x2d003100], ch
add byte [eax], dh
add byte [eax], al
add byte [eax], al
add byte [ecx], ah
add byte fs:[esi], dh
popal
add byte [eax], dh
imul eax, dword [eax], 0x320033