Function at 0x41c30c
Capabilities:
Extract resource via kernel32 functions

Disassembly:
push ebp
xor eax, eax
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x4c
mov dword [esp + 0x14], eax
lea eax, [ebp - 0x20]
mov dword [esp + 0x10], eax
mov dword [esp + 0xc], str.icon
mov dword [esp + 8], 0xe
mov dword [esp + 4], 0x78
mov eax, dword [0x5241b8]
mov dword [esp], eax
call fcn.0043c5a4
test eax, eax
je 0x41c354
cmp word [eax + 4], 0x40
mov ebx, eax
jbe 0x41c371
mov dword [esp + 8], 0x68
mov dword [esp + 4], str.icon.c
mov dword [esp], str.icondir___NULL__icondir__idCount___64
call dword [0x491228]
cmp dword [ebp + 8], 0
je 0x41c42c
mov eax, dword [ebp + 8]
cmp byte [eax], 0
jne 0x41c39e
mov dword [esp + 4], 2
mov dword [esp], 1
call sub.msvcrt.dll_calloc
mov esi, eax
jmp 0x41c42e
xor esi, esi
mov dword [esp + 0xc], 0xffffffff
xor edi, edi
mov dword [esp + 0x14], esi
mov dword [esp + 0x10], esi
mov eax, dword [ebp + 8]
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov eax, dword [sym.imp.KERNEL32.DLL_MultiByteToWideChar]
mov dword [esp], 0xfde9
mov dword [ebp - 0x2c], eax
call eax
sub esp, 0x18
mov edi, eax
cmp eax, 1
jle 0x41c42c
mov dword [esp + 4], 2
mov dword [esp], eax
call sub.msvcrt.dll_calloc
mov esi, eax
test eax, eax
je 0x41c42c
mov dword [esp + 0x14], edi
xor ecx, ecx
mov dword [esp + 0x10], eax
mov dword [ebp - 0x30], eax
mov dword [esp + 0xc], 0xffffffff
mov eax, dword [ebp + 8]
mov dword [esp + 4], ecx
mov dword [esp + 8], eax
mov dword [esp], 0xfde9
mov eax, dword [ebp - 0x2c]
call eax
mov edx, dword [ebp - 0x30]
sub esp, 0x18
cmp edi, eax
je 0x41c42e
mov dword [esp], edx
call sub.msvcrt.dll_free
xor esi, esi
xor edx, edx
xor eax, eax
mov dword [esp + 0x14], pe_nt_image_headers32
mov dword [esp + 0xc], edx
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], 2
mov dword [esp + 8], 1
mov dword [esp + 4], 0xc0000000
mov dword [esp], esi
call dword [sym.imp.KERNEL32.DLL_CreateFileW]
mov dword [ebp - 0x2c], eax
sub esp, 0x1c
call dword [sym.imp.KERNEL32.DLL_GetLastError]
mov edi, eax
test esi, esi
je 0x41c47d
mov dword [esp], esi
call sub.msvcrt.dll_free
mov dword [esp], edi
call dword [sym.imp.KERNEL32.DLL_SetLastError]
push eax
cmp dword [ebp - 0x2c], 0xffffffff
jne 0x41c4b0
call fcn.0043df77
mov dword [esp + 8], eax
mov eax, dword [ebp + 8]
mov dword [esp], str.Unable_to_create_icon__s:__s.
mov dword [esp + 4], eax
call fcn.0043d9e0
xor ebx, ebx
jmp 0x41c6b5
xor eax, eax
mov dword [esp + 0x10], 4
mov dword [esp + 0xc], eax
mov dword [esp + 8], 6
mov dword [esp + 4], ebx
mov eax, dword [ebp - 0x2c]
mov dword [esp], eax
call fcn.0043ebc0
test eax, eax
jne 0x41c4f0
call fcn.0043df77
mov dword [esp], str.Could_not_write_icon_header:__s.
mov dword [esp + 4], eax
call fcn.0043d9e0
jmp 0x41c4a9
movzx eax, word [ebx + 4]
xor esi, esi
shl eax, 4
add eax, 6
mov dword [ebp - 0x1c], eax
cmp si, word [ebx + 4]
jae 0x41c5e2
movzx edi, si
xor eax, eax
mov dword [esp + 0x10], 4
imul edx, edi, 0xe
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0xc
lea eax, [ebx + edx + 6]
mov dword [ebp - 0x30], edx
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x2c]
mov dword [esp], eax
call fcn.0043ebc0
mov edx, dword [ebp - 0x30]
test eax, eax
jne 0x41c55b
call fcn.0043df77
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov dword [esp], str.Could_not_write_ICONDIRENTRY__d_:__s.
jmp 0x41c4a4
mov dword [esp + 8], 3
movzx eax, word [ebx + edx + 0x12]
mov dword [esp + 4], eax
mov eax, dword [0x5241b8]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.DLL_FindResourceA]
mov dword [ebp - 0x30], eax
sub esp, 0xc
xor eax, eax
mov dword [esp + 0xc], eax
lea eax, [ebp - 0x1c]
mov dword [esp + 0x10], 4
mov dword [esp + 8], 4
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x2c]
mov dword [esp], eax
call fcn.0043ebc0
mov edx, dword [ebp - 0x30]
test eax, eax
jne 0x41c5c8
call fcn.0043df77
mov dword [esp + 4], edi
mov dword [esp + 8], eax
mov dword [esp], str.Could_not_write_ICONDIRENTRY__d__offset:__s.
jmp 0x41c4a4
xor ecx, ecx
mov dword [esp + 4], edx
inc esi
mov dword [esp], ecx
call dword [sym.imp.KERNEL32.DLL_SizeofResource]
push edi
push edi
add eax, dword [ebp - 0x1c]
jmp 0x41c4fc
xor esi, esi
cmp si, word [ebx + 4]
jae 0x41c697
movzx eax, si
mov dword [ebp - 0x30], eax
imul eax, eax, 0xe
mov dword [esp + 8], 3
movzx eax, word [ebx + eax + 0x12]
mov dword [esp + 4], eax
mov eax, dword [0x5241b8]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.DLL_FindResourceA]
xor edx, edx
sub esp, 0xc
mov edi, eax
mov dword [esp], edx
mov dword [esp + 4], eax
call dword [sym.imp.KERNEL32.DLL_LoadResource]
push ecx
push ecx
mov dword [esp], eax
call dword [sym.imp.KERNEL32.DLL_LockResource]
xor ecx, ecx
push edx
mov dword [ebp - 0x34], eax
mov dword [esp + 4], edi
mov dword [esp], ecx
call dword [sym.imp.KERNEL32.DLL_SizeofResource]
xor edx, edx
push edi
push edi
mov dword [ebp - 0x20], eax
mov dword [esp + 0x10], 4
mov dword [esp + 0xc], edx
mov dword [esp + 8], eax
mov edx, dword [ebp - 0x34]
mov dword [esp + 4], edx
mov eax, dword [ebp - 0x2c]
mov dword [esp], eax
call fcn.0043ebc0
test eax, eax
jne 0x41c691
call fcn.0043df77
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x30]
mov dword [esp], str.Could_not_write_icon_data__d:__s.
mov dword [esp + 4], eax
jmp 0x41c4a4
inc esi
jmp 0x41c5e4
cmp dword [ebp + 0xc], 0
jne 0x41c6b0
mov eax, dword [ebp + 8]
mov dword [esp], str.Created:__s
mov dword [esp + 4], eax
call fcn.0043d9e0
mov ebx, 1
mov eax, dword [ebp - 0x2c]
dec eax
cmp eax, 0xfffffffd
ja 0x41c6cb
mov eax, dword [ebp - 0x2c]
mov dword [esp], eax
call dword [sym.imp.KERNEL32.DLL_CloseHandle]
push eax
lea esp, [ebp - 0xc]
mov eax, ebx
pop ebx
pop esi
pop edi
pop ebp
ret