Function at 0x404500
Capabilities:
Get file size
Parse pe header
Read file on windows

Disassembly:
sub esp, 0x14
mov eax, dword [0x4522d0]
xor eax, esp
mov dword [esp + 0x10], eax
mov eax, dword [0x452114]
push ebx
push 4
push 0x3000
push eax
xor ebx, ebx
push ebx
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
cmp eax, ebx
mov dword [0x460f88], eax
jne 0x40456f
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.VirtualAlloc_error__d__n
push 0x4610a8
call fcn.00415641
add esp, 0xc
push 0x1010
push 0x448c14
push 0x4610a8
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
xor eax, eax
pop ebx
mov ecx, dword [esp + 0x10]
xor ecx, esp
call fcn.00415a83
add esp, 0x14
ret
push ebx
push 0x80
push 3
push ebx
push 1
push SysReAllocStringLen
push 0x45ff70
call dword [sym.imp.KERNEL32.dll_CreateFileA]
cmp eax, 0xffffffff
mov dword [0x45fba0], eax
jne 0x4045b4
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push 0x45ff70
push str.CREATEFILE_ERROR__nCould_not_open_file:__s__error__d_n
push 0x4610a8
call fcn.00415641
add esp, 0x10
jmp 0x404547
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov ecx, dword [0x452114]
mov edx, dword [0x460f88]
push ebx
push 0x460f1c
push ecx
mov dword [0x460f28], eax
mov eax, dword [0x45fba0]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_ReadFile]
mov eax, dword [0x460f88]
mov dword [0x462730], eax
mov dword [0x45bb04], eax
mov ecx, dword [eax + 0x3c]
lea edx, [ecx + eax + 4]
mov dword [0x453610], edx
mov ecx, dword [eax + 0x3c]
lea edx, [ecx + eax + 0x18]
mov dword [0x4535a4], edx
mov ecx, dword [eax + 0x3c]
lea edx, [ecx + eax + 0xf8]
mov dword [0x453618], edx
cmp word [eax], 0x5a4d
je 0x40465c
push 0x44909c
push 0x4610a8
call fcn.00415641
add esp, 8
push 0x1010
push 0x448c14
push 0x4610a8
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, dword [0x45fba0]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
jmp 0x404e76
mov ecx, dword [eax + 0x3c]
add eax, ecx
cmp dword [eax], 0x4550
je 0x4046a5
push 0x4490cc
push 0x4610a8
call fcn.00415641
add esp, 8
push 0x1010
push 0x448c14
push 0x4610a8
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
mov edx, dword [0x45fba0]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
jmp 0x404e76
cmp word [eax + 0x1a], 0x5253
je 0x4046dc
push str.IMAGE_SR_SIGNATURE_not_found_nNot_an_armadillo_protected_file__n
push 0x4610a8
call fcn.00415641
push 0x4610a8
call fcn.00403960
mov eax, dword [0x45fba0]
add esp, 0xc
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
jmp 0x404e76
mov word [eax + 0x1a], bx
mov ecx, dword [0x453610]
movzx edx, word [ecx + 2]
xor eax, eax
mov dword [esp + 9], eax
mov dword [esp + 0xd], eax
mov eax, dword [0x453618]
cmp eax, ebx
mov dword [esp + 4], edx
mov byte [esp + 8], bl
je 0x404e56
push edi
mov edi, dword [sym.imp.USER32.dll_MessageBoxA]
mov dword [0x46164c], ebx
push esi
jmp 0x404720
mov ecx, dword [0x46164c]
cmp ecx, dword [esp + 0xc]
jge 0x404e54
xor ecx, ecx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x14], ecx
mov byte [esp + 0x18], cl
mov edx, dword [eax]
mov dword [esp + 0x10], edx
mov eax, dword [eax + 4]
lea ecx, [esp + 0x10]
push ecx
mov dword [esp + 0x18], eax
call fcn.00416d80
push 4
mov esi, eax
push str.UPX0
push esi
call fcn.00415bc4
add esp, 0x10
test eax, eax
jne 0x4047d0
cmp dword [0x46164c], ebx
jne 0x4047d0
cmp dword [0x462690], ebx
jne 0x4047d0
mov eax, dword [0x453618]
mov edx, dword [eax + 0xc]
add edx, dword [0x462718]
mov dword [0x462690], edx
mov ecx, dword [eax + 8]
mov dword [0x462694], ecx
cmp dword [0x4626a0], ebx
jne 0x404899
mov ecx, dword [eax + 0xc]
add ecx, dword [0x462718]
add eax, 0x28
mov dword [0x4626a0], ecx
mov edx, dword [eax - 0x20]
add dword [0x46164c], 1
mov dword [0x4626a4], edx
mov dword [0x453618], eax
jmp 0x404720
push 4
push str.UPX1
push esi
call fcn.00415bc4
add esp, 0xc
test eax, eax
jne 0x404811
cmp dword [0x46164c], 1
jne 0x404811
cmp dword [0x462698], ebx
jne 0x404811
mov eax, dword [0x453618]
mov edx, dword [eax + 0xc]
add edx, dword [0x462718]
mov dword [0x462698], edx
mov eax, dword [eax + 8]
mov dword [0x46269c], eax
push 5
push str..TEXT
push esi
call fcn.00415bc4
add esp, 0xc
test eax, eax
je 0x404869
push 5
push str..CODE
push esi
call fcn.00415bc4
add esp, 0xc
test eax, eax
je 0x404869
push 4
push str.TEXT
push esi
call fcn.00415bc4
add esp, 0xc
test eax, eax
je 0x404869
push 4
push str.CODE
push esi
call fcn.00415bc4
add esp, 0xc
test eax, eax
je 0x404869
cmp dword [0x46164c], ebx
jne 0x404899
mov eax, dword [0x453618]
mov ecx, dword [eax + 0x24]
cmp ecx, 0xe0000020
jb 0x404885
cmp ecx, 0xe1000000
jbe 0x404798
cmp ecx, 0x60000020
jb 0x404899
cmp ecx, 0x61000000
jbe 0x404798
push 6
push str..ITEXT
push esi
call fcn.00415bc4
add esp, 0xc
test eax, eax
je 0x4048ca
push 5
push str.ITEXT
push esi
call fcn.00415bc4
add esp, 0xc
test eax, eax
je 0x4048ca
cmp dword [0x46164c], 1
jne 0x40493a
mov eax, dword [0x453618]
mov ecx, dword [eax + 0x24]
cmp ecx, 0xe0000020
jb 0x4048e2
cmp ecx, 0xe1000000
jbe 0x4048f2
cmp ecx, 0x60000020
jb 0x40493a
cmp ecx, 0x61000000
ja 0x40493a
cmp dword [0x4626a0], ebx
je 0x4047a4
cmp dword [0x4626a8], ebx
jne 0x40493a
cmp dword [0x461600], ebx
jne 0x40493a
mov ecx, dword [eax + 0xc]
add ecx, dword [0x462718]
add eax, 0x28
mov dword [0x4626a8], ecx
mov edx, dword [eax - 0x20]
add dword [0x46164c], 1
mov dword [0x4626ac], edx
mov dword [0x453618], eax
jmp 0x404720
push 6
push 0x449174
push esi
call fcn.00415bc4
add esp, 0xc
test eax, eax
je 0x4049f4
push 5
push 0x44917c
push esi
call fcn.00415bc4
add esp, 0xc
test eax, eax
je 0x4049f4
mov eax, dword [0x453618]
mov ecx, dword [eax + 0x24]
cmp ecx, 0x40000040
jb 0x404982
cmp ecx, 0x41000000
jbe 0x4049f9
push 6
push str..RELOC
push esi
call fcn.00415bc4
add esp, 0xc
test eax, eax
je 0x4049ae
push 5
push str.RELOC
push esi
call fcn.00415bc4
add esp, 0xc
test eax, eax
jne 0x404a3f
cmp dword [0x462710], ebx
jne 0x404a3f
mov eax, dword [0x453618]
mov ecx, dword [eax + 0xc]
mov dword [0x46270c], ecx
mov edx, dword [eax + 0xc]
add edx, dword [0x462718]
add eax, 0x28
mov dword [0x462710], edx
mov ecx, dword [eax - 0x20]
add dword [0x46164c], 1
mov dword [0x462714], ecx
mov dword [0x453618], eax
jmp 0x404720
mov eax, dword [0x453618]
cmp dword [0x4626bc], ebx
jne 0x404982
mov ecx, dword [eax + 0xc]
mov dword [0x4626b8], ecx
mov edx, dword [eax + 0xc]
add edx, dword [0x462718]
add eax, 0x28
mov dword [0x4626bc], edx
mov ecx, dword [eax - 0x20]
mov dword [0x4626c0], ecx
mov edx, dword [eax - 4]
add dword [0x46164c], 1
mov dword [0x4626cc], edx
mov dword [0x453618], eax
jmp 0x404720
push 6
push str..IDATA
push esi
call fcn.00415bc4
add esp, 0xc
test eax, eax
je 0x404a67
push 5
push str.IDATA
push esi
call fcn.00415bc4
add esp, 0xc
test eax, eax
jne 0x404aa9
cmp dword [0x4626d4], ebx
jne 0x404aa9
mov eax, dword [0x453618]
mov edx, dword [eax + 0xc]
mov dword [0x4626d0], edx
mov ecx, dword [eax + 0xc]
add ecx, dword [0x462718]
add eax, 0x28
mov dword [0x4626d4], ecx
mov edx, dword [eax - 0x20]
add dword [0x46164c], 1
mov dword [0x4626d8], edx
mov dword [0x453618], eax
jmp 0x404720
push 6
push str..TEXT1
push esi
call fcn.00415bc4
add esp, 0xc
test eax, eax
je 0x404c56
push 5
push str.TEXT1
push esi
call fcn.00415bc4
add esp, 0xc
test eax, eax
je 0x404c56
mov eax, dword [0x453618]
mov ecx, dword [eax + 0x24]
cmp ecx, 0xe0000020
jb 0x404af5
cmp ecx, 0xe1000000
jbe 0x404c5b
cmp ecx, 0x60000020
jb 0x404b09
cmp ecx, 0x61000000
jbe 0x404c5b
push 6
push str..ADATA
push esi
call fcn.00415bc4
add esp, 0xc
test eax, eax
je 0x404d37
push 5
push str.ADATA
push esi
call fcn.00415bc4
add esp, 0xc
test eax, eax
je 0x404d37
mov eax, dword [0x453618]
mov ecx, dword [eax + 0x24]
cmp ecx, 0xe0000020
jb 0x404b55
cmp ecx, 0xe1000000
jbe 0x404d3c
cmp ecx, 0x60000020
jb 0x404b69
cmp ecx, 0x61000000
jbe 0x404d3c
push 5
push str..DATA
push esi
call fcn.00415bc4
add esp, 0xc
test eax, eax
je 0x404d80
push 4
push str.DATA
push esi
call fcn.00415bc4
add esp, 0xc
test eax, eax
je 0x404d80
mov eax, dword [0x453618]
mov ecx, dword [eax + 0x24]
cmp ecx, 0xc0000040
jb 0x404bb5
cmp ecx, 0xc1000000
jbe 0x404d85
push 6
push str..DATA1
push esi
call fcn.00415bc4
add esp, 0xc
test eax, eax
je 0x404dbd
push 5
push str.DATA1
push esi
call fcn.00415bc4
add esp, 0xc
test eax, eax
je 0x404dbd
mov eax, dword [0x453618]
mov ecx, dword [eax + 0x24]
cmp ecx, 0xc0000040
jb 0x404c01
cmp ecx, 0xc1000000
jbe 0x404dc2
push 6
push 0x449460
push esi
call fcn.00415bc4
add esp, 0xc
test eax, eax
je 0x404e13
push 5
push 0x449468
push esi
call fcn.00415bc4
add esp, 0xc
test eax, eax
je 0x404e13
mov eax, dword [0x453618]
mov ecx, dword [eax + 0x24]
cmp ecx, 0xc0000040
jb 0x404e40
cmp ecx, 0xc1000000
ja 0x404e40
jmp 0x404e18
mov eax, dword [0x453618]
cmp dword [0x46164c], 1
jle 0x404b09
cmp dword [0x4626b0], ebx
je 0x404d01
cmp dword [0x4626dc], ebx
je 0x404b09
cmp dword [0x4626ec], ebx
je 0x404b09
cmp dword [0x4626fc], ebx
je 0x404b09
push esi
push str.PE_section_name:__s_nThere_appears_to_be_multiple_occurrences_nof_Armadillo_section_names_in_this_application__nCheck_the_PE_file_using_LordPE_or_similar_and_nlook_at_the_PE_section_names_and_or_characteristics._nIf_you_believe_this_message_to_be_a_false_alert__npress_the_Cancel_button_to_resume_normal_processing__notherwise__press_the_OK_button_and_the_appropriate_action_nwill_be_taken_and_processing_will_resume..._n_nNote:_This_message_may_also_appear_for_PE_section_nnames_that_have_been_randomized__nIf_you_have_any_problems_after_pressing_the_Cancel_button__nRerun_and_try_pressing_the_OK_button_to_continue__n
push 0x4610a8
call fcn.00415641
add esp, 0xc
push 0x1031
push str.PE_section_names_alert_
push 0x4610a8
push ebx
call edi
cmp eax, 2
mov eax, dword [0x453618]
je 0x404e40
mov dword [0x4626b0], ebx
mov dword [0x4626b4], ebx
mov dword [0x46161c], ebx
mov dword [0x4626dc], ebx
mov dword [0x4626e0], ebx
mov dword [0x4626ec], ebx
mov dword [0x4626f0], ebx
mov dword [0x4626fc], ebx
mov dword [0x462700], ebx
mov ecx, dword [eax + 0xc]
add ecx, dword [0x462718]
add eax, 0x28
mov dword [0x4626b0], ecx
mov edx, dword [eax - 0x20]
add dword [0x46164c], 1
mov dword [0x4626b4], edx
mov dword [0x46161c], 1
mov dword [0x453618], eax
jmp 0x404720
mov eax, dword [0x453618]
cmp dword [0x46161c], ebx
je 0x404b69
cmp dword [0x4626dc], ebx
jne 0x404b69
mov ecx, dword [eax + 0xc]
add ecx, dword [0x462718]
add eax, 0x28
mov dword [0x4626dc], ecx
mov edx, dword [eax - 0x20]
add dword [0x46164c], 1
mov dword [0x4626e0], edx
mov dword [0x453618], eax
jmp 0x404720
mov eax, dword [0x453618]
cmp dword [0x462704], ebx
jne 0x404bb5
mov ecx, dword [eax + 0xc]
add ecx, dword [0x462718]
add eax, 0x28
mov dword [0x462704], ecx
mov edx, dword [eax - 0x20]
add dword [0x46164c], 1
mov dword [0x462708], edx
mov dword [0x453618], eax
jmp 0x404720
mov eax, dword [0x453618]
cmp dword [eax + 8], 0x10000
jb 0x404c01
cmp dword [0x46161c], ebx
je 0x404c01
cmp dword [0x4626ec], ebx
jne 0x404c01
mov ecx, dword [eax + 0xc]
add ecx, dword [0x462718]
add eax, 0x28
mov dword [0x4626ec], ecx
mov edx, dword [eax - 0x20]
add dword [0x46164c], 1
mov dword [0x4626f0], edx
mov dword [0x453618], eax
jmp 0x404720
mov eax, dword [0x453618]
cmp dword [0x46161c], ebx
je 0x404e40
cmp dword [0x4626fc], ebx
jne 0x404e40
mov ecx, dword [eax + 0xc]
add ecx, dword [0x462718]
mov dword [0x4626fc], ecx
mov edx, dword [eax + 8]
mov dword [0x462700], edx
add eax, 0x28
add dword [0x46164c], 1
mov dword [0x453618], eax
jmp 0x404720
pop esi
pop edi
mov eax, dword [0x4535a4]
mov edx, dword [0x45fba0]
mov ecx, dword [eax + 0x38]
push edx
mov dword [0x461098], ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, 1
mov ecx, dword [esp + 0x14]
mov dword [0x45fba0], ebx
pop ebx
xor ecx, esp
call fcn.00415a83
add esp, 0x14
ret