Function at 0x401000
Capabilities:
Encode data using xor
Hash data with md5
Read file on windows

Disassembly:
mov eax, dword [0x405178]
sub esp, 0x38
test eax, eax
jne 0x40101e
push 0x1040
call sub.MFC42.DLL_operatornew
add esp, 4
mov dword [0x405178], eax
push ebx
push ebp
push esi
push edi
mov dword [esp + 0x14], eax
mov ebp, 0x67452301
mov ebx, 0xefcdab89
mov edi, 0x98badcfe
mov esi, 0x10325476
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x14]
push eax
push 0x1000
push 1
push ecx
call dword [sym.imp.MSVCRT.dll_fread]
mov edx, dword [esp + 0x20]
add esp, 0x10
add edx, eax
cmp eax, 0x1000
mov dword [esp + 0x34], eax
mov dword [esp + 0x10], edx
jne 0x40107b
mov edx, dword [esp + 0x14]
mov dword [esp + 0x18], eax
jmp 0x4010c5
mov edx, dword [esp + 0x14]
inc eax
mov ecx, eax
mov byte [eax + edx - 1], 0x80
and ecx, 0x3f
cmp cl, 0x38
je 0x40109e
mov byte [eax + edx], 0
inc eax
mov ecx, eax
and ecx, 0x3f
cmp cl, 0x38
jne 0x40108f
mov ecx, dword [esp + 0x10]
add eax, 4
shl ecx, 3
mov dword [eax + edx - 4], ecx
mov ecx, dword [esp + 0x10]
shr ecx, 0x1d
mov dword [eax + edx], ecx
add eax, 4
test eax, eax
mov dword [esp + 0x18], eax
jbe 0x4019bf
mov eax, 0xffffffc8
lea ecx, [edx + 0x38]
sub eax, edx
mov dword [esp + 0x30], eax
mov edx, ebx
mov eax, edi
not edx
and eax, ebx
and edx, esi
or edx, eax
mov eax, dword [ecx - 0x38]
add edx, eax
mov dword [esp + 0x20], ebp
mov dword [esp + 0x2c], esi
mov dword [esp + 0x28], edi
lea ebp, [edx + ebp - 0x28955b88]
mov dword [esp + 0x24], ebx
mov edx, ebp
shr edx, 0x19
shl ebp, 7
or edx, ebp
mov ebp, ebx
add edx, ebx
mov eax, edx
and ebp, edx
not eax
and eax, edi
or eax, ebp
mov ebp, dword [ecx - 0x34]
add eax, ebp
lea eax, [esi + eax - 0x173848aa]
mov esi, eax
shr esi, 0x14
shl eax, 0xc
or esi, eax
add esi, edx
mov eax, esi
mov ebp, esi
not eax
and eax, ebx
and ebp, edx
or eax, ebp
mov ebp, dword [ecx - 0x30]
add eax, ebp
mov ebp, esi
lea eax, [edi + eax + 0x242070db]
mov edi, eax
shr edi, 0xf
shl eax, 0x11
or edi, eax
add edi, esi
mov eax, edi
and ebp, edi
not eax
and eax, edx
or eax, ebp
mov ebp, dword [ecx - 0x2c]
add eax, ebp
mov ebp, edi
lea ebx, [ebx + eax - 0x3e423112]
mov eax, ebx
shl eax, 0x16
shr ebx, 0xa
or eax, ebx
mov ebx, dword [ecx - 0x28]
add eax, edi
mov dword [esp + 0x3c], eax
and ebp, dword [esp + 0x3c]
not eax
and eax, esi
or eax, ebp
add eax, ebx
lea edx, [edx + eax - 0xa83f051]
mov eax, dword [esp + 0x3c]
mov ebx, edx
mov ebp, eax
shr ebx, 0x19
shl edx, 7
or ebx, edx
add ebx, eax
mov edx, ebx
and ebp, ebx
not edx
and edx, edi
or edx, ebp
add edx, dword [ecx - 0x24]
lea esi, [esi + edx + 0x4787c62a]
mov edx, esi
shr edx, 0x14
shl esi, 0xc
or edx, esi
add edx, ebx
mov esi, edx
mov ebp, edx
not esi
and esi, eax
and ebp, ebx
or esi, ebp
mov ebp, dword [ecx - 0x20]
add esi, ebp
mov ebp, edx
lea edi, [edi + esi - 0x57cfb9ed]
mov esi, edi
shr esi, 0xf
shl edi, 0x11
or esi, edi
add esi, edx
mov edi, esi
and ebp, esi
not edi
and edi, ebx
or edi, ebp
mov ebp, dword [ecx - 0x1c]
add edi, ebp
mov ebp, esi
lea edi, [eax + edi - 0x2b96aff]
mov eax, edi
shl eax, 0x16
shr edi, 0xa
or eax, edi
mov edi, dword [ecx - 0x18]
add eax, esi
mov dword [esp + 0x3c], eax
and ebp, dword [esp + 0x3c]
not eax
and eax, edx
or eax, ebp
add eax, edi
lea ebx, [ebx + eax + 0x698098d8]
mov eax, dword [esp + 0x3c]
mov edi, ebx
mov ebp, eax
shr edi, 0x19
shl ebx, 7
or edi, ebx
add edi, eax
mov ebx, edi
and ebp, edi
not ebx
and ebx, esi
or ebx, ebp
mov ebp, dword [ecx - 0x14]
add ebx, ebp
lea edx, [edx + ebx - 0x74bb0851]
mov ebx, edx
shr ebx, 0x14
shl edx, 0xc
or ebx, edx
add ebx, edi
mov edx, ebx
mov ebp, ebx
not edx
and edx, eax
and ebp, edi
or edx, ebp
mov ebp, dword [ecx - 0x10]
add edx, ebp
lea esi, [esi + edx - 0xa44f]
mov edx, esi
shr edx, 0xf
shl esi, 0x11
or edx, esi
add edx, ebx
mov esi, edx
not esi
mov ebp, ebx
and esi, edi
and ebp, edx
or esi, ebp
mov ebp, dword [ecx - 0xc]
add esi, ebp
mov ebp, edx
lea esi, [eax + esi - 0x76a32842]
mov eax, esi
shl eax, 0x16
shr esi, 0xa
or eax, esi
mov esi, dword [ecx - 8]
add eax, edx
mov dword [esp + 0x3c], eax
and ebp, dword [esp + 0x3c]
not eax
and eax, ebx
or eax, ebp
mov ebp, dword [esp + 0x3c]
add eax, esi
lea edi, [edi + eax + 0x6b901122]
mov esi, edi
shr esi, 0x19
shl edi, 7
or esi, edi
mov edi, ebp
add esi, ebp
mov eax, esi
and edi, esi
not eax
and eax, edx
or eax, edi
mov edi, dword [ecx - 4]
add eax, edi
lea ebx, [ebx + eax - 0x2678e6d]
mov edi, ebx
shr edi, 0x14
shl ebx, 0xc
or edi, ebx
add edi, esi
mov eax, edi
not eax
mov ebx, eax
and ebx, ebp
mov ebp, edi
and ebp, esi
or ebx, ebp
mov ebp, dword [ecx]
add ebx, ebp
mov ebp, edi
lea edx, [edx + ebx - 0x5986bc72]
mov ebx, edx
shr ebx, 0xf
shl edx, 0x11
or ebx, edx
add ebx, edi
mov edx, ebx
and ebp, ebx
not edx
mov dword [esp + 0x1c], edx
and edx, esi
or ebp, edx
mov edx, dword [ecx + 4]
add ebp, edx
mov edx, dword [esp + 0x3c]
and eax, ebx
lea ebp, [edx + ebp + 0x49b40821]
mov edx, ebp
shl edx, 0x16
shr ebp, 0xa
or edx, ebp
mov ebp, edi
add edx, ebx
and ebp, edx
or eax, ebp
mov ebp, dword [ecx - 0x34]
add eax, ebp
lea esi, [esi + eax - 0x9e1da9e]
mov eax, esi
shr eax, 0x1b
shl esi, 5
or eax, esi
mov esi, dword [esp + 0x1c]
add eax, edx
mov ebp, ebx
and ebp, eax
and esi, edx
or ebp, esi
mov esi, dword [ecx - 0x20]
add ebp, esi
lea edi, [edi + ebp - 0x3fbf4cc0]
mov esi, edi
shr esi, 0x17
shl edi, 9
or esi, edi
mov edi, edx
add esi, eax
not edi
mov ebp, esi
and edi, eax
and ebp, edx
or edi, ebp
mov ebp, dword [ecx - 0xc]
add edi, ebp
lea ebx, [ebx + edi + 0x265e5a51]
mov edi, ebx
shr edi, 0x12
shl ebx, 0xe
or edi, ebx
mov ebx, eax
add edi, esi
not ebx
mov ebp, edi
and ebx, esi
and ebp, eax
or ebx, ebp
mov ebp, dword [ecx - 0x38]
add ebx, ebp
mov ebp, esi
lea edx, [edx + ebx - 0x16493856]
mov ebx, edx
shl ebx, 0x14
shr edx, 0xc
or ebx, edx
mov edx, esi
add ebx, edi
not edx
and edx, edi
and ebp, ebx
or edx, ebp
mov ebp, dword [ecx - 0x24]
add edx, ebp
lea eax, [eax + edx - 0x29d0efa3]
mov edx, eax
shr edx, 0x1b
shl eax, 5
or edx, eax
mov eax, edi
add edx, ebx
mov dword [esp + 0x38], edx
mov ebp, dword [esp + 0x38]
not eax
mov edx, edi
and eax, ebx
and edx, ebp
or eax, edx
mov edx, dword [ecx - 0x10]
add eax, edx
mov edx, ebx
not edx
lea esi, [esi + eax + 0x2441453]
mov eax, esi
shr eax, 0x17
shl esi, 9
or eax, esi
mov esi, ebp
add eax, esi
and edx, esi
mov ebp, eax
and ebp, ebx
or edx, ebp
mov ebp, dword [ecx + 4]
add edx, ebp
mov ebp, dword [esp + 0x38]
not esi
lea edi, [edi + edx - 0x275e197f]
and esi, eax
mov edx, edi
shr edx, 0x12
shl edi, 0xe
or edx, edi
add edx, eax
mov edi, edx
and edi, ebp
or esi, edi
mov edi, dword [ecx - 0x28]
add esi, edi
mov edi, eax
not edi
lea ebx, [ebx + esi - 0x182c0438]
and edi, edx
mov esi, ebx
shl esi, 0x14
shr ebx, 0xc
or esi, ebx
mov ebx, eax
add esi, edx
and ebx, esi
or edi, ebx
mov ebx, dword [ecx - 0x14]
add edi, ebx
mov ebx, ebp
lea ebx, [ebx + edi + 0x21e1cde6]
mov edi, ebx
shr edi, 0x1b
shl ebx, 5
or edi, ebx
mov ebx, edx
add edi, esi
mov dword [esp + 0x38], edi
mov ebp, dword [esp + 0x38]
mov edi, edx
and ebx, ebp
mov ebp, dword [ecx]
not edi
and edi, esi
or edi, ebx
mov ebx, dword [esp + 0x38]
add edi, ebp
lea eax, [eax + edi - 0x3cc8f82a]
mov edi, eax
shr edi, 0x17
shl eax, 9
or edi, eax
mov eax, esi
add edi, ebx
not eax
mov ebp, edi
and eax, ebx
and ebp, esi
or eax, ebp
mov ebp, dword [ecx - 0x2c]
add eax, ebp
mov ebp, dword [esp + 0x38]
not ebx
lea edx, [edx + eax - 0xb2af279]
and ebx, edi
mov eax, edx
shr eax, 0x12
shl edx, 0xe
or eax, edx
add eax, edi
mov edx, eax
and edx, ebp
mov ebp, dword [ecx - 0x18]
or ebx, edx
add ebx, ebp
lea esi, [esi + ebx + 0x455a14ed]
mov edx, esi
shl edx, 0x14
shr esi, 0xc
or edx, esi
mov esi, edi
add edx, eax
not esi
mov ebx, edi
and esi, eax
and ebx, edx
or esi, ebx
mov ebx, dword [ecx - 4]
add esi, ebx
mov ebx, dword [esp + 0x38]
lea ebx, [ebx + esi - 0x561c16fb]
mov esi, ebx
shr esi, 0x1b
shl ebx, 5
or esi, ebx
mov ebx, eax
add esi, edx
mov dword [esp + 0x38], esi
and ebx, dword [esp + 0x38]
mov esi, eax
not esi
and esi, edx
or esi, ebx
mov ebx, dword [ecx - 0x30]
add esi, ebx
mov ebx, edx
not ebx
lea edi, [edi + esi - 0x3105c08]
mov esi, edi
shr esi, 0x17
shl edi, 9
or esi, edi
mov edi, dword [esp + 0x38]
add esi, edi
and ebx, edi
mov edi, esi
and edi, edx
or ebx, edi
mov edi, dword [ecx - 0x1c]
add ebx, edi
lea eax, [eax + ebx + 0x676f02d9]
mov edi, eax
shr edi, 0x12
shl eax, 0xe
or edi, eax
mov eax, dword [esp + 0x38]
add edi, esi
mov ebx, edi
and ebx, dword [esp + 0x38]
not eax
and eax, esi
or eax, ebx
mov ebx, dword [ecx - 8]
add eax, ebx
mov ebx, dword [ecx - 0x24]
lea edx, [edx + eax - 0x72d5b376]
mov eax, edx
shl eax, 0x14
shr edx, 0xc
or eax, edx
mov edx, esi
add eax, edi
xor edx, edi
xor edx, eax
add edx, ebx
mov ebx, dword [esp + 0x38]
lea ebx, [ebx + edx - 0x5c6be]
mov edx, ebx
shr edx, 0x1c
shl ebx, 4
or edx, ebx
mov ebx, edi
add edx, eax
xor ebx, eax
xor ebx, edx
add ebx, ebp
lea esi, [esi + ebx - 0x788e097f]
mov ebx, esi
shr ebx, 0x15
shl esi, 0xb
or ebx, esi
mov ebp, dword [ecx - 0xc]
add ebx, edx
mov esi, ebx
xor esi, eax
xor esi, edx
add esi, ebp
lea edi, [edi + esi + 0x6d9d6122]
mov ebp, edi
shr ebp, 0x10
shl edi, 0x10
or ebp, edi
mov edi, ebx
add ebp, ebx
xor edi, ebp
mov esi, edi
xor esi, edx
add esi, dword [ecx]
lea eax, [eax + esi - 0x21ac7f4]
mov esi, eax
shl esi, 0x17
shr eax, 9
or esi, eax
mov eax, dword [ecx - 0x34]
add esi, ebp
xor edi, esi
add edi, eax
lea edx, [edx + edi - 0x5b4115bc]
mov edi, dword [ecx - 0x28]
mov eax, edx
shr eax, 0x1c
shl edx, 4
or eax, edx
mov edx, ebp
add eax, esi
xor edx, esi
xor edx, eax
add edx, edi
lea ebx, [ebx + edx + 0x4bdecfa9]
mov edi, ebx
shr edi, 0x15
shl ebx, 0xb
or edi, ebx
mov ebx, dword [ecx - 0x1c]
add edi, eax
mov edx, edi
xor edx, esi
xor edx, eax
add edx, ebx
lea ebp, [edx + ebp - 0x944b4a0]
mov ebx, ebp
shr ebx, 0x10
shl ebp, 0x10
or ebx, ebp
mov ebp, edi
add ebx, edi
xor ebp, ebx
mov edx, ebp
xor edx, eax
add edx, dword [ecx - 0x10]
lea esi, [esi + edx - 0x41404390]
mov edx, esi
shl edx, 0x17
shr esi, 9
or edx, esi
mov esi, dword [ecx - 4]
add edx, ebx
xor ebp, edx
add ebp, esi
lea esi, [eax + ebp + 0x289b7ec6]
mov ebp, dword [ecx - 0x38]
mov eax, esi
shr eax, 0x1c
shl esi, 4
or eax, esi
mov esi, ebx
add eax, edx
xor esi, edx
xor esi, eax
add esi, ebp
lea edi, [edi + esi - 0x155ed806]
mov esi, edi
shr esi, 0x15
shl edi, 0xb
or esi, edi
mov ebp, dword [ecx - 0x2c]
add esi, eax
mov edi, esi
xor edi, edx
xor edi, eax
add edi, ebp
lea ebx, [ebx + edi - 0x2b10cf7b]
mov edi, ebx
shr edi, 0x10
shl ebx, 0x10
or edi, ebx
mov ebx, esi
add edi, esi
xor ebx, edi
mov ebp, ebx
xor ebp, eax
add ebp, dword [ecx - 0x20]
lea ebp, [edx + ebp + 0x4881d05]
mov edx, ebp
shl edx, 0x17
shr ebp, 9
or edx, ebp
mov ebp, dword [ecx - 0x14]
add edx, edi
xor ebx, edx
add ebx, ebp
mov ebp, dword [ecx - 8]
lea ebx, [eax + ebx - 0x262b2fc7]
mov eax, ebx
shr eax, 0x1c
shl ebx, 4
or eax, ebx
mov ebx, edi
add eax, edx
xor ebx, edx
xor ebx, eax
add ebx, ebp
mov ebp, dword [ecx + 4]
lea ebx, [esi + ebx - 0x1924661b]
mov esi, ebx
shr esi, 0x15
shl ebx, 0xb
or esi, ebx
add esi, eax
mov ebx, esi
xor ebx, edx
xor ebx, eax
add ebx, ebp
mov ebp, dword [ecx - 0x30]
lea ebx, [edi + ebx + 0x1fa27cf8]
mov edi, ebx
shr edi, 0x10
shl ebx, 0x10
or edi, ebx
mov ebx, esi
add edi, esi
xor ebx, edi
xor ebx, eax
add ebx, ebp
mov ebp, dword [ecx - 0x38]
lea edx, [edx + ebx - 0x3b53a99b]
mov ebx, edx
shl ebx, 0x17
shr edx, 9
or ebx, edx
mov edx, esi
add ebx, edi
not edx
or edx, ebx
xor edx, edi
add edx, ebp
lea eax, [eax + edx - 0xbd6ddbc]
mov edx, eax
shr edx, 0x1a
shl eax, 6
or edx, eax
mov eax, edi
add edx, ebx
mov ebp, dword [ecx - 0x1c]
not eax
or eax, edx
xor eax, ebx
add eax, ebp
mov ebp, dword [ecx]
lea esi, [esi + eax + 0x432aff97]
mov eax, esi
shr eax, 0x16
shl esi, 0xa
or eax, esi
mov esi, ebx
add eax, edx
not esi
or esi, eax
xor esi, edx
add esi, ebp
mov ebp, dword [ecx - 0x24]
lea edi, [edi + esi - 0x546bdc59]
mov esi, edi
shr esi, 0x11
shl edi, 0xf
or esi, edi
mov edi, edx
add esi, eax
not edi
or edi, esi
xor edi, eax
add edi, ebp
mov ebp, dword [ecx - 8]
lea ebx, [ebx + edi - 0x36c5fc7]
mov edi, ebx
shl edi, 0x15
shr ebx, 0xb
or edi, ebx
mov ebx, eax
add edi, esi
not ebx
or ebx, edi
xor ebx, esi
add ebx, ebp
mov ebp, dword [ecx - 0x2c]
lea ebx, [edx + ebx + 0x655b59c3]
mov edx, ebx
shr edx, 0x1a
shl ebx, 6
or edx, ebx
mov ebx, esi
add edx, edi
not ebx
or ebx, edx
xor ebx, edi
add ebx, ebp
mov ebp, dword [ecx - 0x10]
lea ebx, [eax + ebx - 0x70f3336e]
mov eax, ebx
shr eax, 0x16
shl ebx, 0xa
or eax, ebx
mov ebx, edi
add eax, edx
not ebx
or ebx, eax
xor ebx, edx
add ebx, ebp
mov ebp, dword [ecx - 0x34]
lea ebx, [esi + ebx - 0x100b83]
mov esi, ebx
shr esi, 0x11
shl ebx, 0xf
or esi, ebx
mov ebx, edx
add esi, eax
not ebx
or ebx, esi
xor ebx, eax
add ebx, ebp
lea ebx, [edi + ebx - 0x7a7ba22f]
mov edi, ebx
shl edi, 0x15
shr ebx, 0xb
mov ebp, dword [ecx - 0x18]
or edi, ebx
mov ebx, eax
add edi, esi
not ebx
or ebx, edi
xor ebx, esi
add ebx, ebp
mov ebp, dword [ecx + 4]
lea ebx, [edx + ebx + 0x6fa87e4f]
mov edx, ebx
shl ebx, 6
shr edx, 0x1a
or edx, ebx
mov ebx, esi
add edx, edi
not ebx
or ebx, edx
xor ebx, edi
add ebx, ebp
mov ebp, dword [ecx - 0x20]
lea ebx, [eax + ebx - 0x1d31920]
mov eax, ebx
shr eax, 0x16
shl ebx, 0xa
or eax, ebx
mov ebx, edi
add eax, edx
not ebx
or ebx, eax
xor ebx, edx
add ebx, ebp
mov ebp, dword [ecx - 4]
lea ebx, [esi + ebx - 0x5cfebcec]
mov esi, ebx
shr esi, 0x11
shl ebx, 0xf
or esi, ebx
mov ebx, edx
add esi, eax
not ebx
or ebx, esi
xor ebx, eax
add ebx, ebp
mov ebp, dword [ecx - 0x28]
lea ebx, [edi + ebx + 0x4e0811a1]
mov edi, ebx
shl edi, 0x15
shr ebx, 0xb
or edi, ebx
mov ebx, eax
add edi, esi
not ebx
or ebx, edi
xor ebx, esi
add ebx, ebp
lea edx, [edx + ebx - 0x8ac817e]
mov ebx, edx
shr ebx, 0x1a
shl edx, 6
or ebx, edx
mov edx, esi
mov ebp, ebx
mov ebx, dword [ecx - 0xc]
add ebp, edi
not edx
or edx, ebp
xor edx, edi
add edx, ebx
mov ebx, dword [ecx - 0x30]
lea eax, [eax + edx - 0x42c50dcb]
mov edx, eax
shr edx, 0x16
shl eax, 0xa
or eax, edx
mov edx, edi
add eax, ebp
not edx
or edx, eax
xor edx, ebp
add edx, ebx
lea esi, [esi + edx + 0x2ad7d2bb]
mov ebx, dword [ecx - 0x14]
mov edx, esi
add ecx, 0x40
shr edx, 0x11
shl esi, 0xf
or edx, esi
mov esi, ebp
add edx, eax
not esi
or esi, edx
xor esi, eax
add esi, ebx
lea edi, [edi + esi - 0x14792c6f]
mov esi, edi
shl esi, 0x15
shr edi, 0xb
or esi, edi
mov edi, dword [esp + 0x24]
mov ebx, esi
mov esi, dword [esp + 0x20]
add ebx, edx
add ebp, esi
mov esi, dword [esp + 0x28]
add ebx, edi
mov edi, dword [esp + 0x2c]
add edx, esi
add eax, edi
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x18]
mov edi, dword [esp + 0x40]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x30]
mov esi, dword [esp + 0x44]
add eax, ecx
cmp eax, edx
jb 0x4010d3
cmp dword [esp + 0x34], 0x1000
je 0x401042
mov eax, dword [esp + 0x4c]
mov ecx, eax
mov dword [ecx], ebp
mov dword [ecx + 4], ebx
mov dword [ecx + 8], edi
pop edi
mov dword [ecx + 0xc], esi
pop esi
pop ebp
pop ebx
add esp, 0x38
ret