Function at 0x1049595
Capabilities:
Hash data using sha1
Hash data using sha1 via wincrypt
Hash data via wincrypt
Hash data with md5
Initialize hashing via wincrypt

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x64
mov eax, dword [0x10cd598]
xor eax, ebp
mov dword [ebp - 4], eax
mov ecx, dword [ebp + 0x1c]
mov eax, dword [ebp + 0x10]
push ebx
xor ebx, ebx
cmp dword [ebp + 8], 0x10
push esi
mov esi, dword [ebp + 0x14]
push edi
mov dword [ebp - 0x5c], ecx
mov dword [ebp - 0x4c], ebx
mov dword [ebp - 0x50], ebx
mov dword [ebp - 0x54], ebx
mov dword [ebp - 0x44], ebx
mov dword [ebp - 0x60], ebx
mov dword [ebp - 0x58], ebx
mov dword [ebp - 0x48], ebx
je 0x10495ef
cmp dword [ebp + 8], 0x20
je 0x10495ef
cmp dword [ebp + 8], 0x40
je 0x10495ef
mov edi, 0x8000ffff
push edi
push 0xe2013e
jmp 0x10499e2
cmp eax, ebx
je 0x10499d7
cmp esi, ebx
je 0x10499d7
push 0xffffffffffffffff
push eax
lea eax, [ebp - 0x4c]
push eax
call fcn.0108f8d0
test eax, eax
jne 0x1049621
mov eax, 0x8007000e
push eax
mov edi, eax
push 0xec013e
jmp 0x10499e2
push 0xffffffffffffffff
push esi
lea eax, [ebp - 0x50]
push eax
call fcn.0108f8d0
test eax, eax
jne 0x1049643
mov eax, 0x8007000e
push eax
mov edi, eax
push 0xf1013e
jmp 0x10499e2
mov eax, dword [ebp - 0x4c]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x1049649
sub eax, edx
mov esi, eax
mov eax, dword [ebp - 0x50]
lea edi, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x104965a
sub eax, edi
lea esi, [eax + esi + 1]
mov dword [ebp - 0x60], esi
cmp esi, 0x10000
jb 0x1049682
mov edi, 0x80070216
push edi
push 0xf9013e
jmp 0x10499e2
push esi
push ebx
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
mov edi, eax
mov dword [ebp - 0x58], edi
cmp edi, ebx
jne 0x10496a5
mov eax, 0x8007000e
push eax
mov edi, eax
push 0xff013e
jmp 0x10499e2
push dword [ebp - 0x4c]
push esi
push edi
call fcn.0103e0a2
push dword [ebp - 0x50]
push esi
push edi
call fcn.01048cc5
lea eax, [ebp - 0x54]
push eax
xor eax, eax
cmp dword [ebp + 8], 0x10
push ebx
setne al
push ebx
add eax, 0x8003
push eax
push dword [ebp + 0xc]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x10496ed
call fcn.0108edc3
mov edi, eax
push edi
push 0x10c013e
jmp 0x10499e2
push ebx
dec esi
push esi
push edi
push dword [ebp - 0x54]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
jne 0x1049710
call fcn.0108edc3
mov edi, eax
push edi
push 0x114013e
jmp 0x10499e2
push ebx
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x18]
push eax
push 2
push dword [ebp - 0x54]
mov dword [ebp - 0x48], 0x14
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
jne 0x1049741
call fcn.0108edc3
mov edi, eax
push edi
push 0x11d013e
jmp 0x10499e2
push dword [ebp + 0x18]
lea eax, [ebp - 0x18]
push dword [ebp - 0x48]
push eax
push 0x64
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.010460dd
mov edi, eax
cmp edi, ebx
je 0x1049769
push edi
push 0x128013e
jmp 0x10499e2
mov eax, dword [ebp + 8]
mov esi, dword [ebp - 0x5c]
mov dword [esi], eax
cmp eax, 0x20
jne 0x104982a
xor eax, eax
mov word [ebp - 0x3a], ax
mov eax, dword [ebp - 8]
mov byte [ebp - 0x3c], 8
mov byte [ebp - 0x3b], 2
mov dword [ebp - 0x38], 0x6602
mov dword [ebp - 0x34], 0x10
lea esi, [ebp - 0x18]
lea edi, [ebp - 0x30]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, dword [ebp - 0x5c]
add esi, 4
push esi
push ebx
push ebx
mov dword [ebp - 0x20], eax
push 0x1c
lea eax, [ebp - 0x3c]
push eax
push dword [ebp + 0xc]
call dword [sym.imp.ADVAPI32.dll_CryptImportKey]
test eax, eax
jne 0x10497d4
call fcn.0108edc3
mov edi, eax
push edi
push 0x14f013e
jmp 0x10499e2
mov edi, dword [sym.imp.ADVAPI32.dll_CryptSetKeyParam]
push ebx
lea eax, [ebp - 0x5c]
push eax
push 0x13
push dword [esi]
mov dword [ebp - 0x5c], 0x80
call edi
test eax, eax
jne 0x1049802
call fcn.0108edc3
mov edi, eax
push edi
push 0x15b013e
jmp 0x10499e2
push ebx
lea eax, [ebp - 0x64]
push eax
push 4
push dword [esi]
mov dword [ebp - 0x64], 1
call edi
test eax, eax
jne 0x104988b
call fcn.0108edc3
mov edi, eax
push edi
push 0x164013e
jmp 0x10499e2
cmp dword [0x10cf1f4], ebx
je 0x1049867
movzx eax, byte [ebp - 0x11]
push eax
movzx eax, byte [ebp - 0x12]
push eax
movzx eax, byte [ebp - 0x13]
push eax
movzx eax, byte [ebp - 0x14]
push eax
movzx eax, byte [ebp - 0x15]
push eax
movzx eax, byte [ebp - 0x16]
push eax
movzx eax, byte [ebp - 0x17]
push eax
movzx eax, byte [ebp - 0x18]
push eax
push 0x100b0e0
call fcn.01099014
add esp, 0x24
push 0x40
lea eax, [ebp - 0x18]
push eax
add esi, 8
push esi
call fcn.010bac70
mov edi, eax
cmp edi, ebx
je 0x104997e
push edi
push 0x17a013e
jmp 0x10499e2
lea eax, [ebp - 0x44]
push eax
push ebx
push ebx
push 0x8004
push dword [ebp + 0xc]
call dword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x10498b5
call fcn.0108edc3
mov edi, eax
push edi
push 0x18a013e
jmp 0x10499e2
mov eax, dword [ebp - 0x60]
mov edi, dword [sym.imp.ADVAPI32.dll_CryptHashData]
push ebx
dec eax
push eax
push dword [ebp - 0x58]
push dword [ebp - 0x44]
call edi
test eax, eax
jne 0x10498df
call fcn.0108edc3
mov edi, eax
push edi
push 0x191013e
jmp 0x10499e2
push ebx
push 1
lea eax, [ebp - 0x3d]
push eax
push dword [ebp - 0x44]
mov byte [ebp - 0x3d], 1
call edi
test eax, eax
jne 0x1049905
call fcn.0108edc3
mov edi, eax
push edi
push 0x19b013e
jmp 0x10499e2
push ebx
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp - 0x18]
push eax
push 2
push dword [ebp - 0x44]
call dword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
jne 0x104992f
call fcn.0108edc3
mov edi, eax
push edi
push 0x1a1013e
jmp 0x10499e2
push dword [ebp + 0x18]
lea eax, [ebp - 0x18]
push dword [ebp - 0x48]
push eax
push 0x64
push dword [ebp + 0xc]
push 0x20
call fcn.010460dd
mov edi, eax
cmp edi, ebx
je 0x1049956
push edi
push 0x1a5013e
jmp 0x10499e2
mov eax, dword [ebp - 0x18]
push ebx
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0x20]
push eax
push 1
push dword [esi]
call dword [sym.imp.ADVAPI32.dll_CryptSetKeyParam]
test eax, eax
jne 0x10499d3
call fcn.0108edc3
mov edi, eax
push edi
push 0x1ae013e
jmp 0x10499e2
cmp dword [0x10cf1f4], ebx
je 0x10499bb
movzx eax, byte [ebp - 9]
push eax
movzx eax, byte [ebp - 0xa]
push eax
movzx eax, byte [ebp - 0xb]
push eax
movzx eax, byte [ebp - 0xc]
push eax
movzx eax, byte [ebp - 0xd]
push eax
movzx eax, byte [ebp - 0xe]
push eax
movzx eax, byte [ebp - 0xf]
push eax
movzx eax, byte [ebp - 0x10]
push eax
push 0x100b060
call fcn.01099014
add esp, 0x24
lea eax, [ebp - 0x10]
push eax
push esi
call fcn.010b95b0
mov edi, eax
cmp edi, ebx
je 0x10499d3
push edi
push 0x1c6013e
jmp 0x10499e2
xor edi, edi
jmp 0x10499e7
mov edi, 0x80004003
push edi
push 0xe7013e
call fcn.010893e6
mov ecx, dword [ebp - 0x48]
lea eax, [ebp - 0x18]
cmp ecx, ebx
je 0x10499f7
mov byte [eax], bl
inc eax
dec ecx
jne 0x10499f1
push 0x1c
pop ecx
lea eax, [ebp - 0x3c]
mov byte [eax], bl
inc eax
dec ecx
jne 0x10499fd
mov esi, dword [sym.imp.KERNEL32.dll_LocalFree]
cmp dword [ebp - 0x4c], ebx
je 0x1049a1b
push dword [ebp - 0x4c]
call fcn.0108e15e
push dword [ebp - 0x4c]
call esi
cmp dword [ebp - 0x50], ebx
je 0x1049a25
push dword [ebp - 0x50]
call esi
mov eax, dword [ebp - 0x58]
cmp eax, ebx
je 0x1049a3e
mov ecx, dword [ebp - 0x60]
cmp ecx, ebx
je 0x1049a39
mov byte [eax], bl
inc eax
dec ecx
jne 0x1049a33
push dword [ebp - 0x58]
call esi
mov esi, dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
cmp dword [ebp - 0x54], ebx
je 0x1049a4e
push dword [ebp - 0x54]
call esi
cmp dword [ebp - 0x44], ebx
je 0x1049a58
push dword [ebp - 0x44]
call esi
mov ecx, dword [ebp - 4]
mov eax, edi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.01074bd5
leave
ret 0x18