Function at 0x403650
Capabilities:
Encrypt data using hc-128
Hash data using sha256

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x234
push esi
mov dword [ebp - 0x234], ecx
mov dword [ebp - 0x210], 0x428a2f98
mov dword [ebp - 0x20c], 0x71374491
mov dword [ebp - 0x208], 0xb5c0fbcf
mov dword [ebp - 0x204], 0xe9b5dba5
mov dword [ebp - 0x200], 0x3956c25b
mov dword [ebp - 0x1fc], 0x59f111f1
mov dword [ebp - 0x1f8], 0x923f82a4
mov dword [ebp - 0x1f4], 0xab1c5ed5
mov dword [ebp - 0x1f0], 0xd807aa98
mov dword [ebp - 0x1ec], 0x12835b01
mov dword [ebp - 0x1e8], 0x243185be
mov dword [ebp - 0x1e4], 0x550c7dc3
mov dword [ebp - 0x1e0], 0x72be5d74
mov dword [ebp - 0x1dc], 0x80deb1fe
mov dword [ebp - 0x1d8], 0x9bdc06a7
mov dword [ebp - 0x1d4], 0xc19bf174
mov dword [ebp - 0x1d0], 0xe49b69c1
mov dword [ebp - 0x1cc], 0xefbe4786
mov dword [ebp - 0x1c8], 0xfc19dc6
mov dword [ebp - 0x1c4], 0x240ca1cc
mov dword [ebp - 0x1c0], 0x2de92c6f
mov dword [ebp - 0x1bc], 0x4a7484aa
mov dword [ebp - 0x1b8], 0x5cb0a9dc
mov dword [ebp - 0x1b4], 0x76f988da
mov dword [ebp - 0x1b0], 0x983e5152
mov dword [ebp - 0x1ac], 0xa831c66d
mov dword [ebp - 0x1a8], 0xb00327c8
mov dword [ebp - 0x1a4], 0xbf597fc7
mov dword [ebp - 0x1a0], 0xc6e00bf3
mov dword [ebp - 0x19c], 0xd5a79147
mov dword [ebp - 0x198], 0x6ca6351
mov dword [ebp - 0x194], 0x14292967
mov dword [ebp - 0x190], 0x27b70a85
mov dword [ebp - 0x18c], 0x2e1b2138
mov dword [ebp - 0x188], 0x4d2c6dfc
mov dword [ebp - 0x184], 0x53380d13
mov dword [ebp - 0x180], 0x650a7354
mov dword [ebp - 0x17c], 0x766a0abb
mov dword [ebp - 0x178], 0x81c2c92e
mov dword [ebp - 0x174], 0x92722c85
mov dword [ebp - 0x170], 0xa2bfe8a1
mov dword [ebp - 0x16c], 0xa81a664b
mov dword [ebp - 0x168], 0xc24b8b70
mov dword [ebp - 0x164], 0xc76c51a3
mov dword [ebp - 0x160], 0xd192e819
mov dword [ebp - 0x15c], 0xd6990624
mov dword [ebp - 0x158], 0xf40e3585
mov dword [ebp - 0x154], 0x106aa070
mov dword [ebp - 0x150], 0x19a4c116
mov dword [ebp - 0x14c], 0x1e376c08
mov dword [ebp - 0x148], 0x2748774c
mov dword [ebp - 0x144], 0x34b0bcb5
mov dword [ebp - 0x140], 0x391c0cb3
mov dword [ebp - 0x13c], 0x4ed8aa4a
mov dword [ebp - 0x138], 0x5b9cca4f
mov dword [ebp - 0x134], 0x682e6ff3
mov dword [ebp - 0x130], 0x748f82ee
mov dword [ebp - 0x12c], 0x78a5636f
mov dword [ebp - 0x128], 0x84c87814
mov dword [ebp - 0x124], 0x8cc70208
mov dword [ebp - 0x120], 0x90befffa
mov dword [ebp - 0x11c], 0xa4506ceb
mov dword [ebp - 0x118], 0xbef9a3f7
mov dword [ebp - 0x114], 0xc67178f2
mov dword [ebp - 0x230], 0
jmp 0x4038fb
mov eax, dword [ebp - 0x230]
add eax, 1
mov dword [ebp - 0x230], eax
cmp dword [ebp - 0x230], 0x10
jae 0x4039b5
mov ecx, dword [ebp - 0x230]
mov edx, dword [ebp - 0x234]
movzx eax, byte [edx + ecx*4 + 0x2e]
shl eax, 0x18
mov ecx, dword [ebp - 0x230]
mov dword [ebp + ecx*4 - 0x108], eax
mov edx, dword [ebp - 0x230]
mov eax, dword [ebp - 0x234]
movzx ecx, byte [eax + edx*4 + 0x2f]
shl ecx, 0x10
mov edx, dword [ebp - 0x230]
or ecx, dword [ebp + edx*4 - 0x108]
mov eax, dword [ebp - 0x230]
mov dword [ebp + eax*4 - 0x108], ecx
mov ecx, dword [ebp - 0x230]
mov edx, dword [ebp - 0x234]
movzx eax, byte [edx + ecx*4 + 0x30]
shl eax, 8
mov ecx, dword [ebp - 0x230]
or eax, dword [ebp + ecx*4 - 0x108]
mov edx, dword [ebp - 0x230]
mov dword [ebp + edx*4 - 0x108], eax
mov eax, dword [ebp - 0x230]
mov ecx, dword [ebp - 0x234]
movzx edx, byte [ecx + eax*4 + 0x31]
mov eax, dword [ebp - 0x230]
or edx, dword [ebp + eax*4 - 0x108]
mov ecx, dword [ebp - 0x230]
mov dword [ebp + ecx*4 - 0x108], edx
jmp 0x4038ec
mov dword [ebp - 0x230], 0x10
jmp 0x4039d0
mov edx, dword [ebp - 0x230]
add edx, 1
mov dword [ebp - 0x230], edx
cmp dword [ebp - 0x230], 0x40
jae 0x403abb
mov eax, dword [ebp - 0x230]
mov ecx, dword [ebp + eax*4 - 0x110]
shr ecx, 0x11
mov edx, dword [ebp - 0x230]
mov eax, dword [ebp + edx*4 - 0x110]
shl eax, 0xf
or ecx, eax
mov edx, dword [ebp - 0x230]
mov eax, dword [ebp + edx*4 - 0x110]
shr eax, 0x13
mov edx, dword [ebp - 0x230]
mov edx, dword [ebp + edx*4 - 0x110]
shl edx, 0xd
or eax, edx
xor ecx, eax
mov eax, dword [ebp - 0x230]
mov edx, dword [ebp + eax*4 - 0x110]
shr edx, 0xa
xor ecx, edx
mov eax, dword [ebp - 0x230]
add ecx, dword [ebp + eax*4 - 0x124]
mov edx, dword [ebp - 0x230]
mov eax, dword [ebp + edx*4 - 0x144]
shr eax, 7
mov edx, dword [ebp - 0x230]
mov edx, dword [ebp + edx*4 - 0x144]
shl edx, 0x19
or eax, edx
mov edx, dword [ebp - 0x230]
mov edx, dword [ebp + edx*4 - 0x144]
shr edx, 0x12
mov esi, dword [ebp - 0x230]
mov esi, dword [ebp + esi*4 - 0x144]
shl esi, 0xe
or edx, esi
xor eax, edx
mov edx, dword [ebp - 0x230]
mov edx, dword [ebp + edx*4 - 0x144]
shr edx, 3
xor eax, edx
add ecx, eax
mov eax, dword [ebp - 0x230]
add ecx, dword [ebp + eax*4 - 0x148]
mov edx, dword [ebp - 0x230]
mov dword [ebp + edx*4 - 0x108], ecx
jmp 0x4039c1
mov eax, dword [ebp - 0x234]
mov ecx, dword [eax + 4]
mov dword [ebp - 0x21c], ecx
mov edx, dword [ebp - 0x234]
mov eax, dword [edx + 8]
mov dword [ebp - 0x110], eax
mov ecx, dword [ebp - 0x234]
mov edx, dword [ecx + 0xc]
mov dword [ebp - 0x214], edx
mov eax, dword [ebp - 0x234]
mov ecx, dword [eax + 0x10]
mov dword [ebp - 0x220], ecx
mov edx, dword [ebp - 0x234]
mov eax, dword [edx + 0x14]
mov dword [ebp - 4], eax
mov ecx, dword [ebp - 0x234]
mov edx, dword [ecx + 0x18]
mov dword [ebp - 0x218], edx
mov eax, dword [ebp - 0x234]
mov ecx, dword [eax + 0x1c]
mov dword [ebp - 0x22c], ecx
mov edx, dword [ebp - 0x234]
mov eax, dword [edx + 0x20]
mov dword [ebp - 8], eax
mov dword [ebp - 0x230], 0
jmp 0x403b48
mov ecx, dword [ebp - 0x230]
add ecx, 1
mov dword [ebp - 0x230], ecx
cmp dword [ebp - 0x230], 0x40
jae 0x403c96
mov edx, dword [ebp - 4]
shr edx, 6
mov eax, dword [ebp - 4]
shl eax, 0x1a
or edx, eax
mov ecx, dword [ebp - 4]
shr ecx, 0xb
mov eax, dword [ebp - 4]
shl eax, 0x15
or ecx, eax
xor edx, ecx
mov ecx, dword [ebp - 4]
shr ecx, 0x19
mov eax, dword [ebp - 4]
shl eax, 7
or ecx, eax
xor edx, ecx
add edx, dword [ebp - 8]
mov ecx, dword [ebp - 4]
and ecx, dword [ebp - 0x218]
mov eax, dword [ebp - 4]
not eax
and eax, dword [ebp - 0x22c]
xor ecx, eax
add edx, ecx
mov ecx, dword [ebp - 0x230]
add edx, dword [ebp + ecx*4 - 0x210]
mov eax, dword [ebp - 0x230]
add edx, dword [ebp + eax*4 - 0x108]
mov dword [ebp - 0x228], edx
mov ecx, dword [ebp - 0x21c]
shr ecx, 2
mov edx, dword [ebp - 0x21c]
shl edx, 0x1e
or ecx, edx
mov eax, dword [ebp - 0x21c]
shr eax, 0xd
mov edx, dword [ebp - 0x21c]
shl edx, 0x13
or eax, edx
xor ecx, eax
mov eax, dword [ebp - 0x21c]
shr eax, 0x16
mov edx, dword [ebp - 0x21c]
shl edx, 0xa
or eax, edx
xor ecx, eax
mov eax, dword [ebp - 0x21c]
and eax, dword [ebp - 0x110]
mov edx, dword [ebp - 0x21c]
and edx, dword [ebp - 0x214]
xor eax, edx
mov edx, dword [ebp - 0x110]
and edx, dword [ebp - 0x214]
xor eax, edx
add ecx, eax
mov dword [ebp - 0x224], ecx
mov eax, dword [ebp - 0x22c]
mov dword [ebp - 8], eax
mov ecx, dword [ebp - 0x218]
mov dword [ebp - 0x22c], ecx
mov edx, dword [ebp - 4]
mov dword [ebp - 0x218], edx
mov eax, dword [ebp - 0x220]
add eax, dword [ebp - 0x228]
mov dword [ebp - 4], eax
mov ecx, dword [ebp - 0x214]
mov dword [ebp - 0x220], ecx
mov edx, dword [ebp - 0x110]
mov dword [ebp - 0x214], edx
mov eax, dword [ebp - 0x21c]
mov dword [ebp - 0x110], eax
mov ecx, dword [ebp - 0x228]
add ecx, dword [ebp - 0x224]
mov dword [ebp - 0x21c], ecx
jmp 0x403b39
mov edx, dword [ebp - 0x234]
mov eax, dword [edx + 4]
add eax, dword [ebp - 0x21c]
mov ecx, dword [ebp - 0x234]
mov dword [ecx + 4], eax
mov edx, dword [ebp - 0x234]
mov eax, dword [edx + 8]
add eax, dword [ebp - 0x110]
mov ecx, dword [ebp - 0x234]
mov dword [ecx + 8], eax
mov edx, dword [ebp - 0x234]
mov eax, dword [edx + 0xc]
add eax, dword [ebp - 0x214]
mov ecx, dword [ebp - 0x234]
mov dword [ecx + 0xc], eax
mov edx, dword [ebp - 0x234]
mov eax, dword [edx + 0x10]
add eax, dword [ebp - 0x220]
mov ecx, dword [ebp - 0x234]
mov dword [ecx + 0x10], eax
mov edx, dword [ebp - 0x234]
mov eax, dword [edx + 0x14]
add eax, dword [ebp - 4]
mov ecx, dword [ebp - 0x234]
mov dword [ecx + 0x14], eax
mov edx, dword [ebp - 0x234]
mov eax, dword [edx + 0x18]
add eax, dword [ebp - 0x218]
mov ecx, dword [ebp - 0x234]
mov dword [ecx + 0x18], eax
mov edx, dword [ebp - 0x234]
mov eax, dword [edx + 0x1c]
add eax, dword [ebp - 0x22c]
mov ecx, dword [ebp - 0x234]
mov dword [ecx + 0x1c], eax
mov edx, dword [ebp - 0x234]
mov eax, dword [edx + 0x20]
add eax, dword [ebp - 8]
mov ecx, dword [ebp - 0x234]
mov dword [ecx + 0x20], eax
mov edx, dword [ebp - 0x234]
mov word [edx + 0x2c], 0
pop esi
mov esp, ebp
pop ebp
ret