Function at 0x402ad0
Capabilities:
Hash data using sha1
Hash data using sha256

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
mov ebx, ecx
push esi
push edi
mov edi, edx
mov dword [ebx], edi
mov eax, dword [edi]
lea ecx, [ebx + 0xf8]
mov ax, word [eax]
mov word [ebx + 8], ax
mov dword [ebx + 0xc], 0
mov dword [ebx + 0x2d0], 0
mov dword [ebx + 0x2d8], 0
mov dword [ebx + 0x2e0], 0
mov dword [ebx + 0x30c], 0
mov dword [ebx + 0x310], 0
mov dword [ebx + 0x318], 1
mov word [ebx + 0x31d], 0
mov dword [ebx + 0x320], 0
mov dword [ebx + 0x324], 0
mov dword [ebx + 0x32c], 1
mov word [ebx + 0x331], 0
mov dword [ebx + 0x308], 0
mov dword [ebx + 0x2e8], 0
mov dword [ebx + 0x2f0], 0
mov dword [ebx + 0x2f8], 0
mov dword [ebx + 0x300], 0
mov dword [ebx + 0x338], 0
mov dword [ebx + 0x334], 0
mov dword [ebx + 0x33c], 0
mov dword [ebx + 0x340], 0
mov dword [ebx + 0x724], 0
mov dword [ebx + 0x728], 0
mov dword [ebx + 0x72c], 0
lea eax, [ebx + 0x31c]
mov dword [ebx + 0x314], eax
lea eax, [ebx + 0x330]
mov dword [ebx + 0x328], eax
mov eax, dword [edi + 0x160]
mov dword [ebx + 0x3ec], eax
mov dword [ecx], 0xffffffff
mov dword [ebx + 0xfc], 0xffffffff
mov dword [ebx + 0x100], 0
mov dword [ebx + 0x104], 0
mov dword [ebx + 0x108], 0
mov dword [ebx + 0x10c], 0
mov dword [ebx + 0x110], ecx
lea eax, [ebx + 0xfc]
mov dword [ebx + 0x114], eax
mov dword [ebx + 0x188], 0x67452301
mov dword [ebx + 0x18c], 0xefcdab89
mov dword [ebx + 0x190], 0x98badcfe
mov dword [ebx + 0x194], 0x10325476
mov dword [ebx + 0x17c], 0
mov dword [ebx + 0x180], 0
mov dword [ebx + 0x184], 0
mov dword [ebx + 0x128], 0x67452301
mov dword [ebx + 0x12c], 0xefcdab89
mov dword [ebx + 0x130], 0x98badcfe
mov dword [ebx + 0x134], 0x10325476
mov dword [ebx + 0x138], 0xc3d2e1f0
mov dword [ebx + 0x11c], 0
mov dword [ebx + 0x120], 0
mov dword [ebx + 0x124], 0
mov dword [ebx + 0x1e4], 0x6a09e667
mov dword [ebx + 0x1e8], 0xbb67ae85
mov dword [ebx + 0x1ec], 0x3c6ef372
mov dword [ebx + 0x1f0], 0xa54ff53a
mov dword [ebx + 0x1f4], 0x510e527f
mov dword [ebx + 0x1f8], 0x9b05688c
mov dword [ebx + 0x1fc], 0x1f83d9ab
mov dword [ebx + 0x200], 0x5be0cd19
mov dword [ebx + 0x1d8], 0
mov dword [ebx + 0x1dc], 0
mov dword [ebx + 0x1e0], 0
mov dword [ebx + 0x3d4], 0
mov byte [ebx + 0x3d8], 0
mov eax, dword [edi + 0x15c]
mov dword [ebx + 0x3d0], eax
mov eax, dword [edi]
mov dword [ebp - 4], edi
movzx eax, byte [eax + 2]
mov byte [ebx + 0x34f], al
mov eax, dword [edi]
mov cl, byte [ebx + 0x34f]
movzx eax, byte [eax + 3]
mov byte [ebx + 0x353], al
mov dword [ebx + 4], 0
mov dword [ebx + 0x35a], 0
mov byte [ebx + 0x360], 0
test cl, cl
jne 0x402db1
mov al, byte [edi + 0x14b]
mov byte [ebx + 0x362], al
jmp 0x402db8
mov byte [ebx + 0x362], 0
movzx eax, byte [edi + 0x14c]
mov byte [ebx + 0x363], al
movzx eax, byte [edi + 0x14d]
mov byte [ebx + 0x364], al
movzx eax, byte [edi + 0x14e]
mov byte [ebx + 0x365], al
mov dword [ebx + 0x366], 0
mov word [ebx + 0x34c], 0
mov word [ebx + 0x35e], 0
mov byte [ebx + 0x34e], 0
mov byte [ebx + 0x36a], 0
mov dword [ebx + 0xf0], 0
mov word [ebx + 0xf4], 0
movzx eax, byte [edi + 0x147]
mov byte [ebx + 0x348], al
movzx eax, byte [edi + 0x148]
mov byte [ebx + 0x349], al
movzx eax, byte [edi + 0x144]
cmp byte [ebx + 8], 0xfe
mov byte [ebx + 0x350], al
movzx eax, byte [edi + 0x145]
mov byte [ebx + 0x351], al
movzx eax, byte [edi + 0x146]
mov byte [ebx + 0x352], al
movzx eax, byte [edi + 0x149]
mov byte [ebx + 0x354], al
mov word [ebx + 0x355], 0
mov dword [ebx + 0x3dc], 0x405aa0
mov eax, dword [edi + 0x140]
mov dword [ebx + 0x3e0], eax
mov word [ebx + 0x357], 0
sete al
mov byte [ebx + 0x359], al
movzx eax, byte [edi + 0x14f]
mov byte [ebx + 0x36b], al
movzx eax, byte [edi + 0x150]
mov byte [ebx + 0x36c], al
mov byte [ebx + 0x36d], 0
movzx eax, byte [edi + 0x151]
mov byte [ebx + 0x36e], al
mov word [ebx + 0x36f], 0
mov eax, dword [edi + 0x20]
mov dword [ebx + 0x2cc], eax
mov eax, dword [edi + 0x24]
mov dword [ebx + 0x2d0], eax
mov eax, dword [edi + 0x28]
mov dword [ebx + 0x2dc], eax
mov eax, dword [edi + 0x2c]
mov dword [ebx + 0x2e0], eax
mov eax, dword [edi + 0x30]
mov dword [ebx + 0x2d4], eax
mov eax, dword [edi + 0x34]
mov dword [ebx + 0x2d8], eax
test cl, cl
jne 0x402f34
mov eax, dword [edi + 0x38]
mov dword [ebx + 0x2e4], eax
mov eax, dword [edi + 0x3c]
mov dword [ebx + 0x2e8], eax
mov eax, dword [edi + 0x40]
mov dword [ebx + 0x2ec], eax
mov eax, dword [edi + 0x44]
mov dword [ebx + 0x2f0], eax
mov word [ebx + 0x344], 0
mov byte [ebx + 0x346], 0
mov dword [ebx + 0x4f4], 0
mov dword [ebx + 0x5f8], 0
mov dword [ebx + 0x3f0], ebx
mov dword [ebx + 0x118], 0
mov dword [ebx + 0x374], 0
mov dword [ebx + 0x730], 0xffffffff
mov dword [ebx + 0x734], 0xffffffff
mov dword [ebx + 0x738], 0xffffffff
mov dword [ebx + 0x73c], 0xffffffff
mov dword [ebx + 0x10], 0
mov dword [ebx + 0x24], 0
mov dword [ebx + 0x14], 0
mov dword [ebx + 0x28], 0
mov dword [ebx + 0x18], 0
mov dword [ebx + 0x2c], 0
mov dword [ebx + 0x1c], 0
mov dword [ebx + 0x30], 0
mov byte [ebx + 0x20], 0
mov byte [ebx + 0x34], 0
xor eax, eax
lea esi, [edi + 4]
push esi
mov dword [ebx + 0x38], 0xffffffff
mov word [ebx + 0x3c], 0xff
mov byte [ebx + 0x3f], 0
mov dword [ebx + 0x40], eax
mov word [ebx + 0x44], ax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
inc dword [edi + 0x1c]
push esi
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov esi, dword [0x44f804]
push 0x294
test esi, esi
je 0x403021
call esi
mov esi, dword [0x44f804]
jmp 0x403026
call fcn.0041be80
add esp, 4
mov dword [ebx + 0x374], eax
test eax, eax
jne 0x40303f
pop edi
pop esi
mov eax, 0xffffff83
pop ebx
mov esp, ebp
pop ebp
ret
push 0x108
test esi, esi
je 0x40304c
call esi
jmp 0x403051
call fcn.0041be80
add esp, 4
mov dword [ebx + 0x118], eax
test eax, eax
je 0x403033
mov ecx, eax
call fcn.00418b30
test eax, eax
jne 0x403131
mov eax, dword [0x44f804]
push 0xf4
test eax, eax
je 0x40307f
call eax
jmp 0x403084
call fcn.0041be80
add esp, 4
mov dword [ebx + 0xc], eax
test eax, eax
je 0x403033
lea esi, [edi + 0x4c]
mov edi, eax
mov ecx, 0x3d
rep movsd dword es:[edi], dword [esi]
mov ecx, 0x88
call fcn.00409ea0
mov dword [ebx + 0x3d4], eax
test eax, eax
je 0x403033
mov edx, dword [ebp - 4]
mov ecx, eax
mov edx, dword [edx + 0x140]
call fcn.00412db0
mov al, byte [ebx + 0x34f]
test al, al
jne 0x403107
cmp dword [ebx + 0x2d0], 0
je 0x4030da
cmp dword [ebx + 0x2d8], 0
jne 0x4030e6
pop edi
pop esi
mov eax, 0xffffff27
pop ebx
mov esp, ebp
pop ebp
ret
test al, al
jne 0x403107
movzx eax, byte [ebx + 0x365]
push 0
push eax
movzx eax, byte [ebx + 0x364]
push eax
movzx eax, byte [ebx + 0x362]
push ecx
push eax
jmp 0x40311e
movzx eax, al
push eax
movzx eax, byte [ebx + 0x365]
push eax
movzx eax, byte [ebx + 0x364]
push eax
push ecx
push 1
movzx eax, word [ebx + 8]
push ecx
mov ecx, dword [ebx + 0xc]
push eax
call fcn.004028d0
add esp, 0x1c
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret