Function at 0x40fc60
Capabilities:
Hash data using sha1
Hash data using sha1 via wincrypt
Hash data via wincrypt
Initialize hashing via wincrypt

Disassembly:
push 0xffffffffffffffff
push 0x435501
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x290
push ebx
xor ebx, ebx
push edi
lea ecx, [esp + 0x8c]
mov dword [esp + 0x14], ebx
call fcn.00403e90
mov ecx, 0xc
xor eax, eax
lea edi, [esp + 0x58]
mov edx, dword [esp + 0x2a8]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x198]
mov dword [esp + 0x2a0], ebx
rep stosd dword es:[edi], eax
mov al, byte [esp + 0xb]
mov edi, edx
mov byte [esp + 0x18], al
or ecx, 0xffffffff
xor eax, eax
mov dword [esp + 0x10], 0x14
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov dword [esp + 0x1c], ebx
push ecx
push edx
lea ecx, [esp + 0x20]
mov dword [esp + 0x28], ebx
mov dword [esp + 0x2c], ebx
call fcn.00402160
mov edx, dword [esp + 0x190]
lea ecx, [esp + 0x194]
push ecx
push ebx
push ebx
push 0x8004
push edx
mov byte [esp + 0x2b4], 1
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
je 0x40ff13
push ebx
lea ecx, [esp + 0x2c]
call fcn.00402e60
mov eax, dword [esp + 0x1c]
mov byte [esp + 0x2a0], 2
cmp eax, ebx
jne 0x40fd3b
mov eax, 0x4375d0
push eax
lea ecx, [esp + 0x2c]
call fcn.00403110
test eax, eax
je 0x40feed
mov eax, dword [esp + 0x1c]
cmp eax, ebx
jne 0x40fd5a
mov eax, 0x4375d0
push ebx
push eax
lea ecx, [esp + 0x30]
call fcn.00403300
test eax, eax
je 0x40feed
push ebp
push esi
lea ecx, [esp + 0x30]
call fcn.004035d0
mov dword [esp + 0x14], eax
xor ebp, ebp
mov esi, 0x1000
cmp ebp, eax
jae 0x40fdf2
mov ecx, esi
and ecx, 0xffff
add ecx, ebp
cmp ecx, eax
jbe 0x40fd99
mov esi, eax
sub esi, ebp
and esi, 0xffff
push ebp
push esi
lea ecx, [esp + 0x38]
call fcn.00403c10
lea ecx, [esp + 0x30]
mov ebx, eax
call fcn.00403c00
mov edx, dword [esp + 0x19c]
mov esi, eax
mov edi, esi
push 0
and edi, 0xffff
push edi
push ebx
push edx
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
lea ecx, [esp + 0x30]
mov ebx, eax
call fcn.00403ca0
test ebx, ebx
je 0x40fdea
mov eax, dword [esp + 0x14]
add ebp, edi
xor ebx, ebx
jmp 0x40fd83
mov eax, dword [esp + 0x14]
xor ebx, ebx
cmp ebp, eax
jne 0x40fed9
mov edx, dword [esp + 0x19c]
lea eax, [esp + 0x18]
push ebx
lea ecx, [esp + 0x1a4]
push eax
push ecx
push 2
push edx
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
je 0x40fed9
mov ecx, dword [esp + 0x18]
lea eax, [esp + 0x60]
push eax
lea edx, [esp + 0x1a4]
push ecx
push edx
call fcn.00403f30
lea edi, [esp + 0x6c]
or ecx, 0xffffffff
xor eax, eax
add esp, 0xc
repne scasb al, byte es:[edi]
mov ebp, dword [esp + 0x2b4]
not ecx
dec ecx
mov ebx, ecx
mov ecx, ebp
call fcn.004028b0
cmp eax, ebx
jae 0x40fe5f
call fcn.00424090
mov ecx, dword [ebp + 4]
test ecx, ecx
je 0x40fe84
mov al, byte [ecx - 1]
test al, al
je 0x40fe84
cmp al, 0xff
je 0x40fe84
test ebx, ebx
jne 0x40fea8
dec al
push ebx
mov byte [ecx - 1], al
mov ecx, ebp
call fcn.00401d50
jmp 0x40fecf
test ebx, ebx
jne 0x40fe93
push 1
mov ecx, ebp
call fcn.00401d50
jmp 0x40fecf
mov eax, dword [ebp + 0xc]
cmp eax, 0x1f
ja 0x40fe9f
cmp eax, ebx
jae 0x40feb0
push 1
mov ecx, ebp
call fcn.00401d50
push ebx
mov ecx, ebp
call fcn.004028c0
mov edi, dword [ebp + 4]
mov ecx, ebx
mov eax, ecx
lea esi, [esp + 0x60]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, ebp
call fcn.00402200
mov dword [esp + 0x1c], 1
xor ebx, ebx
lea ecx, [esp + 0x30]
call fcn.00403ca0
lea ecx, [esp + 0x30]
call fcn.004034e0
pop esi
pop ebp
mov ecx, dword [esp + 0x194]
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
lea ecx, [esp + 0x28]
mov dword [esp + 0x194], ebx
mov byte [esp + 0x2a0], 1
call fcn.00403070
mov eax, dword [esp + 0x1c]
cmp eax, ebx
je 0x40ff38
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x40ff2f
cmp al, 0xff
je 0x40ff2f
dec al
mov byte [ecx], al
jmp 0x40ff38
push ecx
call fcn.0042912a
add esp, 4
lea ecx, [esp + 0x8c]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], ebx
mov dword [esp + 0x2a0], 0xffffffff
call fcn.00403f00
mov ecx, dword [esp + 0x298]
mov eax, dword [esp + 0x14]
pop edi
pop ebx
mov dword fs:[0], ecx
add esp, 0x29c
ret