Function at 0x419c16
Capabilities:
Extract resource via kernel32 functions
Get file size
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x150
mov eax, dword [0x45b170]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
xor ebx, ebx
push edi
xor esi, esi
xor edi, edi
inc ebx
mov dword [ebp - 0x14c], edx
test ecx, ecx
jne 0x419cef
push 0x45d3a0
lea ecx, [ebp - 0x78]
call fcn.00434cf7
mov eax, dword [0x45d3e8]
cmp byte [eax], 0
jne 0x419ce2
cmp dword [ebp + 8], esi
je 0x419c6c
push dword [ebp + 8]
lea ecx, [ebp - 0x78]
call fcn.00434d28
push 0
push 0x80
push 3
push 0
push ebx
push 0x80000000
push dword [ebp - 0x78]
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x419c9a
lea ecx, [ebp - 0x78]
call fcn.00434d18
jmp 0x419d7e
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov edi, eax
test edi, edi
je 0x419c8d
and dword [ebp - 0x144], esi
push edi
call fcn.00436372
pop ecx
push 0
mov esi, eax
lea eax, [ebp - 0x144]
push eax
push edi
push esi
push ebx
call dword [sym.imp.KERNEL32.dll_ReadFile]
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp - 0x144], edi
je 0x419ce2
push esi
call fcn.00436fe4
pop ecx
jmp 0x419c8d
lea ecx, [ebp - 0x78]
call fcn.00434d18
jmp 0x419d7a
mov eax, dword [0x45e568]
push ecx
push dword [ebp + 8]
test eax, eax
cmove eax, dword [0x45e56c]
push eax
call dword [sym.imp.KERNEL32.dll_FindResourceA]
mov ebx, eax
test ebx, ebx
je 0x419d7e
mov ecx, dword [0x45e568]
test ecx, ecx
cmove ecx, dword [0x45e56c]
push ebx
push ecx
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov dword [ebp - 0x13c], eax
push ebx
test eax, eax
jne 0x419d38
call dword [sym.imp.KERNEL32.dll_FreeResource]
jmp 0x419d7e
mov eax, dword [0x45e568]
test eax, eax
cmove eax, dword [0x45e56c]
push eax
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov edi, eax
test edi, edi
je 0x419d7e
push edi
call fcn.00436372
pop ecx
push edi
push dword [ebp - 0x13c]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_LockResource]
push eax
push esi
call fcn.004392c0
add esp, 0xc
push ebx
call dword [sym.imp.KERNEL32.dll_FreeResource]
test esi, esi
jne 0x419df9
push 0
push 0x80
push 3
push 0
push 1
push 0x80000000
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x41a014
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov edi, eax
test edi, edi
je 0x41a014
and dword [ebp - 0x140], 0
push edi
call fcn.00436372
pop ecx
push 0
mov esi, eax
lea eax, [ebp - 0x140]
push eax
push edi
push esi
push ebx
call dword [sym.imp.KERNEL32.dll_ReadFile]
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp - 0x140], edi
je 0x419df1
push esi
call fcn.00436fe4
pop ecx
xor esi, esi
test esi, esi
je 0x41a014
lea eax, [edi + esi]
mov dword [ebp - 0x84], eax
push ecx
lea eax, [ebp - 0x150]
push eax
lea eax, [ebp - 0x13c]
xor ebx, ebx
push eax
lea edx, [ebp - 0x148]
lea ecx, [ebp - 0x130]
mov dword [ebp - 0x120], ebx
mov dword [ebp - 0x110], ebx
mov dword [ebp - 0x80], esi
mov dword [ebp - 0x88], esi
call fcn.0042d538
add esp, 0xc
mov edi, eax
push esi
call fcn.00436fe4
pop ecx
test edi, edi
je 0x41a014
push 0x2c
lea eax, [ebp - 0x30]
push ebx
push eax
call fcn.0043b860
mov ecx, dword [ebp - 0x148]
mov eax, dword [ebp - 0x13c]
neg eax
add esp, 0xc
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x20], ebx
mov ebx, ecx
imul ebx, dword [ebp - 0x13c]
xor eax, eax
inc eax
push 0x20
mov word [ebp - 0x24], ax
pop eax
mov word [ebp - 0x22], ax
mov dword [ebp - 0x2c], ecx
xor ecx, ecx
push ecx
mov eax, ebx
shl eax, 2
push ecx
mov dword [ebp - 0x1c], eax
lea eax, [ebp - 0x138]
push eax
push ecx
lea eax, [ebp - 0x30]
push eax
push ecx
mov dword [ebp - 0x30], 0x28
mov byte [ebp - 0x131], cl
mov dword [ebp - 0x138], ecx
call dword [sym.imp.GDI32.dll_CreateDIBSection]
mov dword [ebp - 0x144], eax
test eax, eax
je 0x41a014
xor esi, esi
test ebx, ebx
jle 0x419fcb
mov edx, 0xff
mov cl, byte [edi + esi*4 + 3]
mov eax, dword [ebp - 0x138]
mov byte [eax + esi*4 + 3], cl
mov ecx, dword [ebp - 0x138]
cmp byte [ecx + esi*4 + 3], dl
jae 0x419f5c
movzx ecx, byte [edi + esi*4 + 3]
movzx eax, byte [edi + esi*4 + 2]
imul eax, ecx
xor edx, edx
mov ecx, 0xff
div ecx
mov ecx, dword [ebp - 0x138]
xor edx, edx
mov byte [ecx + esi*4], al
movzx ecx, byte [edi + esi*4 + 3]
movzx eax, byte [edi + esi*4 + 1]
imul eax, ecx
mov ecx, 0xff
div ecx
mov ecx, dword [ebp - 0x138]
xor edx, edx
mov byte [ecx + esi*4 + 1], al
movzx ecx, byte [edi + esi*4 + 3]
movzx eax, byte [edi + esi*4]
imul eax, ecx
mov ecx, 0xff
div ecx
mov ecx, dword [ebp - 0x138]
xor edx, edx
inc edx
mov byte [ebp - 0x131], dl
mov byte [ecx + esi*4 + 2], al
jmp 0x419f81
mov al, byte [edi + esi*4 + 2]
mov byte [ecx + esi*4], al
mov eax, dword [ebp - 0x138]
mov cl, byte [edi + esi*4 + 1]
mov byte [eax + esi*4 + 1], cl
mov eax, dword [ebp - 0x138]
mov cl, byte [edi + esi*4]
xor edx, edx
mov byte [eax + esi*4 + 2], cl
inc edx
mov eax, dword [ebp - 0x138]
mov ecx, dword [ebp - 0x14c]
cmp dword [eax + esi*4], ecx
jne 0x419fbd
mov byte [eax + esi*4], 0
mov eax, dword [ebp - 0x138]
mov byte [ebp - 0x131], dl
mov byte [eax + esi*4 + 1], 0
mov eax, dword [ebp - 0x138]
mov byte [eax + esi*4 + 2], 0
mov eax, dword [ebp - 0x138]
mov byte [eax + esi*4 + 3], 0
inc esi
mov edx, 0xff
cmp esi, ebx
jl 0x419ed9
push edi
call fcn.0043768f
pop ecx
push 0x55
call fcn.0043680a
pop ecx
mov ecx, eax
test ecx, ecx
je 0x419feb
lea eax, [ecx + 0x11]
mov dword [ecx + 0xd], eax
mov byte [eax], 0
jmp 0x419fed
xor ecx, ecx
mov eax, dword [ebp - 0x144]
mov dword [ecx], eax
mov eax, dword [ebp - 0x148]
mov dword [ecx + 4], eax
mov eax, dword [ebp - 0x13c]
mov dword [ecx + 8], eax
mov al, byte [ebp - 0x131]
mov byte [ecx + 0xc], al
mov eax, ecx
jmp 0x41a016
xor eax, eax
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004363cf
leave
ret