Function at 0x467100
Capabilities:
Hash data using sha256

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x9c
mov eax, dword [0x5fa040]
xor eax, esp
mov dword [esp + 0x98], eax
mov eax, dword [ebp + 0x1c]
push ebx
push esi
push edi
mov edi, dword [ebp + 8]
mov esi, ecx
mov ecx, dword [ebp + 0x10]
mov dword [esp + 0x2c], edx
mov edx, dword [ebp + 0xc]
mov ebx, dword [edi]
mov dword [esp + 0x3c], ebx
mov ebx, dword [ecx]
mov dword [edi], 0
mov dword [ecx], 0
mov dword [esp + 0x18], edi
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], ecx
mov dword [esp + 0x24], eax
mov dword [esp + 0x38], ebx
mov dword [eax], 0
jmp 0x467166
mov ecx, edi
mov edi, dword [esp + 0x18]
cmp dword [esi], 6
jne 0x4673f9
mov ebx, dword [esp + 0x3c]
sub ebx, dword [edi]
mov eax, dword [ebp + 0x18]
mov edi, dword [esp + 0x38]
sub edi, dword [ecx]
mov ecx, dword [esi + 0x140]
mov edx, dword [esi + 0x144]
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x34], eax
mov eax, ecx
and eax, edx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x30], edi
mov dword [esp + 0x20], 0
cmp eax, 0xffffffff
je 0x4671ea
sub ecx, dword [esi + 0x18]
sbb edx, dword [esi + 0x1c]
xor eax, eax
cmp eax, edx
jb 0x4671cc
ja 0x4671c0
cmp edi, ecx
jb 0x4671cc
mov dword [esp + 0x34], 1
mov dword [esp + 0x30], ecx
or ecx, edx
jne 0x4671ea
mov eax, dword [esi + 0x148]
cmp eax, dword [esi + 0x20]
jne 0x4671ea
mov eax, dword [esi + 0x14c]
cmp eax, dword [esi + 0x24]
je 0x467bec
mov ecx, dword [esi + 0x148]
mov eax, ecx
mov edx, dword [esi + 0x14c]
and eax, edx
cmp eax, 0xffffffff
je 0x467224
sub ecx, dword [esi + 0x20]
sbb edx, dword [esi + 0x24]
xor eax, eax
cmp eax, edx
jb 0x467224
ja 0x467211
cmp ebx, ecx
jb 0x467224
mov dword [esp + 0x20], 1
mov eax, 1
mov dword [esp + 0x28], ecx
jmp 0x467228
mov eax, dword [esp + 0x1c]
mov ebx, dword [esp + 0x2c]
lea ecx, [esi + 0x68]
push eax
push dword [esp + 0x38]
lea eax, [esp + 0x38]
mov edx, ebx
push eax
push dword [esp + 0x1c]
lea eax, [esp + 0x38]
push dword [esp + 0x30]
push eax
xor eax, eax
cmp dword [esi + 0x2f8], eax
cmovne edx, eax
call fcn.00466690
mov ecx, dword [esi + 0x88]
mov edx, eax
mov eax, dword [esp + 0x3c]
add esp, 0x18
mov dword [esp + 0x1c], edx
mov dword [eax], ecx
mov ecx, dword [esi + 0x2f8]
test ecx, ecx
je 0x467281
mov edi, dword [esi + 0x300]
add edi, ecx
jmp 0x467283
mov edi, ebx
mov eax, dword [esi + 0x1d8]
mov ebx, dword [esp + 0x28]
sub eax, 1
je 0x4672d2
sub eax, 3
je 0x4672af
sub eax, 6
jne 0x4672ea
push ebx
lea ecx, [esi + 0x1e8]
mov edx, edi
call fcn.00464180
add esp, 4
jmp 0x4672e6
push dword [esi + 0x1e4]
mov edx, ebx
mov ecx, edi
push dword [esi + 0x1e0]
call fcn.00465ca0
mov dword [esi + 0x1e0], eax
mov dword [esi + 0x1e4], edx
jmp 0x4672e6
mov ecx, dword [esi + 0x1dc]
mov edx, edi
push ebx
call fcn.0044a290
mov dword [esi + 0x1dc], eax
mov edx, dword [esp + 0x1c]
cmp dword [esi + 0x2f8], 0
jne 0x4672f7
add dword [esp + 0x2c], ebx
mov eax, dword [esp + 0x14]
add dword [esi + 0x300], ebx
mov ecx, dword [esp + 0x30]
add dword [esp + 0x10], ecx
add dword [eax], ecx
xor eax, eax
add dword [esi + 0x18], ecx
adc eax, dword [esi + 0x1c]
mov dword [esi + 0x1c], eax
mov eax, dword [esp + 0x18]
add dword [eax], ebx
mov eax, 0
add ebx, dword [esi + 0x20]
mov dword [esi + 0x20], ebx
adc eax, dword [esi + 0x24]
mov dword [esp + 0x20], eax
mov dword [esi + 0x24], eax
test edx, edx
jne 0x467c06
mov edx, dword [esp + 0x24]
mov ecx, dword [edx]
cmp ecx, 1
jne 0x467bcb
movzx ecx, word [esi + 0x10]
and ecx, 0xf
jne 0x467355
xor edi, edi
jmp 0x46736c
dec ecx
mov eax, 0xaaaaaaab
mul ecx
mov eax, dword [esp + 0x20]
mov edi, 4
shr edx, 1
mov ecx, edx
shl edi, cl
mov ecx, dword [esi + 0x14]
push eax
xor eax, eax
add ecx, edi
push ebx
adc eax, eax
add ecx, dword [esi + 0x18]
adc eax, dword [esi + 0x1c]
push eax
push ecx
mov ecx, esi
call fcn.00467050
mov eax, dword [esp + 0x34]
add esp, 0x10
mov dword [esi], 7
mov dword [esi + 4], 0
mov dword [esi + 8], 0
mov dword [eax], 0
mov ecx, dword [esi + 0x140]
mov eax, ecx
mov edx, dword [esi + 0x144]
and eax, edx
cmp eax, 0xffffffff
je 0x4673ce
cmp ecx, dword [esi + 0x18]
jne 0x467bec
cmp edx, dword [esi + 0x1c]
jne 0x467bec
mov ecx, dword [esi + 0x148]
mov eax, ecx
mov edx, dword [esi + 0x14c]
and eax, edx
cmp eax, 0xffffffff
je 0x4673f5
cmp ecx, dword [esi + 0x20]
jne 0x467bec
cmp edx, dword [esi + 0x24]
jne 0x467bec
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
mov ebx, dword [esp + 0x38]
mov ecx, dword [edi]
sub ebx, ecx
jne 0x467410
cmp dword [esi], 7
jne 0x467c72
mov eax, dword [esi]
cmp eax, 7
ja case.default.0x46741b
jmp dword [eax*4 + 0x467cd0]
mov ecx, dword [esi + 4]
cmp ecx, 0xc
jae 0x467464
cmp ecx, 6
jae 0x46743d
mov al, byte [edx]
cmp al, byte [ecx + 0x5c1760]
jne 0x467c1d
cmp dword [esi + 0x2f0], 0
jne 0x467c41
mov al, byte [edx]
inc edx
mov byte [esi + ecx + 0x324], al
mov ecx, edi
inc dword [esi + 4]
mov dword [esp + 0x10], edx
inc dword [ecx]
jmp 0x467162
movzx eax, byte [esi + 0x32a]
lea edx, [esi + 0x32a]
movzx ecx, byte [esi + 0x32b]
shl ax, 8
or cx, ax
movzx edi, cx
mov word [esi + 0x10], cx
mov ecx, 0xffffffff
push 2
call fcn.0044a290
not eax
cmp eax, dword [esi + 0x32c]
jne 0x467c1d
mov ax, 0xf
cmp ax, di
sbb eax, eax
and eax, 4
cmp edi, 0xf
ja 0x467cb9
add dword [esi + 0x48], 1
mov eax, dword [0x5faba4]
adc dword [esi + 0x4c], 0
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov dword [esi + 0x30], 0
mov dword [esi + 0x34], 0
mov dword [esi + 0x28], 0
mov dword [esi + 0x2c], 0
mov dword [esi + 0x268], eax
mov dword [esi + 0x270], 0
mov dword [esi + 0x274], 0
mov dword [esi + 0x288], 0x6a09e667
mov dword [esi + 0x28c], 0xbb67ae85
mov dword [esi + 0x290], 0x3c6ef372
mov dword [esi + 0x294], 0xa54ff53a
mov dword [esi + 0x298], 0x510e527f
mov dword [esi + 0x29c], 0x9b05688c
mov dword [esi + 0x2a0], 0x1f83d9ab
mov dword [esi + 0x2a4], 0x5be0cd19
mov dword [esi], 5
mov dword [esi + 4], 0
jmp 0x467162
mov ecx, dword [esi + 4]
test ecx, ecx
jne 0x46767b
movzx eax, byte [edx]
inc edx
mov byte [esi + 0x324], al
lea eax, [ecx + 1]
mov ecx, edi
mov dword [esi + 4], eax
mov dword [esp + 0x10], edx
inc dword [ecx]
mov al, byte [esi + 0x324]
test al, al
jne 0x467669
cmp dword [esi + 0x2f4], 0
jne 0x467bec
mov edx, dword [esi + 0x28]
xor edi, edi
mov ecx, dword [esi + 0x2c]
mov al, dl
lea edi, [edi + 1]
or al, 0x80
shrd edx, ecx, 7
mov byte [esi + edi + 0x324], al
shr ecx, 7
mov eax, edx
or eax, ecx
jne 0x4675a8
and byte [edi + esi + 0x324], 0x7f
lea eax, [edi + 1]
add dword [esi + 0x30], eax
lea edi, [esi + 0x268]
lea edx, [esi + 0x304]
mov dword [esi + 0xc], eax
adc dword [esi + 0x34], 0
mov ecx, edi
mov dword [esi + 0x38], eax
mov dword [esi + 0x3c], 0
call fcn.00464c60
mov eax, dword [0x5faba4]
lea edx, [esi + 0x324]
mov dword [edi], eax
or ecx, 0xffffffff
mov dword [edi + 8], 0
mov dword [edi + 0xc], 0
mov dword [edi + 0x20], 0x6a09e667
mov dword [edi + 0x24], 0xbb67ae85
mov dword [edi + 0x28], 0x3c6ef372
mov dword [edi + 0x2c], 0xa54ff53a
mov dword [edi + 0x30], 0x510e527f
mov dword [edi + 0x34], 0x9b05688c
mov dword [edi + 0x38], 0x1f83d9ab
mov dword [edi + 0x3c], 0x5be0cd19
push dword [esi + 0xc]
call fcn.0044a290
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov dword [esi + 0x60], eax
mov dword [esi], 1
jmp 0x467162
movzx eax, al
lea eax, [eax*4 + 4]
mov dword [esi + 0x14], eax
jmp 0x467162
mov edi, dword [esi + 0x14]
cmp ecx, edi
je 0x4676b4
sub edi, ecx
lea eax, [ecx + 0x324]
cmp edi, ebx
cmova edi, ebx
add eax, esi
push edi
push edx
push eax
call fcn.0058aed0
mov ecx, dword [esp + 0x20]
add esp, 0xc
add dword [esi + 4], edi
mov edx, dword [esp + 0x10]
add dword [ecx], edi
add edx, edi
mov dword [esp + 0x10], edx
jmp 0x467162
lea edi, [esi + 0x140]
lea edx, [esi + 0x324]
mov ecx, edi
call fcn.00466990
test eax, eax
jne 0x467cb9
movzx ebx, byte [edi + 0x10]
and ebx, 3
mov eax, ebx
shl eax, 5
cmp dword [eax + edi + 0x18], 0x21
jne 0x467c58
cmp dword [eax + edi + 0x1c], 0
jne 0x467c58
cmp dword [eax + edi + 0x20], 1
jne 0x467c58
cmp byte [eax + edi + 0x24], 0x28
ja 0x467c58
xor edi, edi
test ebx, ebx
je 0x467757
lea eax, [esi + 0x160]
mov edx, dword [eax - 8]
mov ecx, dword [eax - 4]
cmp edx, 3
jne 0x467727
test ecx, ecx
jne 0x467727
cmp dword [eax], 1
jmp 0x467749
add edx, 0xfffffffd
adc ecx, 0xffffffff
test ecx, ecx
ja 0x467c58
jb 0x467740
cmp edx, 8
ja 0x467c58
mov ecx, dword [eax]
test ecx, ecx
je 0x46774f
cmp ecx, 4
jne 0x467c58
inc edi
add eax, 0x20
cmp edi, ebx
jb 0x467713
add dword [esi + 0x58], 1
lea ecx, [esi + 0x1d8]
movzx edx, word [esi + 0x10]
adc dword [esi + 0x5c], 0
and edx, 0xf
mov dword [esi], 6
mov dword [esi + 0x18], 0
mov dword [esi + 0x1c], 0
mov dword [esi + 0x20], 0
mov dword [esi + 0x24], 0
call fcn.00465ba0
cmp dword [esi + 0x2e8], 0
jne 0x467c37
push dword [esi + 0x2fc]
lea edx, [esi + 0x140]
push dword [esi + 0x2f8]
lea ecx, [esi + 0x68]
call fcn.00466b60
add esp, 8
test eax, eax
jne 0x467cb9
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
jmp 0x467162
mov eax, dword [esi + 0x18]
add eax, dword [esi + 8]
test al, 3
je 0x467817
test ebx, ebx
je 0x467c72
lea eax, [ecx + 1]
mov ecx, edi
mov dword [ecx], eax
inc dword [esi + 8]
mov al, byte [edx]
inc edx
mov dword [esp + 0x10], edx
test al, al
je 0x467162
mov eax, 3
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x98]
xor ecx, esp
call fcn.00587d99
mov esp, ebp
pop ebp
ret
movzx ecx, word [esi + 0x10]
and ecx, 0xf
jne 0x467824
xor edi, edi
jmp 0x467837
dec ecx
mov eax, 0xaaaaaaab
mul ecx
mov edi, 4
shr edx, 1
mov ecx, edx
shl edi, cl
mov ecx, dword [esi + 4]
mov eax, edi
sub eax, ecx
je 0x467887
test ebx, ebx
je 0x467c72
cmp eax, ebx
cmova eax, ebx
push eax
push dword [esp + 0x14]
mov dword [esp + 0x28], eax
lea eax, [ecx + 0x324]
add eax, esi
push eax
call fcn.0058aed0
mov ecx, dword [esp + 0x20]
add esp, 0xc
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x10]
add dword [esi + 4], eax
add edx, eax
add dword [ecx], eax
mov dword [esp + 0x10], edx
cmp edi, dword [esi + 4]
jne 0x467162
lea ecx, [esi + 0x1d8]
mov dword [esi], 5
lea edx, [esp + 0x60]
mov dword [esi + 4], 0
call fcn.00465c10
test eax, eax
je 0x467909
lea edx, [esi + 0x324]
lea ecx, [esp + 0x60]
sub edi, 4
jb 0x4678c7
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x4678cc
add ecx, 4
add edx, 4
sub edi, 4
jae 0x4678b6
cmp edi, 0xfffffffc
je 0x467909
mov al, byte [ecx]
cmp al, byte [edx]
jne 0x4677fd
cmp edi, 0xfffffffd
je 0x467909
mov al, byte [ecx + 1]
cmp al, byte [edx + 1]
jne 0x4677fd
cmp edi, 0xfffffffe
je 0x467909
mov al, byte [ecx + 2]
cmp al, byte [edx + 2]
jne 0x4677fd
cmp edi, 0xffffffff
je 0x467909
mov al, byte [ecx + 3]
cmp al, byte [edx + 3]
jne 0x4677fd
cmp dword [esi + 0x2f4], 0
jne 0x467c93
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
jmp 0x467162
mov eax, dword [esi + 4]
cmp eax, dword [esi + 0xc]
jae 0x467955
inc dword [esp + 0x10]
lea eax, [ecx + 1]
mov dword [edi], eax
mov eax, dword [esi + 4]
mov dl, byte [edx]
mov cl, byte [esi + eax + 0x324]
inc eax
mov dword [esi + 4], eax
cmp dl, cl
jne 0x4677fd
mov edx, dword [esp + 0x10]
jmp case.0x46741b.6
mov edi, dword [esi + 0x3c]
mov edx, dword [esi + 0x34]
mov ecx, dword [esi + 0x38]
mov eax, dword [esi + 0x30]
cmp edi, edx
ja 0x4679bc
jb 0x46796b
cmp ecx, eax
jae 0x4679bc
sub eax, ecx
sbb edx, edi
xor ecx, ecx
cmp ecx, edx
jb 0x46797d
ja 0x46797b
cmp ebx, eax
jbe 0x46797d
mov ebx, eax
mov edx, dword [esp + 0x10]
mov ecx, dword [esi + 0x60]
push ebx
call fcn.0044a290
mov edx, dword [esp + 0x10]
lea ecx, [esi + 0x268]
push ebx
mov dword [esi + 0x60], eax
call fcn.00464180
mov ecx, dword [esp + 0x18]
add esp, 4
mov edx, dword [esp + 0x10]
add edx, ebx
mov dword [esp + 0x10], edx
add dword [ecx], ebx
add dword [esi + 0x38], ebx
adc dword [esi + 0x3c], 0
jmp 0x467162
and ecx, 3
or ecx, 0
je 0x467a0e
mov eax, dword [esp + 0x10]
mov ecx, dword [esi + 0x60]
mov dl, byte [eax]
inc eax
mov dword [esp + 0x10], eax
movzx eax, dl
xor eax, ecx
shr ecx, 8
movzx eax, al
xor ecx, dword [eax*4 + 0x5ff700]
mov dword [esi + 0x60], ecx
mov ecx, dword [esp + 0x14]
inc dword [ecx]
add dword [esi + 0x38], 1
adc dword [esi + 0x3c], 0
add dword [esi + 0x30], 1
adc dword [esi + 0x34], 0
test dl, dl
jne 0x4677fd
mov edx, dword [esp + 0x10]
jmp 0x467162
add eax, 4
mov dword [esi], 2
lea ecx, [esi + 0x268]
mov dword [esi + 0x30], eax
adc edx, 0
mov dword [esi + 4], 0
mov dword [esi + 0x34], edx
lea edx, [esp + 0x40]
call fcn.00464c60
lea edx, [esi + 0x304]
mov edi, 0x1c
lea ecx, [esp + 0x40]
mov eax, dword [ecx]
cmp eax, dword [edx]
jne 0x4677fd
add ecx, 4
add edx, 4
sub edi, 4
jae 0x467a45
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
jmp 0x467162
cmp dword [esi + 4], 4
jae 0x467a8b
lea eax, [ecx + 1]
mov dword [edi], eax
mov ecx, dword [esi + 4]
mov al, byte [edx]
mov byte [esi + ecx + 0x324], al
inc dword [esi + 4]
inc edx
mov dword [esp + 0x10], edx
jmp case.0x46741b.6
mov eax, dword [esi + 0x60]
not eax
mov dword [esi], 3
mov dword [esi + 4], 0
cmp eax, dword [esi + 0x324]
jne 0x4677fd
jmp case.0x46741b.6
mov eax, dword [esi + 4]
mov edi, 0xc
sub edi, eax
cmp edi, ebx
cmova edi, ebx
add eax, 0x324
push edi
push edx
add eax, esi
push eax
call fcn.0058aed0
mov ecx, dword [esp + 0x20]
add esp, 0xc
add dword [esi + 4], edi
mov edx, dword [esp + 0x10]
add edx, edi
add dword [ecx], edi
cmp dword [esi + 4], 0xc
mov edi, dword [esp + 0x18]
mov dword [esp + 0x10], edx
jne 0x467166
add dword [esi + 0x50], 1
mov edx, 4
mov dword [esi], 4
adc dword [esi + 0x54], 0
mov dword [esi + 0x40], 0
mov dword [esi + 0x44], 0
mov eax, dword [esi + 0x328]
mul edx
add eax, 4
adc edx, 0
cmp dword [esi + 0x30], eax
jne 0x4677fd
cmp dword [esi + 0x34], edx
jne 0x4677fd
push 6
lea edx, [esi + 0x328]
or ecx, 0xffffffff
call fcn.0044a290
not eax
cmp dword [esi + 0x324], eax
jne 0x4677fd
movzx ecx, byte [esi + 0x32c]
movzx eax, byte [esi + 0x32d]
shl cx, 8
or cx, ax
cmp word [esi + 0x10], cx
jne 0x4677fd
cmp byte [esi + 0x32e], 0x59
jne 0x4677fd
cmp byte [esi + 0x32f], 0x5a
jne 0x4677fd
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
jmp 0x467166
cmp byte [edx], 0
je 0x467bb2
test byte [esi + 0x40], 3
jne 0x467c1d
mov dword [esi + 4], 0
mov dword [esi], 0
jmp case.0x46741b.6
lea eax, [ecx + 1]
inc edx
mov ecx, edi
mov dword [esp + 0x10], edx
mov dword [ecx], eax
add dword [esi + 0x40], 1
adc dword [esi + 0x44], 0
jmp 0x467162
mov eax, dword [esi + 0x140]
cmp eax, dword [esi + 0x18]
jne 0x467c41
mov eax, dword [esi + 0x144]
cmp eax, dword [esi + 0x1c]
jne 0x467c41
cmp ecx, 3
jne 0x467c41
mov dword [edx], 0
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x98]
xor ecx, esp
call fcn.00587d99
mov esp, ebp
pop ebp
ret
mov eax, edx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x98]
xor ecx, esp
call fcn.00587d99
mov esp, ebp
pop ebp
ret
mov eax, 0x11
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x98]
xor ecx, esp
call fcn.00587d99
mov esp, ebp
pop ebp
ret
mov dword [esi + 0x2ec], 1
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x98]
xor ecx, esp
call fcn.00587d99
mov esp, ebp
pop ebp
ret
mov eax, 4
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x98]
xor ecx, esp
call fcn.00587d99
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x24]
mov dword [eax], 3
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x98]
xor ecx, esp
call fcn.00587d99
mov esp, ebp
pop ebp
ret
mov eax, dword [esp + 0x24]
mov dword [eax], 1
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x98]
xor ecx, esp
call fcn.00587d99
mov esp, ebp
pop ebp
ret
mov eax, 0xb
mov ecx, dword [esp + 0xa4]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00587d99
mov esp, ebp
pop ebp
ret