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

Disassembly:
sub esp, 0x78
mov eax, dword [0x5b7a9c]
xor eax, esp
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x7c]
push ebx
push ebp
push esi
push edi
xor edi, edi
mov esi, ecx
mov ecx, dword [esp + 0x94]
xor edx, edx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x24], edi
mov byte [esp + 0x18], 6
mov byte [esp + 0x19], 2
mov word [esp + 0x1a], dx
cmp dword [esp + 0x9c], edi
je 0x43a1b2
mov eax, dword [0x5ec710]
mov ebx, dword [esi + 0x34]
mov dword [esp + 0x20], eax
mov eax, dword [esi + 0x30]
lea ecx, [ebx*8]
mov dword [esp + 0x1c], 0x2400
mov dword [esp + 0x48], 0x31415352
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x50], edi
cmp eax, 4
jbe 0x43a18f
mov eax, 4
mov edx, dword [esi + 0x28]
push eax
push edx
lea eax, [esp + 0x58]
push eax
call fcn.005402a0
mov ebp, dword [esp + 0x40]
add esp, 0xc
add ebx, 0x14
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x4c]
jmp 0x43a1fe
mov ebx, dword [esi + 0x18]
mov ecx, dword [0x5ec70c]
add ebx, ebx
add ebx, ebx
add ebx, ebx
xor ebp, ebp
mov eax, ebx
shr eax, 3
add eax, 0x14
lea edx, [eax + eax*2]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], 0x2200
mov dword [esp + 0x48], 0x31535344
mov dword [esp + 0x30], 0xffffffff
mov dword [esp + 0x38], ebp
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x40], ebp
mov dword [esp + 0x44], ebp
mov dword [esp + 0x10], edx
cmp dword [esp + 0x20], edi
jne 0x43a21b
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x74]
xor ecx, esp
call fcn.0053fa67
add esp, 0x78
ret 0x14
mov eax, dword [esp + 0x10]
push eax
call fcn.004ff272
mov ecx, dword [esp + 0x14]
push ecx
mov edi, eax
push 0
push edi
call fcn.00540610
add esp, 0x10
cmp dword [esp + 0x9c], 0
je 0x43a27c
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x48]
mov dword [edi], edx
mov edx, dword [esp + 0x4c]
mov dword [edi + 4], eax
mov eax, dword [esp + 0x50]
mov dword [edi + 8], ecx
mov dword [edi + 0xc], edx
mov dword [edi + 0x10], eax
mov ecx, dword [esi + 0x34]
mov edx, dword [esi + 0x2c]
push ecx
push edx
lea eax, [edi + 0x14]
push eax
call fcn.005402a0
add esp, 0xc
jmp 0x43a313
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x48]
mov dword [edi], ecx
mov dword [edi + 4], edx
mov dword [edi + 8], eax
mov dword [edi + 0xc], ebx
mov ecx, dword [esi + 0x18]
mov edx, dword [esi + 8]
push ecx
push edx
lea eax, [edi + 0x10]
push eax
call fcn.005402a0
mov ebx, dword [esi + 0x18]
mov ecx, dword [esi + 0x1c]
mov edx, dword [esi + 0xc]
push ecx
add ebx, 0x10
push edx
lea eax, [ebx + edi]
push eax
call fcn.005402a0
mov ecx, dword [esi + 0x20]
mov edx, dword [esi + 0x10]
push ecx
add ebx, 0x14
push edx
lea eax, [ebx + edi]
push eax
call fcn.005402a0
mov ecx, dword [esi + 0x24]
add ebx, dword [esi + 0x18]
mov edx, dword [esi + 0x14]
push ecx
push edx
lea eax, [ebx + edi]
push eax
call fcn.005402a0
mov esi, dword [esi + 0x18]
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x68]
mov eax, dword [esp + 0x6c]
add esi, ebx
mov dword [esi + edi], ecx
mov ecx, dword [esp + 0x70]
add esp, 0x30
add esi, edi
mov dword [esi + 4], ebp
mov dword [esi + 8], edx
mov edx, dword [esp + 0x44]
mov dword [esi + 0xc], eax
mov dword [esi + 0x10], ecx
mov dword [esi + 0x14], edx
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 0x20]
lea eax, [esp + 0x14]
push eax
push 0
push 0
push ecx
push edi
push esi
mov dword [esp + 0x2c], 0
call dword [sym.imp.ADVAPI32.dll_CryptImportKey]
test eax, eax
je 0x43a526
lea edx, [esp + 0x10]
push edx
push 0
push 0
push 0x8004
push esi
mov dword [esp + 0x24], 0
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
je 0x43a517
cmp dword [esp + 0x9c], 0
je 0x43a401
mov eax, dword [esp + 0x98]
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x10]
push 0
push eax
push ecx
push edx
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x43a517
mov ebp, dword [esp + 0x28]
push 0xb
push 0x5788fc
push ebp
call fcn.00541f7e
mov esi, dword [esp + 0x9c]
add esp, 0xc
test eax, eax
jne 0x43a3b7
add ebp, 0xf
sub esi, 0xf
push esi
call fcn.004ff272
push esi
mov ebx, eax
push ebp
push ebx
call fcn.005402a0
push esi
push ebx
call fcn.00439540
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x28]
add esp, 0x18
push 0
push 0
push eax
push esi
push ebx
push ecx
call dword [sym.imp.ADVAPI32.dll_CryptVerifySignatureW]
test eax, eax
je 0x43a3f3
mov dword [esp + 0x24], 1
push ebx
call fcn.004ff267
add esp, 4
jmp 0x43a517
mov esi, dword [esp + 0x28]
push 0xb
push 0x5788f0
push esi
call fcn.00541f7e
add esp, 0xc
test eax, eax
jne 0x43a41c
add esi, 0xf
mov eax, dword [esi + 4]
mov edx, dword [esi]
mov ecx, dword [esi + 8]
mov dword [esp + 0x4c], eax
mov eax, dword [esi + 0x10]
mov dword [esp + 0x48], edx
mov edx, dword [esi + 0xc]
mov dword [esp + 0x58], eax
mov eax, dword [esi + 0x1c]
mov dword [esp + 0x50], ecx
mov ecx, dword [esi + 0x14]
mov dword [esp + 0x54], edx
mov edx, dword [esi + 0x18]
mov dword [esp + 0x38], eax
mov dword [esp + 0x30], ecx
mov ecx, dword [esi + 0x20]
mov dword [esp + 0x34], edx
mov edx, dword [esi + 0x24]
lea eax, [esp + 0x48]
push 0x14
push eax
mov dword [esp + 0x44], ecx
mov dword [esp + 0x48], edx
call fcn.00439540
lea ecx, [esp + 0x38]
push 0x14
push ecx
call fcn.00439540
mov eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x58]
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x6c], edx
mov edx, dword [esp + 0x64]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x40]
add esp, 0x10
mov dword [esp + 0x68], edx
mov edx, dword [esp + 0x34]
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x38]
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x3c]
push 0
mov dword [esp + 0x78], edx
mov edx, dword [esp + 0x44]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x80], ecx
mov ecx, dword [esp + 0x30]
push eax
mov dword [esp + 0x88], edx
mov edx, dword [esp + 0x18]
push ecx
push edx
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x43a517
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x10]
push 0
push 0
push eax
push 0x28
lea ecx, [esp + 0x6c]
push ecx
push edx
call dword [sym.imp.ADVAPI32.dll_CryptVerifySignatureW]
test eax, eax
je 0x43a517
mov dword [esp + 0x24], 1
mov eax, dword [esp + 0x10]
test eax, eax
je 0x43a526
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
push edi
call fcn.004ff267
mov eax, dword [esp + 0x18]
add esp, 4
test eax, eax
je 0x43a53e
push eax
call dword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
mov ecx, dword [esp + 0x84]
mov eax, dword [esp + 0x24]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0053fa67
add esp, 0x78
ret 0x14