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

Disassembly:
push 0x3c8
mov eax, 0x445072
call fcn.00437c51
mov dword [ebp - 0x3d0], edx
xor ebx, ebx
test ecx, ecx
jne 0x421f01
push 0x45a2e8
lea ecx, [ebp - 0xd4]
mov dword [ebp - 0xd4], ebx
call fcn.0042e894
mov dword [ebp - 4], ebx
mov eax, dword [0x45a370]
cmp word [eax], bx
jne 0x421e2f
cmp dword [ebp + 8], ebx
je 0x421db4
push dword [ebp + 8]
lea ecx, [ebp - 0xd4]
call fcn.0042e8c9
push ebx
push 0x80
push 3
push ebx
push 1
push SysReAllocString
push dword [ebp - 0xd4]
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x421deb
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0xd4]
call fcn.0042e8b9
jmp 0x421f90
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov edi, eax
test edi, edi
je 0x421dd7
and dword [ebp - 0x1c], 0
push edi
call fcn.00432956
pop ecx
push 0
mov esi, eax
lea eax, [ebp - 0x1c]
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 - 0x1c], edi
je 0x421eed
push esi
call fcn.00433692
pop ecx
jmp 0x421dd7
push eax
lea ecx, [ebp - 0xd4]
call fcn.0042e8c9
cmp byte [0x45bfa8], 0
je 0x421e4c
mov ebx, dword [0x45bfa4]
jmp 0x421e5b
push ecx
mov ecx, dword [ebp - 0xd4]
call fcn.00404572
pop ecx
mov ebx, eax
test ebx, ebx
je 0x421dd7
mov edx, dword [ebp + 8]
lea eax, [ebp - 0x3bc]
push eax
lea eax, [ebp - 0x3c8]
push eax
push ecx
mov ecx, ebx
call fcn.004046e8
add esp, 0xc
test eax, eax
jne 0x421dd7
mov edi, dword [ebp - 0x190]
test edi, edi
je 0x421dd7
push edi
call fcn.00432956
mov edx, dword [ebp - 0x3c8]
pop ecx
push 3
mov esi, eax
push edi
push esi
mov ecx, ebx
call fcn.004047b9
add esp, 0xc
test eax, eax
je 0x421edd
cmp eax, 0x600
je 0x421edd
push esi
call fcn.00433692
cmp byte [0x45bfa8], 0
pop ecx
jne 0x421dd7
mov ecx, ebx
call fcn.004047ee
jmp 0x421dd7
cmp byte [0x45bfa8], 0
jne 0x421eed
mov ecx, ebx
call fcn.004047ee
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0xd4]
call fcn.0042e8b9
jmp 0x421f8c
mov eax, dword [0x45bfac]
push ecx
push dword [ebp + 8]
test eax, eax
cmove eax, dword [0x45bfb0]
push eax
call dword [sym.imp.KERNEL32.dll_FindResourceW]
mov ebx, eax
test ebx, ebx
je 0x421f90
mov ecx, dword [0x45bfac]
test ecx, ecx
cmove ecx, dword [0x45bfb0]
push ebx
push ecx
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov dword [ebp - 0x3c8], eax
push ebx
test eax, eax
jne 0x421f4a
call dword [sym.imp.KERNEL32.dll_FreeResource]
jmp 0x421f90
mov eax, dword [0x45bfac]
test eax, eax
cmove eax, dword [0x45bfb0]
push eax
call dword [sym.imp.KERNEL32.dll_SizeofResource]
mov edi, eax
test edi, edi
je 0x421f90
push edi
call fcn.00432956
pop ecx
push edi
push dword [ebp - 0x3c8]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_LockResource]
push eax
push esi
call fcn.00432b20
add esp, 0xc
push ebx
call dword [sym.imp.KERNEL32.dll_FreeResource]
test esi, esi
jne 0x422001
xor edi, edi
push edi
push 0x80
push 3
push edi
push 1
push SysReAllocString
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ebx, eax
cmp ebx, 0xffffffff
je 0x42221e
push edi
push ebx
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov edi, eax
test edi, edi
je 0x42221e
and dword [ebp - 0x18], 0
push edi
call fcn.00432956
pop ecx
push 0
mov esi, eax
lea eax, [ebp - 0x18]
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 - 0x18], edi
je 0x421ff9
push esi
call fcn.00433692
pop ecx
xor esi, esi
test esi, esi
je 0x42221e
lea eax, [edi + esi]
mov dword [ebp - 0xe0], eax
push ecx
lea eax, [ebp - 0x3d4]
push eax
lea eax, [ebp - 0x3c8]
xor ebx, ebx
push eax
lea edx, [ebp - 0x3cc]
lea ecx, [ebp - 0x18c]
mov dword [ebp - 0x17c], ebx
mov dword [ebp - 0x16c], ebx
mov dword [ebp - 0xdc], esi
mov dword [ebp - 0xe4], esi
call fcn.0040516b
add esp, 0xc
mov edi, eax
push esi
call fcn.00433692
pop ecx
test edi, edi
je 0x42221e
push 0x2c
lea eax, [ebp - 0x48]
push ebx
push eax
call fcn.00433270
mov ecx, dword [ebp - 0x3cc]
mov eax, dword [ebp - 0x3c8]
neg eax
add esp, 0xc
mov dword [ebp - 0x40], eax
mov dword [ebp - 0x38], ebx
mov ebx, ecx
imul ebx, dword [ebp - 0x3c8]
xor eax, eax
inc eax
push 0x20
mov word [ebp - 0x3c], ax
pop eax
mov word [ebp - 0x3a], ax
mov dword [ebp - 0x44], ecx
xor ecx, ecx
push ecx
mov eax, ebx
shl eax, 2
push ecx
mov dword [ebp - 0x34], eax
lea eax, [ebp - 0x3c0]
push eax
push ecx
lea eax, [ebp - 0x48]
push eax
push ecx
mov dword [ebp - 0x48], 0x28
mov byte [ebp - 0x3c1], cl
mov dword [ebp - 0x3c0], ecx
call dword [sym.imp.GDI32.dll_CreateDIBSection]
mov dword [ebp - 0x1c], eax
test eax, eax
je 0x42221e
xor esi, esi
test ebx, ebx
jle 0x4221d3
mov edx, 0xff
mov cl, byte [edi + esi*4 + 3]
mov eax, dword [ebp - 0x3c0]
mov byte [eax + esi*4 + 3], cl
mov ecx, dword [ebp - 0x3c0]
cmp byte [ecx + esi*4 + 3], dl
jae 0x422164
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 - 0x3c0]
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 - 0x3c0]
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 - 0x3c0]
xor edx, edx
inc edx
mov byte [ebp - 0x3c1], dl
mov byte [ecx + esi*4 + 2], al
jmp 0x422189
mov al, byte [edi + esi*4 + 2]
mov byte [ecx + esi*4], al
mov eax, dword [ebp - 0x3c0]
mov cl, byte [edi + esi*4 + 1]
mov byte [eax + esi*4 + 1], cl
mov eax, dword [ebp - 0x3c0]
mov cl, byte [edi + esi*4]
xor edx, edx
mov byte [eax + esi*4 + 2], cl
inc edx
mov eax, dword [ebp - 0x3c0]
mov ecx, dword [ebp - 0x3d0]
cmp dword [eax + esi*4], ecx
jne 0x4221c5
mov byte [eax + esi*4], 0
mov eax, dword [ebp - 0x3c0]
mov byte [ebp - 0x3c1], dl
mov byte [eax + esi*4 + 1], 0
mov eax, dword [ebp - 0x3c0]
mov byte [eax + esi*4 + 2], 0
mov eax, dword [ebp - 0x3c0]
mov byte [eax + esi*4 + 3], 0
inc esi
mov edx, 0xff
cmp esi, ebx
jl 0x4220e1
push edi
call fcn.004331a2
pop ecx
push 0x98
call fcn.00433300
pop ecx
mov ecx, eax
test ecx, ecx
je 0x4221f8
lea eax, [ecx + 0x14]
xor edx, edx
mov dword [ecx + 0x10], eax
mov word [eax], dx
jmp 0x4221fa
xor ecx, ecx
mov eax, dword [ebp - 0x1c]
mov dword [ecx], eax
mov eax, dword [ebp - 0x3cc]
mov dword [ecx + 4], eax
mov eax, dword [ebp - 0x3c8]
mov dword [ecx + 8], eax
mov al, byte [ebp - 0x3c1]
mov byte [ecx + 0xc], al
mov eax, ecx
jmp 0x422220
xor eax, eax
call fcn.00437c0f
ret