Function at 0x4d0f80
Capabilities:
Hash data using sha256

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x20c0
call fcn.00520bc0
mov eax, dword [0x5a9008]
xor eax, ebp
mov dword [ebp - 8], eax
mov edx, dword [ebp + 0xc]
push ebx
mov ebx, dword [ebp + 0x10]
push esi
push edi
mov edi, dword [ebp + 8]
mov dword [ebp - 0x20b8], ecx
mov dword [ebp - 0x20c0], ebx
mov eax, dword [edi + 0x18]
sub eax, edx
cmp eax, dword [edi + 0x1c]
jb 0x4d1b05
mov dword [edi + 0x1c], eax
cmp edx, 2
jb 0x4d1b05
nop dword [eax]
mov ecx, edi
call fcn.004e6410
mov ecx, eax
test edx, edx
jl 0x4d1b05
jg 0x4d0feb
test ecx, ecx
je 0x4d1b05
mov eax, dword [edi + 0x18]
mov esi, dword [edi + 0x1c]
sub eax, esi
je 0x4d1b05
test edx, edx
jg 0x4d1b05
jl 0x4d100b
cmp ecx, eax
ja 0x4d1b05
lea eax, [esi + ecx]
mov ecx, edi
mov dword [ebp - 0x20b4], eax
call fcn.004e6410
mov esi, eax
mov eax, edx
mov edx, dword [ebp - 0x20b4]
sub edx, dword [edi + 0x1c]
cmp dword [ebx + 4], 1
mov dword [ebp - 0x20b0], eax
mov dword [ebp - 0x20ac], edx
jne 0x4d10c0
cmp esi, 1
jne 0x4d10c0
test eax, eax
jne 0x4d10c0
mov ecx, edi
mov byte [ebx + 0x1e], 1
call fcn.004e6410
mov dword [ebp - 0x20a0], eax
test al, 1
je 0x4d1089
mov ecx, edi
call fcn.004e6410
mov ecx, eax
or ecx, edx
je 0x4d1083
mov ecx, dword [ebp - 0x20b8]
add eax, dword [ecx + 0x7de8]
mov ecx, dword [ecx + 0x7dec]
adc ecx, edx
mov dword [ebx + 0x20], eax
mov dword [ebx + 0x24], ecx
mov eax, dword [ebp - 0x20a0]
test al, 2
je 0x4d10b4
mov ecx, edi
call fcn.004e6410
mov ecx, eax
or ecx, edx
je 0x4d10b4
mov ecx, dword [ebp - 0x20b8]
add eax, dword [ecx + 0x7de8]
mov ecx, dword [ecx + 0x7dec]
adc ecx, edx
mov dword [ebx + 0x30], eax
mov dword [ebx + 0x34], ecx
mov eax, dword [ebp - 0x20b0]
mov edx, dword [ebp - 0x20ac]
mov ecx, dword [ebx + 4]
cmp ecx, 2
je 0x4d10d1
cmp ecx, 3
jne case.default.0x4d10f0
test eax, eax
ja case.default.0x4d10f0
jb 0x4d10e4
cmp esi, 7
ja case.default.0x4d10f0
lea eax, [esi - 1]
cmp eax, 6
ja case.default.0x4d10f0
jmp dword [eax*4 + 0x4d1b18]
mov ecx, edi
call fcn.004e6410
test eax, eax
je 0x4d1113
push 1
mov ecx, 0x5aa7f8
call fcn.004d3050
jmp case.default.0x4d10f0
mov ecx, edi
lfence
call fcn.004e6410
mov cl, al
shr eax, 1
and al, 1
and cl, 1
mov byte [ebx + 0x10c1], cl
mov byte [ebx + 0x10ca], al
mov eax, dword [edi + 0x1c]
cmp eax, dword [edi + 0x18]
jae 0x4d114d
lfence
mov ecx, dword [edi + 0x1c]
lea eax, [ecx + 1]
mov dword [edi + 0x1c], eax
mov eax, dword [edi]
mov al, byte [ecx + eax]
jmp 0x4d114f
xor al, al
movzx eax, al
mov dword [ebx + 0x10ec], eax
cmp eax, 0x18
jbe 0x4d1169
push 1
mov ecx, 0x5aa7f8
call fcn.004d3050
mov ecx, dword [edi + 0x18]
lea edx, [ebx + 0x10a1]
sub ecx, dword [edi + 0x1c]
mov dword [ebp - 0x20a0], ecx
cmp ecx, 0x10
jae 0x4d1186
test ecx, ecx
je 0x4d11b3
jmp 0x4d118b
mov ecx, 0x10
lfence
mov eax, dword [edi + 0x1c]
mov esi, ecx
add eax, dword [edi]
push ecx
push eax
push edx
call fcn.004f2d40
add esp, 0xc
mov dword [ebp - 0x20a0], esi
mov ecx, esi
cmp esi, 0x10
jae 0x4d11cf
lea edx, [ebx + 0x10a1]
mov eax, 0x10
sub eax, ecx
push eax
lea eax, [ecx + edx]
push 0
push eax
call fcn.004f32c0
mov ecx, dword [ebp - 0x20a0]
add esp, 0xc
add dword [edi + 0x1c], ecx
lea edx, [ebx + 0x10b1]
mov ecx, dword [edi + 0x18]
sub ecx, dword [edi + 0x1c]
mov dword [ebp - 0x20a0], ecx
cmp ecx, 0x10
jae 0x4d11ef
test ecx, ecx
je 0x4d121c
jmp 0x4d11f4
mov ecx, 0x10
lfence
mov eax, dword [edi + 0x1c]
mov esi, ecx
add eax, dword [edi]
push ecx
push eax
push edx
call fcn.004f2d40
add esp, 0xc
mov dword [ebp - 0x20a0], esi
mov ecx, esi
cmp esi, 0x10
jae 0x4d1238
lea edx, [ebx + 0x10b1]
mov eax, 0x10
sub eax, ecx
push eax
lea eax, [edx + ecx]
push 0
push eax
call fcn.004f32c0
mov ecx, dword [ebp - 0x20a0]
add esp, 0xc
mov eax, dword [edi + 0x1c]
add eax, ecx
mov dword [edi + 0x1c], eax
cmp byte [ebx + 0x10c1], 0
je 0x4d13d5
mov ecx, dword [edi + 0x18]
lea edx, [ebx + 0x10c2]
sub ecx, eax
mov dword [ebp - 0x20a0], ecx
cmp ecx, 8
jae 0x4d1269
test ecx, ecx
je 0x4d1296
jmp 0x4d126e
mov ecx, 8
lfence
mov eax, dword [edi + 0x1c]
mov esi, ecx
add eax, dword [edi]
push ecx
push eax
push edx
call fcn.004f2d40
add esp, 0xc
mov dword [ebp - 0x20a0], esi
mov ecx, esi
cmp esi, 8
jae 0x4d12b2
lea edx, [ebx + 0x10c2]
mov eax, 8
sub eax, ecx
push eax
lea eax, [edx + ecx]
push 0
push eax
call fcn.004f32c0
mov ecx, dword [ebp - 0x20a0]
add esp, 0xc
mov eax, dword [edi + 0x1c]
mov esi, dword [edi + 0x18]
add eax, ecx
sub esi, eax
mov dword [ebp - 0x20a0], eax
mov dword [edi + 0x1c], eax
cmp esi, 4
jae 0x4d12d0
test esi, esi
je 0x4d12f6
jmp 0x4d12d5
mov esi, 4
lfence
mov ecx, dword [edi + 0x1c]
mov eax, dword [edi]
add eax, ecx
mov dword [ebp - 0x20a0], ecx
push esi
push eax
lea eax, [ebp - 0x20bc]
push eax
call fcn.004f2d40
add esp, 0xc
cmp esi, 4
jae 0x4d1316
mov eax, 4
sub eax, esi
push eax
lea eax, [ebp - 0x20bc]
add eax, esi
push 0
push eax
call fcn.004f32c0
add esp, 0xc
mov eax, dword [ebp - 0x20a0]
lea edx, [ebx + 0x10c2]
add eax, esi
mov dword [ebp - 0x209c], 0x6a09e667
xorps xmm0, xmm0
mov dword [edi + 0x1c], eax
push 8
lea ecx, [ebp - 0x209c]
mov dword [ebp - 0x2098], 0xbb67ae85
mov dword [ebp - 0x2094], 0x3c6ef372
mov dword [ebp - 0x2090], 0xa54ff53a
mov dword [ebp - 0x208c], 0x510e527f
mov dword [ebp - 0x2088], 0x9b05688c
mov dword [ebp - 0x2084], 0x1f83d9ab
mov dword [ebp - 0x2080], 0x5be0cd19
movlpd qword [ebp - 0x207c], xmm0
call fcn.004e60b0
add esp, 4
lea edx, [ebp - 0x28]
lea ecx, [ebp - 0x209c]
call fcn.004e6120
lea eax, [ebp - 0x20bc]
mov eax, dword [eax]
lea ecx, [ebp - 0x28]
cmp eax, dword [ecx]
sete al
cmp dword [ebx + 4], 3
mov byte [ebx + 0x10c1], al
jne 0x4d13d5
cmp dword [ebx + 0x10c2], 0
jne 0x4d13d5
cmp dword [ebx + 0x10c6], 0
jne 0x4d13d5
mov byte [ebx + 0x10c1], 0
mov byte [ebx + 0x10a0], 1
mov dword [ebx + 0x109c], 5
mov byte [ebx + 0x109b], 1
jmp case.default.0x4d10f0
mov ecx, edi
call fcn.004e6410
test eax, eax
jne case.default.0x4d10f0
mov dword [ebx + 0x1070], 3
lea edx, [ebx + 0x1074]
mov ecx, dword [edi + 0x18]
sub ecx, dword [edi + 0x1c]
cmp ecx, 0x20
jae 0x4d1422
test ecx, ecx
je 0x4d144a
jmp 0x4d1427
mov ecx, 0x20
mov eax, dword [edi]
mov esi, ecx
add eax, dword [edi + 0x1c]
push ecx
push eax
push edx
call fcn.004f2d40
add esp, 0xc
mov ecx, esi
cmp esi, 0x20
jae case.default.0x4d10f0
lea edx, [ebx + 0x1074]
mov eax, 0x20
sub eax, ecx
push eax
lea eax, [edx + ecx]
jmp 0x4d1ae3
cmp edx, 5
jb case.default.0x4d10f0
mov ecx, edi
call fcn.004e6410
mov cl, al
and al, 1
mov byte [ebp - 0x20a2], cl
and cl, 2
mov byte [ebp - 0x20a1], al
mov byte [ebp - 0x20a3], cl
je 0x4d1511
test al, al
je 0x4d14e0
mov esi, dword [edi + 0x1c]
lea eax, [esi + 3]
cmp eax, dword [edi + 0x18]
jae 0x4d14c2
mov ecx, dword [edi]
add ecx, esi
movzx edx, byte [ecx + 3]
movzx eax, byte [ecx + 2]
shl edx, 8
add edx, eax
movzx eax, byte [ecx + 1]
shl edx, 8
add edx, eax
movzx eax, byte [ecx]
shl edx, 8
add edx, eax
lea eax, [esi + 4]
mov dword [edi + 0x1c], eax
jmp 0x4d14c4
xor edx, edx
mov eax, edx
mov ecx, 0x3b9aca00
mul ecx
add eax, 0x4c6a0000
adc edx, 0xa1997b0b
mov dword [ebx + 0x1044], edx
jmp 0x4d1505
mov ecx, edi
call fcn.004e62f0
mov ecx, eax
mov esi, 0x64
mov eax, edx
mul esi
mov esi, eax
mov eax, ecx
mov ecx, 0x64
mul ecx
add esi, edx
mov dword [ebx + 0x1044], esi
mov dword [ebx + 0x1040], eax
mov al, byte [ebp - 0x20a1]
mov cl, byte [ebp - 0x20a2]
and cl, 4
mov byte [ebp - 0x20a4], cl
je 0x4d15a8
test al, al
je 0x4d157d
mov esi, dword [edi + 0x1c]
lea eax, [esi + 3]
cmp eax, dword [edi + 0x18]
jae 0x4d155f
mov ecx, dword [edi]
add ecx, esi
movzx edx, byte [ecx + 3]
movzx eax, byte [ecx + 2]
shl edx, 8
add edx, eax
movzx eax, byte [ecx + 1]
shl edx, 8
add edx, eax
movzx eax, byte [ecx]
shl edx, 8
add edx, eax
lea eax, [esi + 4]
mov dword [edi + 0x1c], eax
jmp 0x4d1561
xor edx, edx
mov eax, edx
mov ecx, 0x3b9aca00
mul ecx
add eax, 0x4c6a0000
adc edx, 0xa1997b0b
mov dword [ebx + 0x104c], edx
jmp 0x4d15a2
mov ecx, edi
call fcn.004e62f0
mov ecx, eax
mov esi, 0x64
mov eax, edx
mul esi
mov esi, eax
mov eax, ecx
mov ecx, 0x64
mul ecx
add esi, edx
mov dword [ebx + 0x104c], esi
mov dword [ebx + 0x1048], eax
mov cl, byte [ebp - 0x20a2]
mov al, cl
and al, 8
mov byte [ebp - 0x20a5], al
je 0x4d1656
cmp byte [ebp - 0x20a1], 0
je 0x4d1626
mov esi, dword [edi + 0x1c]
lea eax, [esi + 3]
cmp eax, dword [edi + 0x18]
jae 0x4d1602
mov ecx, dword [edi]
add ecx, esi
movzx edx, byte [ecx + 3]
movzx eax, byte [ecx + 2]
shl edx, 8
add edx, eax
movzx eax, byte [ecx + 1]
shl edx, 8
add edx, eax
movzx eax, byte [ecx]
mov cl, byte [ebp - 0x20a2]
shl edx, 8
add edx, eax
lea eax, [esi + 4]
mov dword [edi + 0x1c], eax
jmp 0x4d1604
xor edx, edx
mov eax, edx
mov edx, 0x3b9aca00
mul edx
add eax, 0x4c6a0000
mov dword [ebx + 0x1050], eax
adc edx, 0xa1997b0b
mov dword [ebx + 0x1054], edx
jmp 0x4d1663
mov ecx, edi
call fcn.004e62f0
mov ecx, eax
mov esi, 0x64
mov eax, edx
mul esi
mov esi, eax
mov eax, ecx
mov ecx, 0x64
mul ecx
add esi, edx
mov dword [ebx + 0x1050], eax
mov dword [ebx + 0x1054], esi
jmp case.default.0x4d10f0
cmp byte [ebp - 0x20a1], 0
je case.default.0x4d10f0
test cl, 0x10
je case.default.0x4d10f0
cmp byte [ebp - 0x20a3], 0
je 0x4d16c7
mov esi, dword [edi + 0x1c]
lea eax, [esi + 3]
cmp eax, dword [edi + 0x18]
jae 0x4d16b8
mov ecx, dword [edi]
add ecx, esi
movzx edx, byte [ecx + 3]
movzx eax, byte [ecx + 2]
shl edx, 8
add edx, eax
movzx eax, byte [ecx + 1]
shl edx, 8
add edx, eax
movzx eax, byte [ecx]
shl edx, 8
add edx, eax
lea eax, [esi + 4]
and edx, 0x3fffffff
mov dword [edi + 0x1c], eax
cmp edx, 0x3b9aca00
jae 0x4d16c7
jmp 0x4d16ba
xor edx, edx
add dword [ebx + 0x1040], edx
adc dword [ebx + 0x1044], 0
cmp byte [ebp - 0x20a4], 0
je 0x4d1722
mov esi, dword [edi + 0x1c]
lea eax, [esi + 3]
cmp eax, dword [edi + 0x18]
jae 0x4d1713
mov ecx, dword [edi]
add ecx, esi
movzx edx, byte [ecx + 3]
movzx eax, byte [ecx + 2]
shl edx, 8
add edx, eax
movzx eax, byte [ecx + 1]
shl edx, 8
add edx, eax
movzx eax, byte [ecx]
shl edx, 8
add edx, eax
lea eax, [esi + 4]
and edx, 0x3fffffff
mov dword [edi + 0x1c], eax
cmp edx, 0x3b9aca00
jae 0x4d1722
jmp 0x4d1715
xor edx, edx
add dword [ebx + 0x1048], edx
adc dword [ebx + 0x104c], 0
cmp byte [ebp - 0x20a5], 0
je case.default.0x4d10f0
mov esi, dword [edi + 0x1c]
lea eax, [esi + 3]
cmp eax, dword [edi + 0x18]
jae 0x4d1786
mov ecx, dword [edi]
add ecx, esi
movzx edx, byte [ecx + 3]
movzx eax, byte [ecx + 2]
shl edx, 8
add edx, eax
movzx eax, byte [ecx + 1]
shl edx, 8
add edx, eax
movzx eax, byte [ecx]
shl edx, 8
add edx, eax
lea eax, [esi + 4]
and edx, 0x3fffffff
mov dword [edi + 0x1c], eax
cmp edx, 0x3b9aca00
jae case.default.0x4d10f0
add dword [ebx + 0x1050], edx
adc dword [ebx + 0x1054], 0
jmp case.default.0x4d10f0
xor edx, edx
add dword [ebx + 0x1050], edx
adc dword [ebx + 0x1054], edx
jmp case.default.0x4d10f0
cmp edx, 1
jb case.default.0x4d10f0
mov ecx, edi
call fcn.004e6410
mov ecx, edi
call fcn.004e6410
test eax, eax
je case.default.0x4d10f0
push eax
push 0x57df90
lea eax, [ebp - 0x30]
mov byte [ebx + 0x10f3], 1
push 0x14
push eax
call fcn.004caf80
lea edx, [ebx + 0x28]
add esp, 0x10
mov ecx, edx
lea esi, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4d17e0
sub ecx, esi
mov eax, 0x7ff
sar ecx, 1
sub eax, ecx
test eax, eax
jle case.default.0x4d10f0
push eax
lea eax, [ebp - 0x30]
push eax
push edx
lfence
call fcn.005304cf
jmp 0x4d1aeb
mov ecx, edi
call fcn.004e6410
mov ecx, edi
mov dword [ebx + 0x1100], eax
call fcn.004e6410
and al, 1
mov ecx, edi
mov byte [ebx + 0x2104], al
call fcn.004e6410
mov dword [ebp - 0x20a0], eax
mov byte [ebp - 0x2034], 0
cmp eax, 0x1fff
jae 0x4d18ab
mov esi, dword [edi + 0x18]
mov ecx, dword [edi + 0x1c]
sub esi, ecx
cmp esi, eax
cmovae esi, eax
test esi, esi
je 0x4d187b
lfence
mov eax, dword [edi]
add eax, dword [edi + 0x1c]
push esi
push eax
lea eax, [ebp - 0x2034]
push eax
call fcn.004f2d40
mov eax, dword [ebp - 0x20a0]
add esp, 0xc
mov ecx, dword [edi + 0x1c]
cmp eax, esi
jbe 0x4d1897
sub eax, esi
push eax
lea eax, [ebp - 0x2034]
add eax, esi
push 0
push eax
call fcn.004f32c0
add esp, 0xc
jmp 0x4d189d
lea eax, [ecx + esi]
mov dword [edi + 0x1c], eax
mov eax, dword [ebp - 0x20a0]
mov byte [ebp + eax - 0x2034], 0
xor edx, edx
lea ebx, [edx + 0x5c]
mov cl, byte [ebp + edx - 0x2034]
test cl, cl
je 0x4d18d4
cmp cl, 0x2f
movzx eax, cl
cmove eax, ebx
mov byte [ebp + edx - 0x2034], al
inc edx
cmp edx, 0x1fff
jb 0x4d18b0
mov ebx, dword [ebp - 0x20c0]
lea ecx, [ebp - 0x2034]
mov byte [ebp + edx - 0x2034], 0
push 0x800
lea edx, [ebx + 0x1104]
call fcn.004c8a50
add esp, 4
jmp case.default.0x4d10f0
mov ecx, edi
call fcn.004e6410
mov ecx, eax
mov dword [ebp - 0x20ac], eax
shr ecx, 2
and cl, 1
mov byte [ebx + 0x2106], cl
mov ecx, eax
shr ecx, 3
and cl, 1
mov byte [ebx + 0x2107], cl
mov byte [ebx + 0x2208], 0
mov byte [ebx + 0x2108], 0
test al, 1
je 0x4d19b3
mov ecx, edi
call fcn.004e6410
mov ecx, 0xff
cmp eax, ecx
cmovb ecx, eax
mov eax, dword [edi + 0x18]
sub eax, dword [edi + 0x1c]
mov esi, ecx
cmp eax, ecx
mov dword [ebp - 0x20a0], ecx
cmovb esi, eax
test esi, esi
je 0x4d1982
lfence
mov eax, dword [edi + 0x1c]
add eax, dword [edi]
push esi
push eax
lea eax, [ebx + 0x2108]
push eax
call fcn.004f2d40
mov ecx, dword [ebp - 0x20a0]
add esp, 0xc
cmp ecx, esi
jbe 0x4d19a2
sub ecx, esi
lea eax, [ebx + 0x2108]
push ecx
add eax, esi
push 0
push eax
call fcn.004f32c0
mov ecx, dword [ebp - 0x20a0]
add esp, 0xc
add dword [edi + 0x1c], esi
mov eax, dword [ebp - 0x20ac]
mov byte [ebx + ecx + 0x2108], 0
test al, 2
je 0x4d1a29
mov ecx, edi
call fcn.004e6410
mov ecx, 0xff
cmp eax, ecx
cmovb ecx, eax
mov eax, dword [edi + 0x18]
sub eax, dword [edi + 0x1c]
mov esi, ecx
cmp eax, ecx
mov dword [ebp - 0x20a0], ecx
cmovb esi, eax
test esi, esi
je 0x4d19fe
lfence
mov eax, dword [edi + 0x1c]
add eax, dword [edi]
push esi
push eax
lea eax, [ebx + 0x2208]
push eax
call fcn.004f2d40
mov ecx, dword [ebp - 0x20a0]
add esp, 0xc
cmp ecx, esi
jbe 0x4d1a1e
sub ecx, esi
lea eax, [ebx + 0x2208]
push ecx
add eax, esi
push 0
push eax
call fcn.004f32c0
mov ecx, dword [ebp - 0x20a0]
add esp, 0xc
add dword [edi + 0x1c], esi
mov byte [ebx + ecx + 0x2208], 0
cmp byte [ebx + 0x2106], 0
je 0x4d1a3f
mov ecx, edi
call fcn.004e6410
mov dword [ebx + 0x2308], eax
cmp byte [ebx + 0x2107], 0
je 0x4d1a55
mov ecx, edi
call fcn.004e6410
mov dword [ebx + 0x230c], eax
mov byte [ebx + 0x2105], 1
jmp case.default.0x4d10f0
mov esi, edx
cmp ecx, 3
jne 0x4d1a79
mov eax, dword [edi + 0x18]
sub eax, dword [ebp - 0x20b4]
cmp eax, 1
jne 0x4d1a79
lea esi, [edx + 1]
cmp esi, dword [ebx + 0x1030]
lea ecx, [ebx + 0x1028]
jbe 0x4d1a9d
lfence
mov eax, esi
sub eax, dword [ecx + 4]
push eax
call fcn.004c8480
lea ecx, [ebx + 0x1028]
jmp 0x4d1aa0
mov dword [ecx + 4], esi
mov eax, dword [edi + 0x18]
mov edx, dword [edi + 0x1c]
sub eax, edx
mov ecx, dword [ecx]
cmp eax, esi
mov dword [ebp - 0x20ac], ecx
cmovae eax, esi
mov dword [ebp - 0x20a0], eax
test eax, eax
je 0x4d1ada
push eax
mov eax, dword [edi]
add eax, edx
push eax
push ecx
call fcn.004f2d40
mov eax, dword [ebp - 0x20a0]
add esp, 0xc
mov ecx, dword [ebp - 0x20ac]
cmp esi, eax
jbe case.default.0x4d10f0
sub esi, eax
add eax, ecx
push esi
push 0
push eax
call fcn.004f32c0
add esp, 0xc
mov ecx, dword [ebp - 0x20b4]
mov dword [edi + 0x1c], ecx
mov eax, dword [edi + 0x18]
sub eax, ecx
cmp eax, 2
jae 0x4d0fd0
mov ecx, dword [ebp - 8]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004ef615
mov esp, ebp
pop ebp
ret 0xc