Function at 0x1049c83
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 [0x10d0640]
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 0x1049cdd
cmp dword [ebp + 8], 0x20
je 0x1049cdd
cmp dword [ebp + 8], 0x40
je 0x1049cdd
mov edi, 0x8000ffff
push edi
push 0xe2013e
jmp 0x104a0d0
cmp eax, ebx
je 0x104a0c5
cmp esi, ebx
je 0x104a0c5
push 0xffffffffffffffff
push eax
lea eax, [ebp - 0x4c]
push eax
call fcn.01092a2b
test eax, eax
jne 0x1049d0f
mov eax, 0x8007000e
push eax
mov edi, eax
push 0xec013e
jmp 0x104a0d0
push 0xffffffffffffffff
push esi
lea eax, [ebp - 0x50]
push eax
call fcn.01092a2b
test eax, eax
jne 0x1049d31
mov eax, 0x8007000e
push eax
mov edi, eax
push 0xf1013e
jmp 0x104a0d0
mov eax, dword [ebp - 0x4c]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x1049d37
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 0x1049d48
sub eax, edi
lea esi, [eax + esi + 1]
mov dword [ebp - 0x60], esi
cmp esi, 0x10000
jb 0x1049d70
mov edi, 0x80070216
push edi
push 0xf9013e
jmp 0x104a0d0
push esi
push ebx
call dword [sym.imp.KERNEL32.dll_LocalAlloc]
mov edi, eax
mov dword [ebp - 0x58], edi
cmp edi, ebx
jne 0x1049d93
mov eax, 0x8007000e
push eax
mov edi, eax
push 0xff013e
jmp 0x104a0d0
push dword [ebp - 0x4c]
push esi
push edi
call fcn.0103e767
push dword [ebp - 0x50]
push esi
push edi
call fcn.010493b3
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 0x1049ddb
call fcn.01091f1e
mov edi, eax
push edi
push 0x10c013e
jmp 0x104a0d0
push ebx
dec esi
push esi
push edi
push dword [ebp - 0x54]
call dword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
jne 0x1049dfe
call fcn.01091f1e
mov edi, eax
push edi
push 0x114013e
jmp 0x104a0d0
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 0x1049e2f
call fcn.01091f1e
mov edi, eax
push edi
push 0x11d013e
jmp 0x104a0d0
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.010467c2
mov edi, eax
cmp edi, ebx
je 0x1049e57
push edi
push 0x128013e
jmp 0x104a0d0
mov eax, dword [ebp + 8]
mov esi, dword [ebp - 0x5c]
mov dword [esi], eax
cmp eax, 0x20
jne 0x1049f18
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 0x1049ec2
call fcn.01091f1e
mov edi, eax
push edi
push 0x14f013e
jmp 0x104a0d0
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 0x1049ef0
call fcn.01091f1e
mov edi, eax
push edi
push 0x15b013e
jmp 0x104a0d0
push ebx
lea eax, [ebp - 0x64]
push eax
push 4
push dword [esi]
mov dword [ebp - 0x64], 1
call edi
test eax, eax
jne 0x1049f79
call fcn.01091f1e
mov edi, eax
push edi
push 0x164013e
jmp 0x104a0d0
cmp dword [0x10d22a4], ebx
je 0x1049f55
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 0x100b1c8
call fcn.0109c1c3
add esp, 0x24
push 0x40
lea eax, [ebp - 0x18]
push eax
add esi, 8
push esi
call fcn.010bde50
mov edi, eax
cmp edi, ebx
je 0x104a06c
push edi
push 0x17a013e
jmp 0x104a0d0
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 0x1049fa3
call fcn.01091f1e
mov edi, eax
push edi
push 0x18a013e
jmp 0x104a0d0
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 0x1049fcd
call fcn.01091f1e
mov edi, eax
push edi
push 0x191013e
jmp 0x104a0d0
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 0x1049ff3
call fcn.01091f1e
mov edi, eax
push edi
push 0x19b013e
jmp 0x104a0d0
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 0x104a01d
call fcn.01091f1e
mov edi, eax
push edi
push 0x1a1013e
jmp 0x104a0d0
push dword [ebp + 0x18]
lea eax, [ebp - 0x18]
push dword [ebp - 0x48]
push eax
push 0x64
push dword [ebp + 0xc]
push 0x20
call fcn.010467c2
mov edi, eax
cmp edi, ebx
je 0x104a044
push edi
push 0x1a5013e
jmp 0x104a0d0
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 0x104a0c1
call fcn.01091f1e
mov edi, eax
push edi
push 0x1ae013e
jmp 0x104a0d0
cmp dword [0x10d22a4], ebx
je 0x104a0a9
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 0x100b148
call fcn.0109c1c3
add esp, 0x24
lea eax, [ebp - 0x10]
push eax
push esi
call fcn.010bc7a0
mov edi, eax
cmp edi, ebx
je 0x104a0c1
push edi
push 0x1c6013e
jmp 0x104a0d0
xor edi, edi
jmp 0x104a0d5
mov edi, 0x80004003
push edi
push 0xe7013e
call fcn.0108c503
mov ecx, dword [ebp - 0x48]
lea eax, [ebp - 0x18]
cmp ecx, ebx
je 0x104a0e5
mov byte [eax], bl
inc eax
dec ecx
jne 0x104a0df
push 0x1c
pop ecx
lea eax, [ebp - 0x3c]
mov byte [eax], bl
inc eax
dec ecx
jne 0x104a0eb
mov esi, dword [sym.imp.KERNEL32.dll_LocalFree]
cmp dword [ebp - 0x4c], ebx
je 0x104a109
push dword [ebp - 0x4c]
call fcn.010912ad
push dword [ebp - 0x4c]
call esi
cmp dword [ebp - 0x50], ebx
je 0x104a113
push dword [ebp - 0x50]
call esi
mov eax, dword [ebp - 0x58]
cmp eax, ebx
je 0x104a12c
mov ecx, dword [ebp - 0x60]
cmp ecx, ebx
je 0x104a127
mov byte [eax], bl
inc eax
dec ecx
jne 0x104a121
push dword [ebp - 0x58]
call esi
mov esi, dword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
cmp dword [ebp - 0x54], ebx
je 0x104a13c
push dword [ebp - 0x54]
call esi
cmp dword [ebp - 0x44], ebx
je 0x104a146
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.01077d0b
leave
ret 0x18