Function at 0x439a7e
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
mov ebp, esp
push edi
mov edi, ecx
push esi
mov esi, edx
push ebx
mov ebx, eax
movzx eax, dx
sub esp, 0x4ac
mov dword [esp + 8], 2
mov dword [esp + 4], eax
mov dword [esp], ebx
call dword [sym.imp.KERNEL32.dll_FindResourceA]
sub esp, 0xc
test eax, eax
je 0x439b1e
mov dword [esp], ebx
mov dword [esp + 4], eax
call dword [sym.imp.KERNEL32.dll_LoadResource]
push ebx
push ebx
test eax, eax
jne 0x439acc
mov dword [esp + 4], str.ERROR:_LoadResource_failed_error
jmp 0x439ae4
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov ebx, eax
push ecx
test eax, eax
jne 0x439b0e
mov dword [esp + 4], str.ERROR:_could_not_lock_bitmap_error
mov dword [esp], 0x5694e0
call fcn.004c8905
mov ebx, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.004c8952
mov dword [esp], eax
call fcn.004c8cf3
jmp 0x439b1e
cmp word [eax + 0xc], 1
je 0x439bce
jmp 0x439be5
mov eax, edi
xor ebx, ebx
test al, al
jne 0x43a12f
mov dword [esp + 4], str.ERROR:_Bitmap_not_found_id
mov dword [esp], 0x5694e0
call fcn.004c8905
mov dword [esp + 4], esi
mov dword [esp], eax
call fcn.004c8952
mov dword [esp + 4], str.__error
mov dword [esp], eax
call fcn.004c8905
mov ebx, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.004c8952
mov dword [esp], eax
call fcn.004c8cf3
mov dword [esp + 4], 0x524dd3
mov dword [esp], 0x5694e0
call fcn.004c8905
mov dword [esp + 4], str.miw_gdi.cpp
mov dword [esp], eax
call fcn.004c8905
mov dword [esp + 4], 0x524dea
mov dword [esp], eax
call fcn.004c8905
mov dword [esp + 4], 0xc6
mov dword [esp], eax
call fcn.004c8a58
mov dword [esp], eax
call fcn.004c8cf3
mov dword [0], 0
ud2
mov dx, word [eax + 0xe]
lea eax, [edx - 4]
test ax, 0xfffb
jne 0x439be5
cmp dword [ebx + 0x10], 0
je 0x439c75
mov dword [esp + 4], str.ERROR:_bad_bmp_format_id
mov dword [esp], 0x5694e0
call fcn.004c8905
mov dword [esp + 4], esi
mov dword [esp], eax
call fcn.004c8952
mov dword [esp], eax
call fcn.004c8cf3
mov dword [esp + 4], str.biPlanes
mov dword [esp], 0x5694e0
call fcn.004c8905
movzx edx, word [ebx + 0xc]
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.004c8952
mov dword [esp + 4], str.__biBitCount
mov dword [esp], eax
call fcn.004c8905
movzx edx, word [ebx + 0xe]
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.004c8952
mov dword [esp + 4], str.__biCompression
mov dword [esp], eax
call fcn.004c8905
mov edx, dword [ebx + 0x10]
mov dword [esp], eax
mov dword [esp + 4], edx
call fcn.004c8952
jmp 0x439ec2
lea eax, [ebp - 0x43c]
lea esi, [ebx + 4]
mov ecx, 9
mov edi, eax
rep movsd dword es:[edi], dword [esi]
lea edi, [ebp - 0x418]
mov ecx, 0x100
mov dword [ebp - 0x440], 0x28
mov esi, dword [ebx]
add esi, ebx
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [ebp - 0x420]
test ecx, ecx
jne 0x439cbd
cmp dx, 8
mov ecx, 0x100
mov eax, 0x10
cmovne ecx, eax
mov eax, dword [ebx]
lea edi, [ecx*4]
mov dword [ebp - 0x45c], 0
add eax, edi
add eax, ebx
mov dword [ebp - 0x46c], eax
mov eax, dword [ebp - 0x45c]
cmp dword [ebp + eax*4 - 0x418], 0xffc0c0
je 0x439d05
inc dword [ebp - 0x45c]
cmp ecx, dword [ebp - 0x45c]
jne 0x439cda
mov dword [ebp - 0x45c], 0
mov dword [esp], 0x16
lea esi, [ebp - 0x440]
call dword [sym.imp.USER32.dll_GetSysColor]
push edx
movzx edx, al
mov dword [ebp - 0x460], edx
movzx edx, ah
sar eax, 0x10
movzx eax, al
mov dword [ebp - 0x464], edx
mov dword [ebp - 0x468], eax
lea eax, [edi + esi]
mov dword [ebp - 0x470], eax
movzx eax, byte [esi + 0x2a]
mov bl, byte [esi + 0x29]
mov cl, byte [esi + 0x28]
test al, al
jne 0x439d5d
mov edx, ebx
or dl, cl
jne 0x439dc8
mov dword [esp], 8
jmp 0x439db6
cmp al, 0x40
jne 0x439d74
cmp bl, 0x40
jne 0x439dc8
cmp cl, 0x40
jne 0x439dc8
mov dword [esp], 0x15
jmp 0x439db6
cmp al, 0x80
jne 0x439d8b
cmp bl, 0x80
jne 0x439dc8
cmp cl, 0x80
jne 0x439dc8
mov dword [esp], 0x10
jmp 0x439db6
cmp al, 0xff
jne 0x439dc8
cmp bl, 0xc0
jne 0x439da7
cmp cl, 0xc0
jne 0x439dc8
mov byte [esi + 0x2a], 0
mov byte [esi + 0x29], 0
mov byte [esi + 0x28], 0
jmp 0x439e1c
mov edx, ebx
and edx, ecx
inc dl
jne 0x439dc8
mov dword [esp], 5
call dword [sym.imp.USER32.dll_GetSysColor]
push edi
mov byte [esi + 0x2a], al
mov byte [esi + 0x29], ah
sar eax, 0x10
jmp 0x439e19
imul eax, dword [ebp - 0x460]
mov edi, 0xc0
cdq
idiv edi
mov edi, 0xff
cmp eax, 0xff
cmovg eax, edi
mov byte [esi + 0x2a], al
movzx eax, bl
imul eax, dword [ebp - 0x464]
mov ebx, 0xc0
cdq
idiv ebx
cmp eax, 0xff
cmovg eax, edi
mov byte [esi + 0x29], al
movzx eax, cl
imul eax, dword [ebp - 0x468]
cdq
idiv ebx
cmp eax, 0xff
cmovg eax, edi
mov byte [esi + 0x28], al
add esi, 4
cmp esi, dword [ebp - 0x470]
jne 0x439d40
mov dword [esp], 0
call dword [sym.imp.USER32.dll_GetDC]
mov ebx, eax
push esi
test eax, eax
jne 0x439e58
mov dword [esp + 4], str.ERROR:_loadIconFromBitmap_could_not_get_ScreenDC
mov dword [esp], 0x5694e0
call fcn.004c8905
jmp 0x43a10d
lea eax, [ebp - 0x440]
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], eax
mov edi, dword [ebp - 0x46c]
mov dword [esp], ebx
mov dword [esp + 0xc], edi
mov dword [esp + 8], 4
mov dword [esp + 4], eax
call dword [sym.imp.GDI32.dll_CreateDIBitmap]
sub esp, 0x18
mov dword [ebp - 0x464], eax
mov dword [esp + 4], ebx
mov dword [esp], 0
call dword [sym.imp.USER32.dll_ReleaseDC]
push ebx
push ebx
cmp dword [ebp - 0x464], 0
jne 0x439ed1
mov dword [esp + 4], str.ERROR:_CreateDIBitmap_failed
mov dword [esp], 0x5694e0
call fcn.004c8905
mov dword [esp], eax
xor ebx, ebx
call fcn.004c8cf3
jmp 0x43a12f
movzx eax, word [ebp - 0x432]
mov esi, dword [ebp - 0x43c]
mov dword [ebp - 0x488], esp
mov dword [ebp - 0x474], eax
mov eax, dword [ebp - 0x438]
mov dword [ebp - 0x460], eax
lea eax, [esi + 7]
shr eax, 3
inc eax
and eax, 0xfffffffe
mov dword [ebp - 0x478], eax
mov eax, dword [ebp - 0x460]
imul eax, dword [ebp - 0x478]
add eax, 0xf
shr eax, 4
shl eax, 4
call fcn.004cb790
sub esp, eax
cmp dword [ebp - 0x474], 8
lea eax, [esp + 0x18]
mov dword [ebp - 0x484], eax
lea eax, [esi + 3]
je 0x439f41
lea eax, [esi + 1]
shr eax, 1
add eax, 3
and eax, 0xfffffffc
mov edx, dword [ebp - 0x484]
mov dword [ebp - 0x47c], 0
mov dword [ebp - 0x468], eax
mov eax, dword [ebp - 0x460]
lea ebx, [eax - 1]
imul ebx, dword [ebp - 0x468]
add ebx, dword [ebp - 0x46c]
mov dword [ebp - 0x470], ebx
mov edi, dword [ebp - 0x47c]
cmp dword [ebp - 0x460], edi
je 0x43a056
mov eax, dword [ebp - 0x478]
add eax, edx
mov dword [ebp - 0x46c], eax
xor eax, eax
cmp esi, eax
jbe 0x43a023
lea edi, [eax + 8]
mov byte [edx], 0
cmp esi, edi
mov ecx, edi
cmovbe ecx, esi
mov dword [ebp - 0x48c], ecx
lea ecx, [eax + 7]
mov dword [ebp - 0x490], ecx
mov ecx, dword [ebp - 0x490]
sub ecx, eax
mov dword [ebp - 0x480], ecx
cmp dword [ebp - 0x48c], eax
jbe 0x43a01b
cmp dword [ebp - 0x474], 4
jne 0x439ff7
mov ecx, dword [ebp - 0x470]
mov ebx, eax
shr ebx, 1
movzx ebx, byte [ecx + ebx]
test al, 1
je 0x439ff2
and ebx, 0xf
jmp 0x43a001
shr ebx, 4
jmp 0x43a001
mov ecx, dword [ebp - 0x470]
movzx ebx, byte [ecx + eax]
cmp dword [ebp - 0x45c], ebx
jne 0x43a018
mov cl, byte [ebp - 0x480]
mov ebx, 1
shl ebx, cl
or byte [edx], bl
inc eax
jmp 0x439fbc
inc edx
mov eax, edi
jmp 0x439f98
cmp dword [ebp - 0x46c], edx
je 0x43a039
mov ecx, dword [ebp - 0x46c]
xor eax, eax
mov edi, edx
sub ecx, edx
rep stosb byte es:[edi], al
mov edi, dword [ebp - 0x468]
inc dword [ebp - 0x47c]
sub dword [ebp - 0x470], edi
mov edx, dword [ebp - 0x46c]
jmp 0x439f76
mov eax, dword [ebp - 0x484]
mov dword [esp + 0xc], 1
mov dword [esp + 8], 1
mov dword [esp + 0x10], eax
mov eax, dword [ebp - 0x460]
mov dword [esp], esi
mov dword [esp + 4], eax
call dword [sym.imp.GDI32.dll_CreateBitmap]
sub esp, 0x14
mov esi, eax
mov esp, dword [ebp - 0x488]
test eax, eax
jne 0x43a09f
mov dword [esp + 4], str.ERROR:_CreateMaskBitmap_failed
jmp 0x439eb6
mov dword [ebp - 0x448], eax
mov eax, dword [ebp - 0x464]
mov dword [ebp - 0x454], 1
mov dword [ebp - 0x444], eax
lea eax, [ebp - 0x454]
mov dword [ebp - 0x450], 0
mov dword [ebp - 0x44c], 0
mov dword [esp], eax
call dword [sym.imp.USER32.dll_CreateIconIndirect]
mov ebx, eax
push ecx
test eax, eax
jne 0x43a117
mov dword [esp + 4], str.ERROR:_CreateIconIndirect_failed_error
mov dword [esp], 0x5694e0
call fcn.004c8905
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [esp], esi
mov dword [esp + 4], eax
call fcn.004c8952
mov dword [esp], eax
call fcn.004c8cf3
jmp 0x43a12f
mov eax, dword [ebp - 0x464]
mov edi, dword [sym.imp.GDI32.dll_DeleteObject]
mov dword [esp], eax
call edi
push eax
mov dword [esp], esi
call edi
push edx
lea esp, [ebp - 0xc]
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret