Function at 0x46486c
Capabilities:
Extract resource via kernel32 functions
Read file on windows

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffff98
push ebx
push esi
push edi
xor ecx, ecx
mov dword [ebp - 0x68], ecx
mov dword [ebp - 0x64], ecx
mov esi, edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x464f18
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 5], 0
push 0
mov eax, esi
call fcn.00404ef0
mov ebx, eax
push ebx
call sub.kernel32.dll_BeginUpdateResourceA
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 0
jbe 0x464efd
xor edx, edx
push ebp
push 0x464ef6
push dword fs:[edx]
mov dword fs:[edx], esp
mov dl, 1
mov eax, dword [0x417044]
call fcn.00403c74
mov dword [ebp - 0x30], eax
xor edx, edx
push ebp
push 0x464ece
push dword fs:[edx]
mov dword fs:[edx], esp
mov dl, 1
mov eax, dword [0x416c28]
call fcn.00403c74
mov dword [ebp - 0x34], eax
xor edx, edx
push ebp
push 0x464eb1
push dword fs:[edx]
mov dword fs:[edx], esp
push 2
push 0
push ebx
call sub.kernel32.dll_LoadLibraryExA_1
mov dword [ebp - 0x14], eax
cmp dword [ebp - 0x14], 0
je 0x464e9b
xor edx, edx
push ebp
push 0x464e94
push dword fs:[edx]
mov dword fs:[edx], esp
mov eax, dword [ebp - 0x30]
mov edx, dword [eax]
call dword [edx + 0x44]
mov eax, dword [ebp - 0x30]
push eax
push 0x463c7c
push 0xe
mov eax, dword [ebp - 0x14]
push eax
call sub.kernel32.dll_EnumResourceNamesA
mov eax, dword [ebp - 0x30]
mov edx, dword [eax]
call dword [edx + 0x14]
test eax, eax
jle 0x464b15
lea ecx, [ebp - 0x64]
xor edx, edx
mov eax, dword [ebp - 0x30]
mov ebx, dword [eax]
call dword [ebx + 0xc]
cmp dword [ebp - 0x64], 0
jne 0x46496d
xor edx, edx
mov eax, dword [ebp - 0x30]
mov ecx, dword [eax]
call dword [ecx + 0x18]
mov dword [ebp - 0x1c], eax
jmp 0x464985
lea ecx, [ebp - 0x68]
xor edx, edx
mov eax, dword [ebp - 0x30]
mov ebx, dword [eax]
call dword [ebx + 0xc]
mov eax, dword [ebp - 0x68]
call fcn.00404ef0
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x34]
mov edx, dword [eax]
call dword [edx + 8]
mov eax, dword [ebp - 0x34]
push eax
push 0x463c64
mov eax, dword [ebp - 0x1c]
push eax
push 0xe
mov eax, dword [ebp - 0x14]
push eax
call sub.kernel32.dll_EnumResourceLanguagesA
test eax, eax
jne 0x4649c2
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
jmp 0x464efd
mov eax, dword [ebp - 0x34]
mov eax, dword [eax + 8]
dec eax
test eax, eax
jl 0x464b1a
inc eax
mov dword [ebp - 0x3c], eax
xor edi, edi
mov edx, edi
mov eax, dword [ebp - 0x34]
call fcn.00418f90
mov word [ebp - 0x1e], ax
mov ax, word [ebp - 0x1e]
push eax
mov eax, dword [ebp - 0x1c]
push eax
push 0xe
mov eax, dword [ebp - 0x14]
push eax
call sub.kernel32.dll_FindResourceExA
test eax, eax
jne 0x464a16
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
jmp 0x464efd
push eax
mov eax, dword [ebp - 0x14]
push eax
call sub.kernel32.dll_LoadResource
mov ebx, eax
test ebx, ebx
jne 0x464a3f
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
jmp 0x464efd
push ebx
call sub.kernel32.dll_LockResource
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x2c], 0
jne 0x464a67
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
jmp 0x464efd
mov eax, dword [ebp - 0x2c]
movzx ebx, word [eax + 4]
dec ebx
test ebx, ebx
jl 0x464ad4
inc ebx
mov dword [ebp - 0xc], 0
mov eax, dword [ebp - 0xc]
mov edx, eax
shl eax, 3
sub eax, edx
mov edx, dword [ebp - 0x2c]
push esi
push edi
lea esi, [edx + eax*2 + 6]
lea edi, [ebp - 0x60]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
pop edi
pop esi
push 0
push 0
mov ax, word [ebp - 0x1e]
push eax
movzx eax, word [ebp - 0x54]
push eax
push 3
mov eax, dword [ebp - 0x18]
push eax
call sub.kernel32.dll_UpdateResourceA
test eax, eax
jne 0x464ace
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
jmp 0x464efd
inc dword [ebp - 0xc]
dec ebx
jne 0x464a7b
push 0
push 0
mov ax, word [ebp - 0x1e]
push eax
mov eax, dword [ebp - 0x1c]
push eax
push 0xe
mov eax, dword [ebp - 0x18]
push eax
call sub.kernel32.dll_UpdateResourceA
test eax, eax
jne 0x464b09
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
jmp 0x464efd
inc edi
dec dword [ebp - 0x3c]
jne 0x4649d7
jmp 0x464b1a
xor eax, eax
mov dword [ebp - 0x1c], eax
push 0
push 0x80
push 3
push 0
push 1
push 0x80000000
mov eax, dword [ebp - 4]
call fcn.00404ef0
push eax
call sub.kernel32.dll_CreateFileA_1
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
jbe 0x464e7d
xor edx, edx
push ebp
push 0x464e76
push dword fs:[edx]
mov dword fs:[edx], esp
push 0
lea eax, [ebp - 0x38]
push eax
push 0x16
lea eax, [ebp - 0x52]
push eax
mov eax, dword [ebp - 0x10]
push eax
call sub.kernel32.dll_ReadFile_1
test eax, eax
jne 0x464b8c
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
jmp 0x464efd
push 0
push 0
push 0
mov eax, dword [ebp - 0x10]
push eax
call sub.kernel32.dll_SetFilePointer_1
cmp eax, 0xffffffff
jne 0x464bbe
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
jmp 0x464efd
movzx eax, word [ebp - 0x4e]
shl eax, 4
add eax, 0x16
call fcn.00402a88
mov dword [ebp - 0x28], eax
xor edx, edx
push ebp
push 0x464e58
push dword fs:[edx]
mov dword fs:[edx], esp
movzx eax, word [ebp - 0x4e]
imul eax, eax, 0xe
add eax, 0x14
call fcn.00402a88
mov dword [ebp - 0x2c], eax
xor edx, edx
push ebp
push 0x464e3b
push dword fs:[edx]
mov dword fs:[edx], esp
push 0
lea eax, [ebp - 0x38]
push eax
movzx eax, word [ebp - 0x4e]
shl eax, 4
add eax, 0x16
push eax
mov eax, dword [ebp - 0x28]
push eax
mov eax, dword [ebp - 0x10]
push eax
call sub.kernel32.dll_ReadFile_1
test eax, eax
jne 0x464c48
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
jmp 0x464efd
mov eax, dword [ebp - 0x28]
mov ax, word [eax]
mov edx, dword [ebp - 0x2c]
mov word [edx], ax
mov eax, dword [ebp - 0x28]
mov ax, word [eax + 2]
mov edx, dword [ebp - 0x2c]
mov word [edx + 2], ax
mov eax, dword [ebp - 0x28]
mov ax, word [eax + 4]
mov edx, dword [ebp - 0x2c]
mov word [edx + 4], ax
mov eax, esi
call fcn.00463ba0
mov word [ebp - 0x1e], ax
movzx eax, word [ebp - 0x4e]
dec eax
test eax, eax
jl 0x464dec
inc eax
mov dword [ebp - 0x3c], eax
mov dword [ebp - 0xc], 0
mov eax, dword [ebp - 0xc]
mov edx, eax
shl eax, 3
sub eax, edx
mov edx, dword [ebp - 0x2c]
mov ebx, dword [ebp - 0xc]
add ebx, ebx
mov ecx, dword [ebp - 0x28]
mov esi, dword [ecx + ebx*8 + 6]
mov dword [edx + eax*2 + 6], esi
mov esi, dword [ecx + ebx*8 + 0xa]
mov dword [edx + eax*2 + 0xa], esi
mov esi, dword [ecx + ebx*8 + 0xe]
mov dword [edx + eax*2 + 0xe], esi
mov edx, dword [ebp - 0x2c]
mov cx, word [ebp - 0xc]
inc ecx
mov word [edx + eax*2 + 0x12], cx
mov eax, dword [ebp - 0x28]
mov esi, dword [eax + ebx*8 + 0xe]
mov eax, esi
call fcn.00402a88
mov dword [ebp - 0x24], eax
xor eax, eax
push ebp
push 0x464dd9
push dword fs:[eax]
mov dword fs:[eax], esp
push 0
push 0
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + ebx*8 + 0x12]
push eax
mov eax, dword [ebp - 0x10]
push eax
call sub.kernel32.dll_SetFilePointer_1
cmp eax, 0xffffffff
jne 0x464d33
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
jmp 0x464efd
push 0
lea eax, [ebp - 0x38]
push eax
push esi
mov eax, dword [ebp - 0x24]
push eax
mov eax, dword [ebp - 0x10]
push eax
call sub.kernel32.dll_ReadFile_1
test eax, eax
jne 0x464d78
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
jmp 0x464efd
push esi
mov eax, dword [ebp - 0x24]
push eax
mov ax, word [ebp - 0x1e]
push eax
mov eax, dword [ebp - 0xc]
inc eax
push eax
push 3
mov eax, dword [ebp - 0x18]
push eax
call sub.kernel32.dll_UpdateResourceA
test eax, eax
jne 0x464dc3
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
call fcn.004044f0
jmp 0x464efd
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x464de0
mov eax, dword [ebp - 0x24]
call fcn.00402ab8
ret
cmp dword [ebp - 0x1c], 0
jne 0x464df9
mov dword [ebp - 0x1c], 1
movzx eax, word [ebp - 0x4e]
imul eax, eax, 0xe
add eax, 0x14
push eax
mov eax, dword [ebp - 0x2c]
push eax
mov ax, word [ebp - 0x1e]
push eax
mov eax, dword [ebp - 0x1c]
push eax
push 0xe
mov eax, dword [ebp - 0x18]
push eax
call sub.kernel32.dll_UpdateResourceA
cmp eax, 1
sbb eax, eax
inc eax
mov byte [ebp - 5], al
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x464e42
mov eax, dword [ebp - 0x2c]
call fcn.00402ab8
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x464e9b
mov eax, dword [ebp - 0x14]
push eax
call sub.kernel32.dll_FreeLibrary_1
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x464eb8
mov eax, dword [ebp - 0x34]
call fcn.00403ca4
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x464f1f
lea eax, [ebp - 0x68]
mov edx, 2
call fcn.00404a54
ret