Function at 0x401a40
Capabilities:
Encode data using xor
Encrypt data using hc-128
Hash data using sha256
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x21c
push ebx
push esi
mov esi, dword [esp + 0x228]
push edi
mov edi, 7
cmp edi, 7
jne 0x401a6a
mov eax, dword [esp + 0x234]
lea edx, [eax*8]
jmp 0x401a95
test edi, edi
je 0x401a93
cmp edi, 1
je 0x401a93
cmp edi, 2
je 0x401a93
lea ecx, [edi*8]
mov edx, ecx
mov ecx, 0x35
sub ecx, edx
mov edx, dword [esp + 0x234]
shr edx, cl
jmp 0x401a95
xor edx, edx
xor eax, eax
and edx, 0xff
mov al, byte [esi + edi + 0x80]
add eax, edx
cmp eax, 0xff
jle 0x401ace
lea eax, [edi - 1]
test eax, eax
jl 0x401ace
mov cl, byte [esi + eax + 0x80]
mov bl, cl
inc bl
cmp cl, 0xff
mov byte [esi + eax + 0x80], bl
jne 0x401ace
dec eax
jns 0x401ab4
mov cl, byte [esi + edi + 0x80]
add cl, dl
mov byte [esi + edi + 0x80], cl
dec edi
jns 0x401a55
mov ebx, dword [esp + 0x234]
test ebx, ebx
jbe 0x40200e
push ebp
mov ebp, dword [esp + 0x234]
xor ecx, ecx
xor edx, edx
mov cl, byte [esi + 0x87]
mov dl, byte [esi + 0x86]
mov edi, ecx
shr edi, 3
and edx, reloc.WSOCK32.dll_accept
jns 0x401b1e
dec edx
or edx, 0xfffffffe
inc edx
shl edx, 5
mov eax, ebx
sub edi, edx
and eax, 0x3f
sub edi, eax
and edi, 0x3f
test ebx, ebx
jbe 0x401b7e
cmp edi, 0x40
jge 0x401b70
mov eax, edi
cdq
and edx, 3
add eax, edx
mov edx, edi
sar eax, 2
and edx, reloc.WSOCK32.dll_closesocket
lea eax, [esi + eax*4 + 0x20]
jns 0x401b54
dec edx
or edx, 0xfffffffc
inc edx
mov ecx, 3
sub ecx, edx
xor edx, edx
mov dl, byte [ebp]
shl ecx, 3
shl edx, cl
mov ecx, dword [eax]
or ecx, edx
inc ebp
inc edi
dec ebx
mov dword [eax], ecx
jne 0x401b31
mov dword [esp + 0x238], ebx
mov dword [esp + 0x234], ebp
cmp edi, 0x40
jne 0x402005
mov dword [esp + 0x2c], 0x428a2f98
mov dword [esp + 0x30], 0x71374491
mov dword [esp + 0x34], 0xb5c0fbcf
mov dword [esp + 0x38], 0xe9b5dba5
mov dword [esp + 0x3c], 0x3956c25b
mov dword [esp + 0x40], 0x59f111f1
mov dword [esp + 0x44], 0x923f82a4
mov dword [esp + 0x48], 0xab1c5ed5
mov dword [esp + 0x4c], 0xd807aa98
mov dword [esp + 0x50], 0x12835b01
mov dword [esp + 0x54], 0x243185be
mov dword [esp + 0x58], 0x550c7dc3
mov dword [esp + 0x5c], 0x72be5d74
mov dword [esp + 0x60], 0x80deb1fe
mov dword [esp + 0x64], 0x9bdc06a7
mov dword [esp + 0x68], 0xc19bf174
mov dword [esp + 0x6c], 0xe49b69c1
mov dword [esp + 0x70], 0xefbe4786
mov dword [esp + 0x74], 0xfc19dc6
mov dword [esp + 0x78], 0x240ca1cc
mov dword [esp + 0x7c], 0x2de92c6f
mov dword [esp + 0x80], 0x4a7484aa
mov dword [esp + 0x84], 0x5cb0a9dc
mov dword [esp + 0x88], 0x76f988da
mov dword [esp + 0x8c], 0x983e5152
mov dword [esp + 0x90], 0xa831c66d
mov dword [esp + 0x94], 0xb00327c8
mov dword [esp + 0x98], 0xbf597fc7
mov dword [esp + 0x9c], 0xc6e00bf3
mov dword [esp + 0xa0], 0xd5a79147
mov dword [esp + 0xa4], 0x6ca6351
mov dword [esp + 0xa8], 0x14292967
mov dword [esp + 0xac], 0x27b70a85
mov dword [esp + 0xb0], 0x2e1b2138
mov dword [esp + 0xb4], 0x4d2c6dfc
mov dword [esp + 0xb8], 0x53380d13
mov dword [esp + 0xbc], 0x650a7354
mov dword [esp + 0xc0], 0x766a0abb
mov dword [esp + 0xc4], 0x81c2c92e
mov dword [esp + 0xc8], 0x92722c85
mov dword [esp + 0xcc], 0xa2bfe8a1
mov dword [esp + 0xd0], 0xa81a664b
mov dword [esp + 0xd4], 0xc24b8b70
mov dword [esp + 0xd8], 0xc76c51a3
mov dword [esp + 0xdc], 0xd192e819
mov dword [esp + 0xe0], 0xd6990624
mov dword [esp + 0xe4], 0xf40e3585
mov dword [esp + 0xe8], 0x106aa070
mov dword [esp + 0xec], 0x19a4c116
mov dword [esp + 0xf0], 0x1e376c08
mov dword [esp + 0xf4], 0x2748774c
mov dword [esp + 0xf8], 0x34b0bcb5
mov dword [esp + 0xfc], 0x391c0cb3
mov dword [esp + 0x100], 0x4ed8aa4a
mov dword [esp + 0x104], 0x5b9cca4f
mov dword [esp + 0x108], 0x682e6ff3
mov dword [esp + 0x10c], 0x748f82ee
mov dword [esp + 0x110], 0x78a5636f
mov dword [esp + 0x114], 0x84c87814
mov dword [esp + 0x118], 0x8cc70208
mov dword [esp + 0x11c], 0x90befffa
mov dword [esp + 0x120], 0xa4506ceb
mov dword [esp + 0x124], 0xbef9a3f7
mov dword [esp + 0x128], 0xc67178f2
lea ecx, [esp + 0x12c]
lea eax, [esi + 0x20]
mov edx, 0x10
mov edi, dword [eax]
mov dword [eax], 0
mov dword [ecx], edi
add ecx, 4
add eax, 4
dec edx
jne 0x401e17
lea edx, [esp + 0x164]
mov dword [esp + 0x10], 0x30
mov ecx, dword [edx]
mov eax, dword [edx - 0x34]
mov edi, ecx
mov ebx, ecx
shr edi, 0x11
shl ebx, 0xf
or edi, ebx
mov ebx, ecx
mov ebp, ecx
add edx, 4
shr ebx, 0x13
shl ebp, 0xd
or ebx, ebp
mov ebp, eax
xor edi, ebx
mov ebx, eax
shr ecx, 0xa
xor edi, ecx
mov ecx, eax
shr ecx, 0x12
shl ebx, 0xe
or ecx, ebx
mov ebx, eax
shl ebx, 0x19
shr ebp, 7
or ebx, ebp
mov ebp, dword [edx - 0x3c]
xor ecx, ebx
mov ebx, dword [edx - 0x18]
shr eax, 3
xor ecx, eax
mov eax, dword [esp + 0x10]
add edi, ecx
add edi, ebp
add edi, ebx
dec eax
mov dword [edx + 4], edi
mov dword [esp + 0x10], eax
jne 0x401e39
mov eax, dword [esi + 0x64]
mov ebx, dword [esi + 0x78]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x68]
mov dword [esp + 0x20], eax
mov eax, dword [esi + 0x6c]
mov edx, dword [esi + 0x60]
mov ecx, dword [esi + 0x70]
mov dword [esp + 0x1c], eax
mov eax, dword [esi + 0x74]
mov dword [esp + 0x18], eax
mov eax, dword [esi + 0x7c]
mov dword [esp + 0x28], ebx
mov dword [esp + 0x10], eax
mov dword [esp + 0x24], 0
mov eax, ecx
mov edi, ecx
shl eax, 0x15
shr edi, 0xb
or eax, edi
mov edi, ecx
mov ebp, ecx
shl edi, 0x1a
shr ebp, 6
or edi, ebp
mov ebp, ecx
xor eax, edi
mov edi, ecx
shr edi, 0x19
shl ebp, 7
or edi, ebp
xor eax, edi
mov edi, ecx
not edi
and edi, ebx
mov ebx, dword [esp + 0x18]
and ebx, ecx
xor edi, ebx
add eax, edi
mov edi, dword [esp + 0x24]
mov ebp, dword [esp + edi + 0x12c]
mov ebx, dword [esp + edi + 0x2c]
add eax, ebp
mov ebp, dword [esp + 0x10]
add eax, ebx
mov edi, edx
mov ebx, edx
add eax, ebp
shl edi, 0x13
shr ebx, 0xd
or edi, ebx
mov ebx, edx
mov ebp, edx
shr ebx, 0x16
shl ebp, 0xa
or ebx, ebp
mov ebp, edx
xor edi, ebx
mov ebx, edx
shl ebx, 0x1e
shr ebp, 2
or ebx, ebp
mov ebp, dword [esp + 0x20]
xor edi, ebx
mov ebx, dword [esp + 0x14]
xor ebx, edx
and ebx, ebp
mov ebp, dword [esp + 0x14]
and ebp, edx
xor ebx, ebp
mov ebp, dword [esp + 0x20]
add edi, ebx
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0x14]
mov dword [esp + 0x14], edx
add ecx, eax
lea edx, [edi + eax]
mov eax, dword [esp + 0x24]
add eax, 4
mov dword [esp + 0x28], ebx
cmp eax, 0x100
mov dword [esp + 0x20], ebp
mov dword [esp + 0x24], eax
jl 0x401ed1
mov eax, dword [esi + 0x60]
add eax, edx
mov edx, dword [esp + 0x14]
mov dword [esi + 0x60], eax
mov eax, dword [esi + 0x64]
add eax, edx
mov edx, dword [esp + 0x1c]
mov dword [esi + 0x64], eax
mov eax, dword [esi + 0x68]
add eax, ebp
mov ebp, dword [esp + 0x234]
mov dword [esi + 0x68], eax
mov eax, dword [esi + 0x6c]
add eax, edx
mov edx, dword [esp + 0x10]
mov dword [esi + 0x6c], eax
mov eax, dword [esi + 0x70]
add eax, ecx
mov ecx, dword [esp + 0x18]
mov dword [esi + 0x70], eax
mov eax, dword [esi + 0x74]
add eax, ecx
mov dword [esi + 0x74], eax
mov eax, dword [esi + 0x78]
add eax, ebx
mov ebx, dword [esp + 0x238]
mov dword [esi + 0x78], eax
mov eax, dword [esi + 0x7c]
add eax, edx
mov dword [esi + 0x7c], eax
test ebx, ebx
ja 0x401afc
pop ebp
pop edi
pop esi
pop ebx
add esp, 0x21c
ret 0xc