Function at 0x409740
Capabilities:
Hash data with md5

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x2508
call fcn.00476a90
mov eax, dword [0x4ca510]
xor eax, ebp
mov dword [ebp - 8], eax
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
mov edi, ecx
push edi
call fcn.0046c902
mov esi, dword [ebx + 0x2044]
xor ecx, ecx
mov dword [ebp - 0x14dc], ecx
mov dword [ebp - 0x14e0], ecx
mov dword [ebp - 0x14e8], ecx
mov dword [ebp - 0x14d8], ecx
mov dword [0x4db2b0], ecx
mov ecx, dword [ebx + 0x2048]
push edi
add ecx, esi
push ecx
push eax
mov dword [ebp - 0x14ec], eax
call fcn.00478340
mov eax, edi
mov edi, dword [ebp - 0x14ec]
push esi
call fcn.00405430
mov esi, dword [ebx + 0x2044]
mov eax, esi
add esp, 0x14
lea edi, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4097c0
sub eax, edi
push 4
mov dword [ebx + 0x204c], eax
xor eax, eax
push str.MTI_
push esi
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], eax
call fcn.0046dfd4
add esp, 0xc
test eax, eax
jne 0x409af2
push 0x4da5a0
push str.MTI_mode_selected__n
call fcn.0046efbc
add esp, 8
test eax, eax
je 0x409831
push str.MTI_mode_selected__n
call fcn.0046e24e
add esp, 4
xor eax, eax
jmp 0x409820
mov cl, byte [eax + str.MTI_mode_selected__n]
mov byte [eax + 0x4da5a0], cl
inc eax
test cl, cl
jne 0x409820
push ebx
push 0x20
lea edx, [ebp - 0x34]
push edx
lea eax, [ebp - 0x14]
push eax
call fcn.00403bf0
add esp, 0x10
cmp eax, 0x20
jb 0x409a1b
cmp dword [ebp - 0x34], 0x192533c
jne 0x409ac6
movzx eax, byte [ebp - 0x20]
movzx ecx, byte [ebp - 0x1f]
movzx edx, byte [ebp - 0x1e]
shl eax, 8
or eax, ecx
movzx ecx, byte [ebp - 0x1d]
shl eax, 8
or eax, edx
shl eax, 8
or eax, ecx
push eax
lea edx, [ebp - 0x1c]
push 8
push edx
call fcn.004030b0
movzx esi, byte [ebp - 0x1c]
movzx ecx, byte [ebp - 0x1a]
movzx edx, byte [ebp - 0x19]
mov dword [ebp - 0x14d8], eax
movzx eax, byte [ebp - 0x1b]
shl esi, 8
or esi, eax
shl esi, 8
or esi, ecx
shl esi, 8
or esi, edx
push 1
push esi
call fcn.0046cc57
push ebx
mov edi, eax
push esi
lea eax, [ebp - 0x14]
push edi
push eax
call fcn.00403bf0
add esp, 0x24
cmp eax, esi
jb 0x409a1b
mov ecx, dword [ebp - 0x14d8]
push ecx
push esi
push edi
call fcn.004030b0
xor eax, eax
push 0xc
lea edx, [ebp - 0x20]
mov dword [ebp - 0x48c], eax
mov dword [ebp - 0x488], eax
push edx
lea eax, [ebp - 0x49c]
push eax
mov dword [ebp - 0x49c], 0x67452301
mov dword [ebp - 0x498], 0xefcdab89
mov dword [ebp - 0x494], 0x98badcfe
mov dword [ebp - 0x490], 0x10325476
call fcn.00403a70
push esi
lea ecx, [ebp - 0x49c]
push edi
push ecx
call fcn.00403a70
lea edx, [ebp - 0x444]
push edx
lea eax, [ebp - 0x49c]
push eax
call fcn.00403b80
add esp, 0x2c
mov eax, 0x10
xor ecx, ecx
lea esp, [esp]
mov edx, dword [ebp + ecx - 0x30]
cmp edx, dword [ebp + ecx - 0x444]
jne 0x409ab2
sub eax, 4
add ecx, 4
cmp eax, 4
jae 0x409950
xor eax, eax
mov dword [ebp - 0x14f4], eax
mov dword [ebp - 0x14f0], eax
mov dword [ebp - 0x1500], eax
mov dword [ebp - 0x14fc], eax
mov dword [ebp - 0x14f8], eax
lea eax, [ebp - 0x1500]
push edi
push eax
mov dword [ebp - 0x14f4], fcn.0046c902
mov dword [ebp - 0x14f0], fcn.0046c8c8
call fcn.00403d40
mov eax, dword [ebp - 0x14fc]
mov ecx, dword [ebp - 0x1500]
push eax
mov dword [ebp - 0x14d8], ecx
mov dword [ebp - 0x14e4], eax
call fcn.0046c902
mov edx, dword [ebp - 0x14fc]
mov ecx, dword [ebp - 0x1500]
mov esi, dword [ebp - 0x14dc]
push edx
push ecx
push eax
mov dword [ebp + esi*4 - 0x2504], eax
call fcn.00478340
mov eax, dword [ebp - 0x14e4]
add dword [ebp - 0x14e0], eax
mov dword [ebp + esi*4 - 0x14d4], eax
inc esi
push edi
mov dword [ebp - 0x14dc], esi
call fcn.0046c8c8
mov edx, dword [ebp - 0x14d8]
push edx
call fcn.0046c8c8
add esp, 0x20
mov eax, dword [0x4db2b0]
add eax, 4
cmp eax, dword [ebx + 0x204c]
jb 0x409831
mov edx, dword [ebx + 0x2044]
push edx
call fcn.0046c8c8
mov eax, dword [ebp - 0x14e0]
push eax
call fcn.0046c902
xor esi, esi
add esp, 8
mov dword [ebx + 0x2044], eax
cmp dword [ebp - 0x14dc], esi
jbe 0x409aa1
lea ebx, [ebx]
mov edi, dword [ebp + esi*4 - 0x14d4]
mov ecx, dword [ebx + 0x2044]
mov eax, dword [ebp + esi*4 - 0x2504]
add ecx, dword [ebp - 0x14e8]
push edi
push eax
push ecx
call fcn.00478340
mov eax, dword [ebp + esi*4 - 0x2504]
add dword [ebp - 0x14e8], edi
push eax
call fcn.0046c8c8
inc esi
add esp, 0x10
cmp esi, dword [ebp - 0x14dc]
jb 0x409a60
mov edx, dword [ebp - 0x14e0]
mov dword [ebx + 0x204c], edx
jmp 0x409c8e
push str.MTI_signature2_mismatch__n
call fcn.0046e24e
add esp, 4
push 0
call fcn.00470ab0
push str.MTI__signature_not_found__n
call fcn.0046e24e
mov ecx, dword [ebp - 0x14ec]
push ecx
call fcn.0046c8c8
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.0046c8b9
mov esp, ebp
pop ebp
ret
push 0xa0
lea eax, [ebp - 0x4d4]
push 0
push eax
call fcn.00476ac0
mov ecx, dword [ebx + 0x2044]
mov al, byte [ecx]
add esp, 0xc
xor edi, edi
mov byte [ebp - 0x4cf], 0x62
cmp al, 0xa
je 0x409b2d
lea ecx, [ecx]
test al, al
je 0x409b2d
mov al, byte [edi + ecx + 1]
inc edi
cmp al, 0xa
jne 0x409b20
push edi
push ecx
lea ecx, [ebp - 0x434]
push ecx
call fcn.00478340
push edi
lea edx, [ebp - 0x434]
push edx
lea eax, [ebp - 0x4d4]
push eax
mov byte [ebp + edi - 0x434], 0
lea esi, [edi + 1]
call fcn.00401980
add esp, 0x18
test eax, eax
je 0x409c73
push 0x4da5a0
push str.VCS_mode_selected__n
call fcn.0046efbc
add esp, 8
test eax, eax
je 0x409ba1
push str.VCS_mode_selected__n
call fcn.0046e24e
add esp, 4
xor eax, eax
lea ebx, [ebx]
mov cl, byte [eax + str.VCS_mode_selected__n]
mov byte [eax + 0x4da5a0], cl
inc eax
test cl, cl
jne 0x409b90
mov ecx, dword [str.vcsbase64]
mov dword [ebx + 0x1f44], ecx
mov edx, dword [0x4bd718]
mov dword [ebx + 0x1f48], edx
mov ax, word [0x4bd71c]
mov word [ebx + 0x1f4c], ax
mov ecx, dword [str.vcs_xor]
mov dword [ebx + 0x1fc4], ecx
mov edx, dword [0x4bd724]
mov dword [ebx + 0x1fc8], edx
mov eax, dword [ebx + 0x2044]
mov cl, byte [eax + esi]
add eax, esi
xor edi, edi
cmp cl, 0xa
je 0x409bfe
test cl, cl
je 0x409bfe
mov cl, byte [edi + eax + 1]
inc edi
cmp cl, 0xa
jne 0x409bf0
push edi
push eax
lea ecx, [ebp - 0x434]
push ecx
mov dword [ebp - 0x14e4], edi
call fcn.00478340
lea edx, [ebp - 0x14e4]
push edx
lea eax, [ebp - 0x434]
push eax
lea ecx, [ebp - 0x4d4]
push ecx
lea esi, [esi + edi + 1]
call fcn.00401c20
mov edi, dword [ebp - 0x14e4]
mov eax, dword [ebx + 0x2044]
add eax, dword [ebp - 0x14d8]
push edi
lea edx, [ebp - 0x434]
push edx
push eax
call fcn.00478340
add dword [ebp - 0x14d8], edi
add esp, 0x24
cmp esi, dword [ebx + 0x204c]
jb 0x409bde
mov ecx, dword [ebp - 0x14d8]
mov dword [ebx + 0x204c], ecx
jmp 0x409c8e
push str.Unknow__protected_method__n
call fcn.0046e24e
add esp, 4
mov byte [ebx + 0x1f44], 0
mov byte [ebx + 0x1fc4], 0
mov edx, dword [ebp - 0x14ec]
push edx
call fcn.0046c8c8
mov ecx, dword [ebp - 8]
add esp, 4
pop edi
pop esi
xor ecx, ebp
xor eax, eax
pop ebx
call fcn.0046c8b9
mov esp, ebp
pop ebp
ret